view src/ui/mfw/mfw_cb.c @ 303:f76436d19a7a default tip

!GPRS config: fix long-standing AT+COPS chance hanging bug There has been a long-standing bug in FreeCalypso going back years: sometimes in the AT command bring-up sequence of an ACI-only MS, the AT+COPS command would produce only a power scan followed by cessation of protocol stack activity (only L1 ADC traces), instead of the expected network search sequence. This behaviour was seen in different FC firmware versions going back to Citrine, and seemed to follow some law of chance, not reliably repeatable. This bug has been tracked down and found to be specific to !GPRS configuration, stemming from our TCS2/TCS3 hybrid and reconstruction of !GPRS support that was bitrotten in TCS3.2/LoCosto version. ACI module psa_mms.c, needed only for !GPRS, was missing in the TCS3 version and had to be pulled from TCS2 - but as it turns out, there is a new field in the MMR_REG_REQ primitive that needs to be set correctly, and that psa_mms.c module is the place where this initialization needed to be added.
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 08 Jun 2023 08:23:37 +0000
parents 92abb46dc1ba
children
line wrap: on
line source

/*
+--------------------------------------------------------------------+
| PROJECT: GSM-MFW (8417)               $Workfile:: Mfw_cb.c        $|
| $Author:: Ak                          $Revision::  1              $|
| CREATED: 13.10.98                     $Modtime:: 10.04.00 15:01   $|
| CREATED: 13.10.98                     $Modtime:: 20.01.00 14:29   $|
| STATE  : code                                                      |
+--------------------------------------------------------------------+

   MODULE  : MFW_CB

   PURPOSE : This modul contains the functions for call back.


   $History:: Mfw_cb.c                                              $
       Aug 07, 2007 DR:OMAPS00137726 x0066814(Geetha)
       Description:HPLMN Manual Selection at power on -unable to perform manual selection at power ON
       Solution: In rAT_PlusCME, under case AT_CMD_NRG, added the code to list PLMN if Manual is the
                    network regieteration mode during bootup.

       May 31, 2007 DR: OMAPS00133201 x0pleela
       Description: MS keeps searching networks and doesn't list available PLMNs after
       			performing manual selection
	Solution : In function rAT_PlusCME(), for commands AT_CMD_COPS and
			AT_CMD_NRG, passing the error code as parameter to function
			nm_error_cops()

	June 05, 2007 DR:OMAPS00133241 x0061560(sateeshg)
       Description:ASTEC29607,SIM:The sim card should not return 9240 still.
       Solution     :Error indication from Aci E_PHB_ERROR sent to mmi.


   	May 10 2007 DR:OMAPS00127983 x066814
	Description: PSTN caller name not displayed on MS
	Solution: Added the following functions:
		1. set_cnap_name()
		2. get_cnap_name()
		3. send_cnap_name_information_mmi()
	Using these functions, added the code for rAT_PercentCNAP.

	Oct 05, 2006    ER: OMAPS00094496 x0061088(Prachi)
 	Description:Enhance RSSI to 3 parameters: Strength, quality, min-access-level
 	Solution:To solve the ER OMAPS0094496, rAT_PercentCSQ() is now receving four
 	parameters i.e. RSSI,Bit Error rate, Actual level, Minimum access level and also
 	rAT_PercentCSQ() is checking if actual level is less than minimum level and then
 	calls globalSignalUpdate() to show the signal strength.


	Aug 01, 2006   DR: OMAPS00082374 x0pleela
	Description: EONS Failures - unexpected output from the MMI: 2 carriers; on the top always T-Mobile
   	Solution: a) Added  the functionality which was removed before for rat_%CSTAT

	Jun 23, 2006    DR: OMAPS00082374 x0pleela
   	Description: EONS Failures - unexpected output from the MMI: 2 carriers; on the top always T-Mobile
   	Solution: a) Removed the usage of global variable gEons_alloc_active
			b) Removed the call to function set_opn_sel_done(TRUE); in func rat_%CNIV
			c) Removed the functionality added before for rat_%CSTAT

	July  17, 2006  DR: OMAPS00082792  x0039928
	Description:Changes to be done in MMI for Move all entries from SIM to FFS (Defect 76492)
	Solution: Ready signal is sent to MMI when rAT_Ok is called by ACI for CPBW command

    June 02, 2006    DR: OMAPS00078005 x0021334
    Descripton: Test for NITZ (Network Identity and Timezone) support - No New time was displayed
    Solution: New Time/Date received from network is sent to MFW by lower layer by invoking 'rAT_PercentCTZV'
    function. This function has now been implemented to pass on the received values to MMI
    for user confirmation and RTC updation.

	May 18, 2006    DR: OMAPS00070657 x0pleela
   	Description: CPHS feature on Locosto-Lite
   	Solution: 	Function "sendCPWIEvt" is called in rAT_PercentCPVWI to handle voice mail indication

	xrashmic 1 Jul, 2006 OMAPS00075784
       Changed U8 to T_ACI_CME_ERR in rAT_PlusCME

    June 15, 2006 OMAPS00079492 x0043642
    Description : FT TMO (wk20/06) TC 9.1, 9.2 Multi Party, MS fails to return to idle mode
    Solution    : call set_cmdHold() to assign MFW_CM_DISCONNECT_ALL to variable cmd_hold
                      when ATH command is entered.

	May 15, 2006    DVT: OMAPS00077751 x0043642
    Description: MFW needs to implement rAT_PercentSATT needed for SAT class E
    Solution:  Define a function  rAT_PercentSATT()
	May 15, 2006 DR: OMAPS00067919 x0pleela
	Description: SIMP:On repeat Depersonalisation with invalid password MEPD unblock key should
				be asked not Puk1.
	Solution:Made the following changes
		       1. Added functionality for rAT_PlusCPIN
			2. Made code changss in rat_plusCME for SIMP

     May 10, 2006    REF: DRT OMAPS00075829  xdeepadh
    Description: Submission of ACI and SAP changes for Imaging ERs
    Solution: Using the mechanism where MFW can receive primitives without
    ACI to know about it.


    Apr 24, 2006    ERT: OMAPS00067603 x0043642
    Description: Engineering mode
    Solution:  Handle the response from ACI (through rAT_percentEINFO).


	Mar 15, 2006   ER: OMAPS00067709  x0pleela
	Description: Voice Buffering implementation on C+ for PTT via PCM API
	Solution: Functions  rAT_NO_CARRIER, rAT_NO_ANSWER
			Changes: update the reason for calling record_stop

 *   Mar 23, 2006    REF:DR OMAPS00069173  a0393213
 *   Description:   GSM - MOC - AT USB - Live Network . Display problem when a MO call is made through AT interface
 *   Solution: misplaced break statement corrected


	Feb 15, 2006    ER: OMAPS00065203 x0pleela
   	Description: Cingular Operator Name Prioritization implementation required
   	Solution: Incorporated review comments
   			- Removed global variable gOper_sel_done added earlier

	Feb 09, 2006    ER: OMAPS00065203 x0pleela
   	Description: Cingular Operator Name Prioritization implementation required
   	Solution: Implemented functionality for rAT_PercentCNIV
		   	Implemented functionality for rAT_PercentCSTAT


 *
 *	Nov 02, 2005    DR OMAPS00052132   xdeepadh
 *	Bug:Not able to access the SMS inbox and also not able to send SMS in Locosto Lite build
 *	Fix: The ATI Enums usage has been put under the FF_ATI flag

	Nov 03, 2005 DR: OMAPS00052032 - xpradipg
	Description : Locosto: SIMP - integration of issues submitted by solDel on
			     ME Personalization - changes as per the new interfaces
	Solution	:   The return value of sAT_PlusCLCK of AT_EXCT is handled and
			    a please wait screen is displayed until the response is recieved

 *
 * June 01, 2005  REF: CRR 31559  x0021334
 * Description: TCS2.1.1 SW not buildable without engineering mode
 * Solution: Engineering Mode specific functions are guarded by 'FF_EM_MODE' flag
 *
 * x0018858 24 Mar, 2005 MMI-FIX-11321
 * Issue Description :- If the inbox is full and a new message is receivd, no indication is received.
 * Fix: Added support for handling indication when message box is full and
 * there is a pending message.

 * x0047685, May 22 2006
 * Added R99 CC Interface changes.
 * rAT_PercentCMGRS moved under REL99 flag.
 *
 * *****************  Version 51  *****************
 * User: Vo           Date: 20.01.00   Time: 14:30
 * Updated in $/GSM/Condat/MS/SRC/MFW
 *
 * *****************  Version 50  *****************
 * User: Vo           Date: 20.01.00   Time: 12:24
 * Updated in $/GSM/Condat/MS/SRC/MFW
 *
 * *****************  Version 49  *****************
 * User: Vo           Date: 14.01.00   Time: 20:02
 * Updated in $/GSM/Condat/MS/SRC/MFW
 * New: Save the setting for SMS parameter and cell broadcast
 * parameter
 *
 * *****************  Version 48  *****************
 * User: Vo           Date: 10.01.00   Time: 16:15
 * Updated in $/GSM/Condat/MS/SRC/MFW
 *
 * *****************  Version 47  *****************
 * User: Ak           Date: 5.01.00    Time: 13:27
 * Updated in $/GSM/Condat/MS/SRC/MFW
 *
 * *****************  Version 46  *****************
 * User: Vo           Date: 22.12.99   Time: 15:47
 * Updated in $/GSM/Condat/MS/SRC/MFW
 * add "call id" for disconnect
 *
 * *****************  Version 45  *****************
 * User: Sab          Date: 2.12.99    Time: 9:25
 * Updated in $/GSM/Condat/MS/SRC/MFW
 * Why: Improvement.
 * What: Implementation of phonebook ready indication.
 *
 * *****************  Version 44  *****************
 * User: Vo           Date: 11.11.99   Time: 14:31
 * Updated in $/GSM/Condat/MS/SRC/MFW
 * New: DTMF
 *
 * *****************  Version 43  *****************
 * User: Vo           Date: 21.10.99   Time: 13:05
 * Updated in $/GSM/Condat/MS/SRC/MFW
 * new implemention for command CPOL
 *
 * *****************  Version 42  *****************
 * User: Vo           Date: 10.09.99   Time: 19:14
 * Updated in $/GSM/DEV/MS/SRC/MFW
 * Add CNUM and USSD
 *
 * *****************  Version 41  *****************
 * User: Vo           Date: 30.08.99   Time: 13:25
 * Updated in $/GSM/DEV/MS/SRC/MFW
 * AoC
 * PIN unblock
 * call held
 *
 * *****************  Version 39  *****************
 * User: Vo           Date: 16.07.99   Time: 13:50
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 38  *****************
 * User: Es           Date: 6.07.99    Time: 12:02
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 37  *****************
 * User: Vo           Date: 2.07.99    Time: 19:02
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 36  *****************
 * User: Vo           Date: 2.07.99    Time: 15:25
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 35  *****************
 * User: Vo           Date: 22.06.99   Time: 12:53
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 34  *****************
 * User: Vo           Date: 21.06.99   Time: 20:59
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 32  *****************
 * User: Vo           Date: 14.06.99   Time: 13:56
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 31  *****************
 * User: Vo           Date: 14.06.99   Time: 10:06
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 30  *****************
 * User: Vo           Date: 1.06.99    Time: 14:46
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 29  *****************
 * User: Vo           Date: 20.05.99   Time: 17:26
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 28  *****************
 * User: Vo           Date: 28.04.99   Time: 16:11
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 26  *****************
 * User: Vo           Date: 31.03.99   Time: 14:09
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 24  *****************
 * User: Vo           Date: 15.03.99   Time: 13:40
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 23  *****************
 * User: Vo           Date: 11.03.99   Time: 18:32
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 22  *****************
 * User: Es           Date: 20.02.99   Time: 11:55
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 21  *****************
 * User: Vo           Date: 17.02.99   Time: 19:03
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 20  *****************
 * User: Vo           Date: 12.02.99   Time: 18:59
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 19  *****************
 * User: Vo           Date: 9.02.99    Time: 14:54
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 18  *****************
 * User: Vo           Date: 13.01.99   Time: 11:01
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 17  *****************
 * User: Vo           Date: 8.01.99    Time: 14:31
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 16  *****************
 * User: Es           Date: 17.12.98   Time: 17:25
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 15  *****************
 * User: Es           Date: 9.12.98    Time: 15:12
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 14  *****************
 * User: Es           Date: 9.12.98    Time: 14:19
 * Updated in $/GSM/DEV/MS/SRC/MFW
 * added some needed 'rAT_' functions (as dummies)
 *
 * *****************  Version 13  *****************
 * User: Es           Date: 8.12.98    Time: 16:53
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 11  *****************
 * User: Vo           Date: 27.11.98   Time: 13:19
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 10  *****************
 * User: Vo           Date: 24.11.98   Time: 21:40
 * Updated in $/GSM/DEV/MS/SRC/MFW
 * first successful compilation of MFW
 *
 * *****************  Version 9  *****************
 * User: Vo           Date: 13.11.98   Time: 16:21
 * Updated in $/GSM/DEV/MS/SRC/MFW
 *
 * *****************  Version 8  *****************
 * User: Vo           Date: 12.11.98   Time: 13:46
 * Updated in $/GSM/DEV/MS/SRC/MFW
|
| *****************  Version 7  *****************
| User: Le           Date: 11.11.98   Time: 14:47
| Updated in $/GSM/DEV/MS/SRC/MFW
|
| *****************  Version 6  *****************
| User: Le           Date: 11.11.98   Time: 13:35
| Updated in $/GSM/DEV/MS/SRC/MFW
|
| *****************  Version 5  *****************
| User: Le           Date: 10.11.98   Time: 16:07
| Updated in $/GSM/DEV/MS/SRC/MFW
|
| *****************  Version 4  *****************
| User: Le           Date: 10.11.98   Time: 11:08
| Updated in $/GSM/DEV/MS/SRC/MFW
|
| *****************  Version 3  *****************
| User: Le           Date: 27.10.98   Time: 15:59
| Updated in $/GSM/DEV/MS/SRC/MFW
|
| *****************  Version 2  *****************
| User: Le           Date: 21.10.98   Time: 16:20
| Updated in $/GSM/DEV/MS/SRC/MFW
|
| *****************  Version 1  *****************
| User: Le           Date: 21.10.98   Time: 10:33
| Created in $/GSM/DEV/MS/SRC/MFW
*/

#define ENTITY_MFW

#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

#if 0	/* FreeCalypso */
#include"rfs/rfs_api.h"
#endif

#include "mfw_mfw.h"
#include "mfw_nm.h"
#include "mfw_sim.h"
#include "mfw_simi.h"
#include "mfw_sima.h"
#include "mfw_nmi.h"
#include "mfw_phb.h"
#include "mfw_phbi.h"
#include "mfw_cm.h"
#include "mfw_cmi.h"
#include "mfw_sms.h"
#include "mfw_smsi.h"
#ifdef FF_CPHS_REL4
#include "mfw_cphs.h"
#endif

// June 02, 2006    DR: OMAPS00078005 x0021334
#ifdef FF_TIMEZONE
#include "mfw_td.h"
#endif

#include "drv_key.h"


#include "ksd.h"
#include "psa.h"

#if defined (FAX_AND_DATA)
#include "aci_fd.h"
#endif

#include "cmh.h"
#include "phb.h"
#include "cmh_phb.h"
#include "psa_sim.h"

#include "mfw_ss.h"
#include "mfw_ssi.h"

// ADDED BY RAVI - 7-10-2005
#if (defined(FF_2TO1_PS) || (BOARD == 61))
#define GPRS TI_GPRS
#endif
// END ADDITION BY RAVI - 7-10-2005

#include "aci_all.h"
#include "aci_cmh.h"  /* include types declared in ACI              */
#include "ati_cmd.h"
#include "aci_cmd.h"
#include "aci.h"
#include "dti_conn_mng.h"
#include "dti_cntrl_mng.h"

#ifdef GPRS /* kgt 12-05-2001 */

#include "gaci.h" /* include types declared in GACI  */
/*#include "gaci_cmh.h"  include types declared in GACI             */
#include "mfw_gprs.h"
#endif  /* GPRS */

#include "Mfw_band.h" /* SPR919 - SH */

#ifdef FF_CPHS
#include "cphs.h"
#endif /* ff_cphs */

//x0pleela  20 Mar, 2006  ER:OMAPS00067709
#ifdef FF_PCM_VM_VB
#include "mfw_aud.h"
#endif


#ifdef NEPTUNE_BOARD /*EngMode */
#include "mfw_em.h"

UBYTE RssiVal;
#endif





#if defined(FF_MMI_CAMERA_APP) ||defined(FF_MMI_FILEMANAGER)
#include "msl/inc/msl_api.h"
#include "mfw_fm.h"
#endif

#include "aci.h"
//May 10, 2006    REF: DRT OMAPS00075829  xdeepadh
#include "mfw_cb.h"


LOCAL void mfw_format_plmn_name(UBYTE dcs,UBYTE *in, UBYTE in_length,
                                UBYTE *out, UBYTE max_out_length);


/*May 10,2007 DR:OMAP00127983 x0066814(Geetha)-begin*/
/*size of the name when converted from 7bit to 8bit alphabet*/
#define CNAP_EXPANDED_SIZE (((sizeof(BUF_nameString)+1)*8)/7)
//function to get the name from rAT_PercentCNAP
void set_cnap_name(T_namePresentationAllowed *cnap_name_info );
//function to give the name from set_cnap_name to MMI
GLOBAL T_MFW_PHB_TEXT *get_cnap_name();
GLOBAL T_MFW_PHB_TEXT cnap_name;

typedef enum
{
  CNAP_PRES_ALLOWED = 0,
  CNAP_PRES_RESTRICTED,
  CNAP_NAME_UNAVAILABLE,
  CNAP_NAME_PRES_RESTRICTED
} T_ATI_CNAP_PRESENTATION;//possible presentation modes for CNAP

GLOBAL BOOL CALL_NAME_NETWORK = FALSE;//implies that name is not sent via network(rAT_%CNAP)
//Function to process the data sent from rAT_PercentCNAP based on presentation mode for CNAP
LOCAL void send_cnap_name_information_mmi(T_ATI_CNAP_PRESENTATION pres_mode,
                                      T_callingName *NameId);
/*May 10,2007 DR:OMAP00127983 x0066814(Geetha)-end*/
/********* currently not used ***************************************/
extern void sate_error(T_ACI_CME_ERR error);  // ADDED BY RAVI - 29-11-2005
GLOBAL void rAT_PlusCSMS (T_ACI_CSMS_SERV service,
                          T_ACI_CSMS_SUPP mt,
                          T_ACI_CSMS_SUPP mo,
                          T_ACI_CSMS_SUPP bm) {}

//x0pleela 21 Apr, 2006  DR: OMAPS00067919
//Requesting for any of the SIMP category pin if enabled based on the "code"
GLOBAL void rAT_PlusCPIN (T_ACI_CPIN_RSLT code)
{
#ifdef SIM_PERS
	TRACE_FUNCTION("rAT_PlusCPIN()");
  sim_simlock_cpin_code(code );
#endif
}

GLOBAL void rAT_PlusCLCK  ( T_ACI_CLSSTAT * clsStaLst) {}
GLOBAL void rAT_PlusCIMI  (CHAR *imsi) {}
GLOBAL void rAT_PlusCCFC  (T_ACI_CCFC_SET* setting) {}
GLOBAL void rAT_PlusCLIR  (T_ACI_CLIR_MOD  mode, T_ACI_CLIR_STAT stat) {}
GLOBAL void rAT_PercentCOLR ( T_ACI_COLR_STAT stat) {}
GLOBAL void rAT_PlusCRSM  ( SHORT           sw1,
                            SHORT           sw2,
                            SHORT           rspLen,
                            UBYTE          *rsp    ) {}
GLOBAL void rAT_PlusCSIM  ( SHORT           rspLen,
                            UBYTE          *rsp    ) {}

GLOBAL void rAT_PlusCNUM  (T_ACI_CNUM_MSISDN *msisdn, UBYTE num)
{
#ifdef FF_CPHS_REL4
	static UBYTE     count = 0;
	UBYTE	i;

	TRACE_FUNCTION("rAT_PlusCNUM");
	for(i = 0; i < 2; i++)
	{
		count = count + check_msp_rec(&msisdn[i],count);
	}
	if (count == 2)
		qAT_PlusCNUM(CMD_SRC_LCL, 1);
	else
		send_msp_signal(count);
#endif
}

GLOBAL void rAT_PlusCCWV ( T_ACI_CCWV_CHRG charge ) {}

GLOBAL void rAT_PercentALS(T_ACI_ALS_MOD ALSmode) {}  /* has to be implemented in MFW */


/* May 15, 2006    REF:ER OMAPS00077751  */

#ifdef NEPTUNE_BOARD
EXTERN void set_cmdHold(int command);
EXTERN int globalSignalUpdate(U8 value);
EXTERN void sendCPWIEvt(UBYTE flag_set, USHORT line);
EXTERN void             cmhMM_CnvrtPLMN2INT( const T_PS_plmn_id *plmn,
                                                   USHORT * mccBuf,
                                                   USHORT * mncBuf );
#endif  /* NEPTUNE_BOARD */
/* End - remove warning Aug -11 */
/* May 15, 2006    REF:ER OMAPS00077751  */

#ifdef NEPTUNE_BOARD
/*******************************************************************************

 $Function:    rAT_PercentSATT

 $Description:CallBack function, needed for target builds with SAT class E enabled

 $Returns: void

 $Arguments: T_ACI_CMD_SRC  srcId
                    T_ACI_SATT_CS  cause

*******************************************************************************/

GLOBAL void rAT_PercentSATT( T_ACI_CMD_SRC  srcId, T_ACI_SATT_CS  cause )
{
    TRACE_FUNCTION("rAT_PercentSATT");
}
#endif

// ADDED BY RAVI - ACI CHANGES - 6-10-2005
#if (BOARD == 61)
GLOBAL void rAT_PlusCKEV( T_ACI_CKEV_VALUES      sCkevValues,
                          T_ACI_CMER_MODE_TYPE   mode) {}
GLOBAL void rAT_PercentCPKY(CHAR *keys, SHORT time, SHORT pause) {}
#endif
// END OF ADDITION - 6-10-2005

/*to be removed
#ifndef FF_2TO1_PS
GLOBAL void rAT_PercentRDL(T_ACI_CC_REDIAL_STATE state) {}
GLOBAL void rAT_PercentRDLB(T_ACI_CC_RDL_BLACKL_STATE state)  {}
GLOBAL void rAT_PercentCSTAT(T_ACI_STATE_MSG msgType) {}
GLOBAL void rAT_PercentCPRSM (T_ACI_CPRSM_MOD mode) {}
#else
#endif  */


/* SPR#1985 - SH - This is now implemented in mfw_cm.c */
/*GLOBAL void rAT_PercentCTYI (T_ACI_CTTY_NEG neg,
                             T_ACI_CTTY_TRX trx) {}*/

/********* current define *******************************************/
#ifdef SIM_TOOLKIT
extern char mfwSatMoAccepted;
#endif

#ifdef SIM_PERS
EXTERN T_MFW_SIMP_CLCK_FLAG sim_unlock_in_prog;
#endif

//x0018858 24 Mar, 2005 MMI-FIX-11321
//Added a global variable and a function to retreive any pending message.
//begin - x0018858 24 Mar, 2005 MMI-FIX-11321
UBYTE isMessageWaiting = FALSE;

/*
+--------------------------------------------------------------------+
| PROJECT: GSM-MFW (8417)               MODULE:  MFW_CB              |
| STATE  : code                         ROUTINE: sms_check_message_pending
+--------------------------------------------------------------------+
   PURPOSE :   To retreive the status from server wrt to any pending message.
*/
UBYTE sms_check_message_pending(void)
{
	TRACE_EVENT_P1(" the message status is -- %d", isMessageWaiting);
	return isMessageWaiting;
}

///end - x0018858 24 Mar, 2005 MMI-FIX-11321

/*
+--------------------------------------------------------------------+
| PROJECT: GSM-MFW (8417)               MODULE:  MFW_CB              |
| STATE  : code                         ROUTINE: rAT_OK              |
+--------------------------------------------------------------------+


   PURPOSE :   OK indication from ACI

*/

GLOBAL void rAT_OK ( T_ACI_AT_CMD cmdId )
{

  TRACE_EVENT_P1("rAT_OK %d",cmdId);
  switch ((int)cmdId)
  {
    case AT_CMD_CFUN:
      sim_ok_cfun ();
      break;

    case AT_CMD_CPBW:
// July  17, 2006  DR: OMAPS00082792  x0039928
		phb_signal(E_PHB_READY, 0);
	break;

    case AT_CMD_COPS:
      nm_ok_cops ();
      break;

    case AT_CMD_NRG:
      nm_ok_cops ();
      break;

    case AT_CMD_PVRF:
      sim_ok_cpin ();
      break;

    case AT_CMD_CPIN:
      sim_ok_cpin ();
      break;

    case AT_CMD_A:
      cm_ok_connect();
      break;

    case AT_CMD_CMGD:
/* JVJ SPR1119 apparently not needed since the rAT_PlusCMGD() already handles it */
TRACE_EVENT("ACI has deleted SMS!!");
       sms_ok_delete ();
/*Issue 1432: 01/10/2002: Needed as called by ACI instead of rAT_PlusCMGD if concatenated SMS */
      break;

    case AT_CMD_CMGR:
      sms_ok_change ();
      break;

    case AT_CMD_CHUP:
      cm_ok_disconnect(CMD_SRC_LCL, 0);
      break;

    case AT_CMD_H:
      cm_ok_disconnect(CMD_SRC_LCL, 0);
      break;

    case AT_CMD_ABRT:
      cm_ok_disconnect(CMD_SRC_LCL, 0);
      break;

    case AT_CMD_D:
      cm_ok_connect();
      break;

    case AT_CMD_CPWD:
      sim_ok_cpinc();
      break;

    case AT_CMD_CHLD:
      cm_result_cmd(CMD_SRC_LCL, Present);
      break;

    case AT_CMD_CLCK:
#ifdef SIM_PERS
//	Nov 03, 2005 DR: OMAPS00052032 - xpradipg
//	if the flag is set then SIM Personalization has triggered the CLCK
	if( (sim_unlock_in_prog EQ SIMP_BOOTUP) OR
		(sim_unlock_in_prog EQ SIMP_MENU ) )
	{
		mfw_simlock_continue(TRUE);
		sim_unlock_in_prog = SIMP_NONE;
	}
	else
#endif
      ss_ok_clck();
      break;

    case AT_CMD_CCFC:
      break;

    case AT_CMD_CCWA:
      break;

    case KSD_CMD_CB:
    case KSD_CMD_CF:
    case KSD_CMD_CL:
    case KSD_CMD_CW:
    case KSD_CMD_PWD:
    case KSD_CMD_UBLK:
      ss_ok_string(cmdId);
      break;

    case AT_CMD_CPUC:
    case AT_CMD_CAMM:
    case AT_CMD_CACM:
      cm_ok_aoc(cmdId);
      break;

    case AT_CMD_CUSD:
    case KSD_CMD_USSD:
      ss_ok_ussd(cmdId);
      break;
    case AT_CMD_CMGL:
        sms_ok_CMGL();
       break;
    case AT_CMD_CPMS:
    case AT_CMD_CMGW:
    case AT_CMD_CMSS:
    case AT_CMD_CMGS:
      break;

    case AT_CMD_CPOL:
      nm_ok_pref_plmn();
      break;

    case AT_CMD_VTS:
      cm_ok_dtmf();
      break;

    case AT_CMD_CSAS:
      sms_ok_csas();
      break;

#ifdef GPRS /* KGT 12-05-2001 */
  case AT_CMD_CGATT:
  case AT_CMD_CGDCONT:
  case AT_CMD_CGACT:
  case AT_CMD_CGQREQ:
  case AT_CMD_CGQMIN:
  case AT_CMD_CGDATA:
  case AT_CMD_CGPADDR:
  case AT_CMD_CGAUTO:
  case AT_CMD_CGANS:
  case AT_CMD_CGCLASS:
  case AT_CMD_CGEREP:
  case AT_CMD_CGREG:
  case AT_CMD_CGSMS:
      gprs_ok(cmdId);
      break;
#endif /* GPRS */

  /* SPR919 - SH*/
  case AT_CMD_BAND:
  	nm_ok_band();
  	break;
  /*MC, SPR 1392, call deflection successful*/
  case AT_CMD_CTFR:
  	cm_ok_CTFR();

  /* Marcus: CCBS: 14/11/2002: Start */
  case AT_CMD_CCBS:
    TRACE_EVENT("AT_CMD_CCBS");
    cm_ccbs_ok();
    break;
  /* Marcus: CCBS: 14/11/2002: Start */
  /*a0393213 cphs rel4*/
  #ifdef FF_CPHS_REL4
  case AT_CMD_P_CFIS:
  	{
		T_MFW_SIMOP_STATUS result=MFW_SIMOP_WRITE_OK;
	  	sendCPHSSignal(E_CPHS_SET_DV_STAT,&result);
  	}
  #endif
    default:
      break;
  }
}


/*
+--------------------------------------------------------------------+
| PROJECT: GSM-MFW (8417)               MODULE:  MFW_CB              |
| STATE  : code                         ROUTINE: rAT_PlusCME         |
+--------------------------------------------------------------------+


   PURPOSE :   Error indication from ACI

*/

GLOBAL void rAT_PlusCME   ( T_ACI_AT_CMD cmdId, T_ACI_CME_ERR err )
{
  TRACE_EVENT_P2("rAT_PlusCME(cmdId %d, err %d)",cmdId, err);

  switch ((int)cmdId) /*a0393213 lint warnings removal - typecasting done*/
  {
//x0061560 Date May16,07 (sateeshg) OMAPS00133241
  case AT_CMD_CPBW:
   	phb_signal(E_PHB_ERROR, 0);
   	break;
  case AT_CMD_COPS:
  	//x0pleela 30 May, 2007  DR: OMAPS00133201
  	//Passing the error code
    nm_error_cops ((T_ACI_CME_ERR)err);
    break;

  case AT_CMD_NRG:
  	/*Aug 07, 2007 DR:OMAPS00137726 x0066814(Geetha)*/
  	TRACE_EVENT_P1("CME ERROR VALUE in NRG: %d",err);
  	    if( (nm_get_mode() == NM_MANUAL) &&
			((err == CME_ERR_NoServ) ||(err == CME_ERR_LimServ) ||(err ==CME_ERR_Unknown)))
  	    	{
  	    			nm_get_plmn_list_during_bootup();
  	    	}
	    else
		{
  	  		//x0pleela 30 May, 2007  DR: OMAPS00133201
  			//Passing the error code
    			nm_error_cops ((T_ACI_CME_ERR)err);
		}
    break;
  case AT_CMD_CFUN:
    /* OMAPS00075177 - 17,Apr-2006 */
/* Signature of the function has been changed from U8 to T_ACI_CME_ERR.
   because, when calling this function, it is converting from T_ACI_CME_ERR to U8.
   It is loosing the negative values( the enum T_ACI_CME_ERR has negative values )
*/
    sim_error_cfun ((T_ACI_CME_ERR)err);
    break;

  case AT_CMD_CPIN:
    sim_error_cpin ((T_ACI_CME_ERR)err);
    break;

  case AT_CMD_PVRF:
    sim_error_cpin ((T_ACI_CME_ERR)err);
    break;

  case AT_CMD_CHLD:
    cm_result_cmd(CMD_SRC_LCL, NotPresent);
    break;

  case AT_CMD_CLCK:
#ifdef SIM_PERS
//x0pleela 27 Apr, 2006  DR: OMAPS00067919
	if(sim_unlock_in_prog EQ SIMP_BOOTUP)
	{
	    //xrashmic 1 Jul, 2006 OMAPS00075784
	    //Changed U8 to T_ACI_CME_ERR
		sim_error_cfun ((T_ACI_CME_ERR)err);
	}

//	Nov 03, 2005 DR: OMAPS00052032 - xpradipg
//	if the flag is set then SIM Personalization has triggered the CLCK
	else if(sim_unlock_in_prog EQ SIMP_MENU)
	{
		sim_unlock_in_prog = SIMP_NONE;	/*a0393213 compiler warnings removal - FALSE changed to SIMP_NONE*/
		mfw_simlock_continue(SIMP_NONE);
	}
	else
#endif
    ss_error_clck();
    break;

    case AT_CMD_CPWD:
    sim_error_cpinc();
    break;

  case KSD_CMD_CB:
  case KSD_CMD_CF:
  case KSD_CMD_CL:
  case KSD_CMD_CW:
  case KSD_CMD_PWD:
  case KSD_CMD_UBLK:
    ss_error_string(cmdId, err);
    break;

  case AT_CMD_CPUC:
  case AT_CMD_CAMM:
  case AT_CMD_CACM:
    cm_error_aoc(cmdId, err);
    break;

  case AT_CMD_CNUM:
    phb_read_upn_eeprom();
    break;

  case AT_CMD_CUSD:
  case KSD_CMD_USSD:
    ss_error_ussd(cmdId, err);
    break;

  case AT_CMD_CPOL:
    nm_error_pref_plmn();
    break;

  case AT_CMD_VTS:
    cm_error_dtmf();
    break;

  case AT_CMD_D:
    cm_error_dial(err);
    break;

  case AT_CMD_CLAN:
#ifdef FF_2TO1_PS
    sim_read_lp_cnf(CAUSE_SIM_EF_INVALID,NULL);
#else
    sim_read_lp_cnf(SIM_CAUSE_EF_INVALID,NULL);
#endif
    break;

#ifdef GPRS /* KGT 12-05-2001 */
  case AT_CMD_CGATT:
  case AT_CMD_CGDCONT:
  case AT_CMD_CGACT:
  case AT_CMD_CGQREQ:
  case AT_CMD_CGQMIN:
  case AT_CMD_CGDATA:
  case AT_CMD_CGPADDR:
  case AT_CMD_CGAUTO:
  case AT_CMD_CGANS:
  case AT_CMD_CGCLASS:
  case AT_CMD_CGEREP:
  case AT_CMD_CGREG:
  case AT_CMD_CGSMS:
      gprs_error(cmdId, err);
      break;
#endif /* GPRS */

  /* Marcus: CCBS: 14/11/2002: Start */
  case AT_CMD_CCBS:
    TRACE_EVENT("AT_CMD_CCBS");
    cm_ccbs_error();
    break;

  case AT_CMD_H:
    cm_error_disconnect();
    break;
  /* Marcus: CCBS: 14/11/2002: Start */

 /*MC, SPR 1392, call deflection error*/
  case AT_CMD_CTFR:
  	cm_error_CTFR();
  break;

  /*SPR#2321 - DS - Handle SAT errors */
  case AT_CMD_SATE:
	sate_error(err);
  break;
  }
}



/*
+--------------------------------------------------------------------+
| PROJECT: GSM-MFW (8417)               MODULE:  MFW_CB              |
| STATE  : code                         ROUTINE: rAT_NO_CARRIER      |
+--------------------------------------------------------------------+


   PURPOSE :   No Carrier indication from ACI

*/

GLOBAL void rAT_NO_CARRIER( T_ACI_AT_CMD cmdId, SHORT cId )
{
  TRACE_FUNCTION ("rAT_NO_CARRIER()");

//x0pleela  14 Mar, 2006  ER:OMAPS00067709
#ifdef FF_PCM_VM_VB
//update the reason for calling record_stop
  if( get_voice_memo_type() EQ VOICE_BUFFERING )
    set_voice_buffering_rec_stop_reason(CALLED_PARTY_END_CALL);
#endif

#ifndef GPRS /* kgt 12-05-2001 */
  cm_error_connect(cId);
#else  /* GPRS */
  cm_error_connect(cId);
#endif /* GPRS */
}

/*
+--------------------------------------------------------------------+
| PROJECT: GSM-MFW (8417)               MODULE:  MFW_CB              |
| STATE  : code                         ROUTINE: rAT_BUSY            |
+--------------------------------------------------------------------+


   PURPOSE :   Connect indication from ACI

*/

GLOBAL void rAT_BUSY  ( T_ACI_AT_CMD cmdId, SHORT cId )
{
  TRACE_FUNCTION ("rAT_BUSY()");

#ifndef GPRS /* kgt 12-05-2001 */
  cm_error_connect(cId);
#else  /* GPRS */
  cm_error_connect(cId);
#endif /* GPRS */
}


/*
+--------------------------------------------------------------------+
| PROJECT: GSM-MFW (8417)               MODULE:  MFW_CB              |
| STATE  : code                         ROUTINE: rAT_NO_ANSWER       |
+--------------------------------------------------------------------+


   PURPOSE :   Connect indication from ACI

*/

GLOBAL void rAT_NO_ANSWER  ( T_ACI_AT_CMD cmdId, SHORT cId )
{
  TRACE_FUNCTION ("rAT_NO_ANSWER()");

//x0pleela  07 Mar, 2006  ER:OMAPS00067709
#ifdef FF_PCM_VM_VB
//update the reason for calling record_stop
  if( get_voice_memo_type() EQ VOICE_BUFFERING )
    set_voice_buffering_rec_stop_reason(CALLED_PARTY_NOT_AVAILABLE);
#endif

#ifndef GPRS /* kgt 12-05-2001 */
  cm_error_connect(cId);
#else  /* GPRS */
  cm_error_connect(cId);
#endif /* GPRS */
}


/*
+--------------------------------------------------------------------+
| PROJECT: GSM-MFW (8417)               MODULE:  MFW_CB              |
| STATE  : code                         ROUTINE: rAT_NO_DIALTONE     |
+--------------------------------------------------------------------+


   PURPOSE :   Connect indication from ACI

*/

GLOBAL void rAT_NO_DIALTONE  ( void )
{
  TRACE_FUNCTION ("rAT_NO_DIALTONE()");
}


/*
+--------------------------------------------------------------------+
| PROJECT: GSM-MFW (8417)               MODULE:  MFW_CB              |
| STATE  : code                         ROUTINE: rAT_CONNECT         |
+--------------------------------------------------------------------+


   PURPOSE :   Connect indication from ACI, only for data call

*/

GLOBAL void rAT_CONNECT ( T_ACI_AT_CMD cmdId,
                          T_ACI_BS_SPEED speed,
                          SHORT cId )
{
  TRACE_FUNCTION ("rAT_CONNECT()");

#ifndef GPRS /* kgt 12-05-2001 */

  if (speed==11)
    cm_wap_data_connected();
else
  cm_data_connect(cId);
#else  /* GPRS */
  cm_data_connect(cId);
#endif /* GPRS */
}


/*
+------------------------------------------------------------------+
| PROJECT : GSM-MFW (8417)               MODULE  :  MFW_CB         |
| STATE   : code                         ROUTINE : rAT_PlusCSSI    |
+------------------------------------------------------------------+


   PURPOSE :   Supplementary service notifications

*/

void rAT_PlusCSSI(T_ACI_CSSI_CODE code, SHORT index)
{
    TRACE_FUNCTION("rAT_PlusCSSI()");

    if (code == CSSI_CODE_NotPresent)
        return;

    ss_notify(ss_cvtCssiCodes(code), index, 0, 0);
}


/*
+------------------------------------------------------------------+
| PROJECT : GSM-MFW (8417)               MODULE  :  MFW_CB         |
| STATE   : code                         ROUTINE : rAT_PlusCSSU    |
+------------------------------------------------------------------+


   PURPOSE :   Supplementary service notifications

*/

void rAT_PlusCSSU  ( T_ACI_CSSU_CODE code,
                     SHORT           index,
                     CHAR           *number,
                     T_ACI_TOA      *type,
                     CHAR           *subaddr,
                     T_ACI_TOS      *satype)
{
    TRACE_FUNCTION("rAT_PlusCSSU()");

    if (code == CSSU_CODE_NotPresent)
        return;

    else if ((code == CSSU_CODE_OnHold) OR
             (code == CSSU_CODE_Retrieved))
        cm_notify(code, index, (UBYTE *)number);

    else
        ss_notify(ss_cvtCssuCodes(code),
                  index,
                  (UBYTE *)number,
                  (UBYTE *)subaddr);
}


/*
+------------------------------------------------------------------+
| PROJECT : GSM-MFW (8417)               MODULE  : MFW_CB          |
| STATE   : code                         ROUTINE : rAT_PercentRLOG |
+------------------------------------------------------------------+


   PURPOSE :

*/

void rAT_PercentRLOG(T_ACI_RLOG *rslt)
{
    T_MFW_CM_CALL_STAT stat;
    UBYTE              ton;
    UBYTE              mode;

    TRACE_FUNCTION("rAT_PercentRLOG()");


    TRACE_EVENT_P1("rslt->dest %d",rslt->dest);
    TRACE_EVENT_P1("rslt->atRslt %d",rslt->atRslt);


    if (rslt->dest > CMD_SRC_LCL)
    {
        switch (rslt->atRslt)
        {
            case RLOG_RSLT_OK:
                TRACE_EVENT_P1("rslt->rsltPrm.rOK.cmdId %d", rslt->rsltPrm.rOK.cmdId);
                if (rslt->rsltPrm.rOK.cmdId EQ AT_CMD_A
                    OR rslt->rsltPrm.rOK.cmdId EQ AT_CMD_D)
                    cm_rmt_ok_connect();
                if (rslt->rsltPrm.rOK.cmdId EQ AT_CMD_H
                    OR rslt->rsltPrm.rOK.cmdId EQ AT_CMD_CHUP)
                   {
                             //NM Berlin / UK integration 21.09.01
                            //Nov 02, 2005    DR OMAPS00052132   xdeepadh
                            //The usage of ATI enum is put under the flag FF_ATI
#if   defined (FF_ATI) || defined (NEPTUNE_BOARD)
                        /*June 15, 2006    DR:OMAPS00079492    x0043642 */
                        /* Set cmd_hold variable to MFW_CM_DISCONNECT_ALL to end all calls*/
                        set_cmdHold(MFW_CM_DISCONNECT_ALL);
                        cm_ok_disconnect(CMD_SRC_ATI_1, rslt->rsltPrm.rOK.cId);
#endif
                   }
                if (rslt->rsltPrm.rOK.cmdId EQ AT_CMD_ABRT)
                {
                    if (cm_search_callStat(rslt->rsltPrm.rOK.cId, &stat, &ton, &mode) == CM_OK)
                    {
                        if (stat == CALL_DEACTIVE)
                        	{
					//NM Berlin / UK integration 21.09.01
					//Nov 02, 2005    DR OMAPS00052132   xdeepadh
					//The usage of ATI enum is put under the flag FF_ATI
#ifdef FF_ATI
					cm_ok_disconnect(CMD_SRC_ATI_1, rslt->rsltPrm.rOK.cId);
#endif 	//FF_ATI
                        	}
                    }
                }
                if (rslt->rsltPrm.rOK.cmdId EQ AT_CMD_CHLD)
                	{
				//NM Berlin / UK integration 21.09.01
				//Nov 02, 2005    DR OMAPS00052132   xdeepadh
				//The usage of ATI enum is put under the flag FF_ATI
#ifdef FF_ATI
				cm_result_cmd(CMD_SRC_ATI_1, Present);
#endif      //FF_ATI
                	}

#ifdef GPRS /* JVJ 10-10-02 */
                /* SH - GPRS*/
                switch(rslt->rsltPrm.rOK.cmdId)
                {
                    case AT_CMD_CGDCONT:
                    case AT_CMD_CGQREQ:
                    case AT_CMD_CGQMIN:
                    case AT_CMD_CGATT:
                    case AT_CMD_CGACT:
                    case AT_CMD_CGDATA:
                    case AT_CMD_CGPADDR:
                    case AT_CMD_CGAUTO:
                    case AT_CMD_CGANS:
                    case AT_CMD_CGCLASS:
                    case AT_CMD_CGEREP:
                    case AT_CMD_CGREG:
                    case AT_CMD_CGSMS:
                    case AT_CMD_SNCNT:
                    case AT_CMD_P_CGREG:
                        gprs_ok((T_ACI_AT_CMD)rslt->rsltPrm.rOK.cId);
                        break;
                }
                /* end SH */
#endif
			//Mar 23, 2006 DR OMAPS00069173 Prabakar R
			//break was put inside #ifdef GPRS. it has been moved outside
                break;
            case RLOG_RSLT_NoCarrier:
#ifdef GPRS /* JVJ 10-10-02 */
                /* SH - don't send to CM for GPRS call*/
                if (rslt->rsltPrm.rNO_CARRIER.cmdId == AT_CMD_CGDATA)
                {
                    gprs_err_connect(rslt->rsltPrm.rNO_CARRIER.cId);
                }
                else
#endif
                cm_rmt_error_connect(rslt->rsltPrm.rNO_CARRIER.cId);

                break;
            case RLOG_RSLT_Busy:
                /* SH - don't send to CM for GPRS call*/
#ifdef GPRS /* JVJ 10-10-02 */
                if (rslt->rsltPrm.rBUSY.cmdId == AT_CMD_CGDATA)
                    gprs_err_connect(rslt->rsltPrm.rBUSY.cId);
                else
#endif
                    cm_rmt_error_connect(rslt->rsltPrm.rBUSY.cId);
                break;

            case RLOG_RSLT_NoAnswer:
                /* SH - don't send to CM for GPRS call*/
#ifdef GPRS /* JVJ 10-10-02 */
                if (rslt->rsltPrm.rNO_ANSWER.cmdId == AT_CMD_CGDATA)
                    gprs_err_connect(rslt->rsltPrm.rNO_ANSWER.cId);
                else
#endif
                    cm_rmt_error_connect(rslt->rsltPrm.rNO_ANSWER.cId);
                break;

            case RLOG_RSLT_Connect:
                //NM
                //merged latest version of MFW from Berlin
                //only related with NO_ASCIIZ
                //code 1: was replaced by code 2
                //keep it still comment out the code 1
                //by reason of problem swap the codes

                //code 1:
                //cm_data_connect(rslt->rsltPrm.rCONNECT.cId);

                /* notify MMI of connect by external MMI */
                //code 2:

                /* SH - don't send to CM for GPRS call*/
#ifdef GPRS /* JVJ 10-10-02 */
                if (rslt->rsltPrm.rCONNECT.cmdId == AT_CMD_CGDATA)
                    gprs_connect(rslt->rsltPrm.rCONNECT.cId);
                else
                /* SH end */
#endif
                    cm_rmt_ok_connect(); /* VO ???: to be changed (needs E_CM_CONNECT) */


                break;
#ifdef GPRS /* JVJ 10-10-02 */
            case RLOG_RSLT_CME:
                /* SH - GPRS*/
		TRACE_FUNCTION_P1("rslt->rsltPrm.rOK.cmdId=%d",rslt->rsltPrm.rOK.cmdId);
                switch(rslt->rsltPrm.rOK.cmdId)
                {
                    case AT_CMD_CGDCONT:
                    case AT_CMD_CGQREQ:
                    case AT_CMD_CGQMIN:
                    case AT_CMD_CGATT:
                    case AT_CMD_CGACT:
                    case AT_CMD_CGDATA:
                    case AT_CMD_CGPADDR:
                    case AT_CMD_CGAUTO:
                    case AT_CMD_CGANS:
                    case AT_CMD_CGCLASS:
                    case AT_CMD_CGEREP:
                    case AT_CMD_CGREG:
                    case AT_CMD_CGSMS:
                    case AT_CMD_SNCNT:
                    case AT_CMD_P_CGREG:
                        gprs_error(rslt->rsltPrm.rCME.cmdId,rslt->rsltPrm.rCME.err);
                        break;
			//CQ-16432 start
			case AT_CMD_CPWD:
			TRACE_FUNCTION("AT_CMD_CPWD");
			   ss_sat_passwdReqd(rslt->rsltPrm.rCME.cmdId,rslt->rsltPrm.rCME.err);
			   break;
			 //CQ-16432 end
                }
                /* end SH */
                break;
#endif
        }
    }
}


/*
+------------------------------------------------------------------+
| PROJECT : GSM-MFW (8417)               MODULE  : MFW_CB          |
| STATE   : code                         ROUTINE : rAT_PercentCLOG |
+------------------------------------------------------------------+


   PURPOSE :

*/

void rAT_PercentCLOG(T_ACI_CLOG *cmd)
{
    TRACE_FUNCTION("rAT_PercentCLOG() in mfw");

    if (cmd->retCode NEQ AT_CMPL AND cmd->retCode NEQ AT_EXCT)
        return;

    switch (cmd->cmdType)
    {
        case CLOG_TYPE_Set:
            switch ((int)(cmd->atCmd)) /*a0393213 lint warnings removal - typecast done*/
            {
                case AT_CMD_D:
                    if (cmd->cmdPrm.sD.simCallCtrl NEQ D_SIMCC_ACTIVE_CHECK)
                        cm_AT_D(cmd);
                    break;
#ifdef SIM_TOOLKIT
                case AT_CMD_A:
                    if (mfwSatMoAccepted)
                    {                   /* ES!! accepted SAT Call   */
                        mfwSatMoAccepted = 0;
                        cm_AT_D(cmd);
                    }
                    break;
#endif

                case KSD_CMD_CB:
                case KSD_CMD_CF:
                case KSD_CMD_CW:
                case KSD_CMD_CL:
                case KSD_CMD_PWD:
                case KSD_CMD_UBLK:
                case KSD_CMD_USSD:
                case AT_CMD_CUSD:
                    ss_command_info(cmd);
                    break;

                case AT_CMD_CHLD:
                    cm_AT_CHLD(cmd);
                    break;

                default:
                    break;
            }
            break;

        case CLOG_TYPE_Query:
            break;

        case CLOG_TYPE_Test:
            break;
    }
}


/*
+--------------------------------------------------------------------+
| PROJECT: GSM-MFW (8417)               MODULE:  MFW_CB              |
| STATE  : code                         ROUTINE: rAT_PercentDRV      |
+--------------------------------------------------------------------+


   PURPOSE :   Driver indication from layer 1

*/

GLOBAL void rAT_PercentDRV( T_ACI_DRV_DEV device,
                            T_ACI_DRV_FCT function,
                            UBYTE         val1,
                            UBYTE         val2)
{
  TRACE_FUNCTION ("rAT_PercentDRV()");
//ES!! check device & function !!


    drvKeyUpDown(val2,val1); //ES!! val2 korrekt ?
}

/*
+--------------------------------------------------------------------+
| PROJECT: GSM-MFW (8417)               MODULE:  MFW_CB              |
| STATE  : code                         ROUTINE: send_cnap_name_information_mmi   |
+--------------------------------------------------------------------+


   PURPOSE :  Function to process the data sent from rAT_PercentCNAP based on presentation mode for CNAP

*/
/*May 10,2007 DR:OMAP00127983 x0066814(Geetha)-begin*/
LOCAL void send_cnap_name_information_mmi(T_ATI_CNAP_PRESENTATION pres_mode,
                                      T_callingName *NameId)
{
  T_namePresentationAllowed *cnap_name_info = NULL;

  TRACE_FUNCTION("send_cnap_name_information()");

  switch(pres_mode)
  {
    case(CNAP_PRES_ALLOWED):
      TRACE_EVENT("CNAP: name presentation is allowed");
       CALL_NAME_NETWORK=TRUE;//implies that name is got from rAT_%CNAP
      cnap_name_info = &(NameId->namePresentationAllowed);
      break;

    case(CNAP_NAME_PRES_RESTRICTED):
    case(CNAP_NAME_UNAVAILABLE):
    case(CNAP_PRES_RESTRICTED):
      TRACE_EVENT("CNAP: name presentation is restricted/unavilable");
	break;

    default:
      TRACE_ERROR("CNAP: wrong presentation mode");
      return;
  }
 set_cnap_name(cnap_name_info);
}

/*
+--------------------------------------------------------------------+
| PROJECT: GSM-MFW (8417)               MODULE:  MFW_CB              |
| STATE  : code                         ROUTINE:     set_cnap_name  |
+--------------------------------------------------------------------+


   PURPOSE :  function to get the name from rAT_PercentCNAP

*/
void set_cnap_name(T_namePresentationAllowed *cnap_name_info )
{
TRACE_FUNCTION("set_cnap_name");
  if(cnap_name_info EQ NULL)
  {
    TRACE_ERROR("CNAP cnap_name_info is NULL");
    return;
  }

  if ((cnap_name_info->v_dataCodingScheme) AND
    (cnap_name_info->v_lengthInCharacters) AND
    (cnap_name_info->v_nameString))
  	{
	UBYTE expanded_len=0;
       UBYTE  *cnap_name_expanded = NULL;
	UBYTE dcs;
	TRACE_FUNCTION("All values present");
       cnap_name_expanded=mfwAlloc(CNAP_EXPANDED_SIZE+1);
	dcs =(UBYTE)cnap_name_info->dataCodingScheme;

if( cmh_getAlphabetCb( (UBYTE)dcs ) EQ 0 ) /* 7bit alphabet */
    {
    TRACE_FUNCTION("/* 7bit alphabet */");
      expanded_len =
        utl_cvt7To8((UBYTE *)cnap_name_info->nameString.b_nameString,
                    (UBYTE)cnap_name_info->lengthInCharacters,
                    cnap_name_expanded,
                    0 );
    }
    else
    {
     TRACE_FUNCTION("/* 8bit alphabet */");
      memcpy( cnap_name_expanded,
              (UBYTE *)cnap_name_info->nameString.b_nameString,
              (UBYTE)cnap_name_info->lengthInCharacters );
      expanded_len = (UBYTE)cnap_name_info->lengthInCharacters;
    }
	  cnap_name.len= (UBYTE)expanded_len;
#ifdef NO_ASCIIZ
	 memcpy(cnap_name.data,cnap_name_expanded,sizeof(cnap_name.data));
#else
	 strcpy(cnap_name.data,cnap_name_expanded);
#endif
         TRACE_EVENT_P1("cnap_name.data: %s",cnap_name.data);
	  mfwFree(cnap_name_expanded, CNAP_EXPANDED_SIZE+1);
  }
  return;
}

/*
+--------------------------------------------------------------------+
| PROJECT: GSM-MFW (8417)               MODULE:  MFW_CB              |
| STATE  : code                         ROUTINE:   get_cnap_name    |
+--------------------------------------------------------------------+


   PURPOSE :  function to give the name from set_cnap_name to MMI

*/
GLOBAL T_MFW_PHB_TEXT * get_cnap_name()
{
TRACE_FUNCTION("get_cnap_name");
return &cnap_name;
}

/*
+--------------------------------------------------------------------+
| PROJECT: GSM-MFW (8417)               MODULE:  MFW_CB              |
| STATE  : code                         ROUTINE: rAT_PercentCNAP     |
+--------------------------------------------------------------------+

  PURPOSE : handles rAT_PercentCNAP call back

*/

GLOBAL void rAT_PercentCNAP  ( T_callingName *NameId,T_ACI_CNAP_STATUS status)
{

  TRACE_FUNCTION("rAT_PercentCNAP()");
  TRACE_EVENT_P1("NameId: %d",NameId);
  if(NameId NEQ NULL)
  {
     if(NameId->v_namePresentationAllowed)
  {
    send_cnap_name_information_mmi(CNAP_PRES_ALLOWED, NameId);
    return;
  }

  if(NameId->v_presentationRestricted)
  {
    send_cnap_name_information_mmi(CNAP_PRES_RESTRICTED, NameId);
    return;
  }

  if(NameId->v_nameUnavailable)
  {
    send_cnap_name_information_mmi(CNAP_NAME_UNAVAILABLE, NameId);
    return;
  }

  if(NameId->v_namePresentationRestricted)
  {
    send_cnap_name_information_mmi(CNAP_NAME_PRES_RESTRICTED, NameId);
    return;
  }
 }
}
/*May 10,2007 DR:OMAP00127983 x0066814(Geetha) -end*/
/*
+--------------------------------------------------------------------+
| PROJECT :                             MODULE  : MFW_ACI_DUMMY      |
| STATE   : code                        ROUTINE : rAT_PlusCLAN       |
+--------------------------------------------------------------------+

  PURPOSE : handles AT_PlusCLAN call back

*/

GLOBAL void rAT_PlusCLAN  (T_ACI_LAN_SUP  *CLang )
{
  TRACE_FUNCTION("rAT_PlusCLAN()");

#ifdef FF_2TO1_PS /* kgt 12-05-2001 */
  sim_read_lp_cnf(CAUSE_SIM_NO_ERROR,CLang);
#else
  sim_read_lp_cnf(SIM_NO_ERROR,CLang);
#endif

}

/*
+--------------------------------------------------------------------+
| PROJECT :                             MODULE  : MFW_ACI_DUMMY      |
| STATE   : code                        ROUTINE : rAT_PlusCLAE       |
+--------------------------------------------------------------------+

  PURPOSE : handles AT_PlusCLAE call back

*/

GLOBAL void rAT_PlusCLAE  (T_ACI_LAN_SUP  *CLang )
{
  TRACE_FUNCTION("rAT_PlusCLAE()");
}

/*
+--------------------------------------------------------------------+
| PROJECT : ACI/MMI             MODULE  : ACI_RET            |
| STATE   : code                        ROUTINE : rAT_PercentCSQ       |
+--------------------------------------------------------------------+

  PURPOSE : handles rAT_PercentCSQ call back

  Shen,Chao

*/

//Oct 05, 2006    ER: OMAPS00094496 x0061088(Prachi)
#ifdef FF_PS_RSSI
#define MMI_MIN_RXLEV_FAULT 99
GLOBAL void rAT_PercentCSQ  (UBYTE rssi, UBYTE ber, UBYTE actlevel, UBYTE min_access_level)
#else
GLOBAL void rAT_PercentCSQ  (UBYTE rssi, UBYTE ber, UBYTE actlevel)
#endif
{

	static UBYTE prelevel=0;
#ifdef NEPTUNE_BOARD
	    RssiVal = rssi;
#endif

	TRACE_FUNCTION("rAT_PercentCSQ()");
   #ifdef FF_PS_RSSI
    if((min_access_level NEQ MMI_MIN_RXLEV_FAULT) AND (rssi < min_access_level ))
    	{
	  globalSignalUpdate(0);
      prelevel = 0;
    	}
	else
   #endif
	if( prelevel != actlevel )
	{
		globalSignalUpdate(actlevel);
		prelevel = actlevel;
	}

}



#ifdef FF_CPHS
/*
+--------------------------------------------------------------------+
| PROJECT :                             MODULE  : MFW_ACI_DUMMY      |
| STATE   : code                        ROUTINE : rAT_PercentCPVWI   |
+--------------------------------------------------------------------+

  PURPOSE : handles AT_PercentCPVWI call back

*/

GLOBAL void rAT_PercentCPVWI ( UBYTE         flag_set,
                               USHORT        line)
{
TRACE_FUNCTION("rAT_PercentCPVWI()");
	//18 May, 2006  DR: OMAPS00070657  x0pleela
	//Send this event when there is any voice mail
	sendCPWIEvt(flag_set, line);
}

/*
+--------------------------------------------------------------------+
| PROJECT :                             MODULE  : MFW_ACI_DUMMY      |
| STATE   : code                        ROUTINE : rAT_PercentCPNUMS  |
+--------------------------------------------------------------------+

  PURPOSE : handles AT_PercentCPNUMS call back

*/
GLOBAL void rAT_PercentCPNUMS(UBYTE element_index,
                              UBYTE index_level,
                              CHAR  *alpha_tag,
                              CHAR  *number,
                              BOOL  premium_flag,
                              BOOL  network_flag,
                              UBYTE type_of_address)
{
}


/*
+--------------------------------------------------------------------+
| PROJECT :                             MODULE  : MFW_ACI_DUMMY      |
| STATE   : code                        ROUTINE : rAT_PercentCPCFU   |
+--------------------------------------------------------------------+

  PURPOSE : handles AT_PercentCPCFU call back

*/
GLOBAL void rAT_PercentCPCFU(UBYTE        flag_set,
                             T_CPHS_LINES line)
{}


/*
+--------------------------------------------------------------------+
| PROJECT :                             MODULE  : MFW_ACI_DUMMY      |
| STATE   : code                        ROUTINE : rAT_PercentCPROAM  |
+--------------------------------------------------------------------+

  PURPOSE : handles AT_PercentCPROAM call back

*/
GLOBAL void rAT_PercentCPROAM(UBYTE roam_status)
{}

#endif /* FF_CPHS */

/*
+--------------------------------------------------------------------+
| PROJECT :                             MODULE  : MFW_ACI_DUMMY      |
| STATE   : code                        ROUTINE : rAT_PlusCIEV       |
+--------------------------------------------------------------------+

  PURPOSE : dummy for +CIEV unsolicited message

*/
GLOBAL void rAT_PlusCIEV( T_ACI_MM_CIND_VAL_TYPE sCindValues,
                          T_ACI_MM_CMER_VAL_TYPE sCmerSettings )
{
  TRACE_FUNCTION("rAT_PlusCIEV()");

//x0018858 24 Mar, 2005 MMI-FIX-11321
//Added a switch statement to handle the indication received.
//begin - x0018858 24 Mar, 2005 MMI-FIX-11321

  switch(sCmerSettings.sCmerIndParam)
  {
    case CMER_INDICATOR_INVALID:
    case CMER_INDICATOR_0:
    case CMER_INDICATOR_1:
      break;
    case CMER_INDICATOR_2:
    {
      switch (sCindValues.sCindSmsFullParam)
      {
         case CIND_SMSFULL_INDICATOR_INVALID:
           break;
         case CIND_SMSFULL_INDICATOR_MEMFULL:
           TRACE_FUNCTION("CIND_SMSFULL_INDICATOR_MEMFULL");
           isMessageWaiting = TRUE;
           break;
         case CIND_SMSFULL_INDICATOR_MEMAVAIL:
           TRACE_FUNCTION("CIND_SMSFULL_INDICATOR_MEMAVAIL");
           isMessageWaiting = FALSE;
           break;
         case CIND_SMSFULL_INDICATOR_MAX:
         default:
           break;
      }
    }
    case CMER_INDICATOR_TYPE_MAX:
    default:
    {
      break;
    }
  }
//end - x0018858 24 Mar, 2005 MMI-FIX-11321
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411)              MODULE  : MFW_CB |
| STATE   : code          ROUTINE : mfw_format_plmn_name    |
+--------------------------------------------------------------------+

  PURPOSE : Decodes PLMN name to remote source format

*/

void mfw_format_plmn_name(UBYTE dcs,UBYTE *in, UBYTE in_length, UBYTE *out, UBYTE max_out_length)
{
    USHORT size_of_plmn_name;
	UBYTE dest_len=0;
	UBYTE buf[33];

	memset(buf,33,0);
	if(dcs ==0) /*GSM default */
	{
	  dest_len = utl_cvt7To8(in,in_length,buf,0);
	  utl_chsetFromGsm(buf,dest_len,out,max_out_length,&size_of_plmn_name,GSM_ALPHA_Def);
	  memset(buf, 0, 33);
    }
	else if(dcs ==1) /*UCS2 */
	{
	    utl_hexFromGsm(in,in_length,out,max_out_length,&size_of_plmn_name,GSM_ALPHA_Def,CSCS_ALPHA_7_Bit);

	}
}



#ifndef FF_2TO1_PS/*
+--------------------------------------------------------------------+
| PROJECT :                             MODULE  : MFW_ACI_DUMMY      |
| STATE   : code                        ROUTINE : rAT_PercentCNIV    |
+--------------------------------------------------------------------+

  PURPOSE : dummy for %CNIV unsolicited message

*/
//x0pleela 09 Feb, 2006  ER:OMAPS00065203
GLOBAL void rAT_PercentCNIV (T_MMR_INFO_IND *mmr_info_ind)
{
	T_MFW_NETWORK_STRUCT plmn_netw_data;
	SHORT mcc = 0;
       SHORT mnc = 0;

	TRACE_FUNCTION("rAT_PercentCNIV()");

      //copy plmn info into plmn_netw_data from mmr_info_ind
	memset(&plmn_netw_data, 0, sizeof(T_MFW_NETWORK_STRUCT) );

      if (mmr_info_ind->plmn.v_plmn)
      {
        cmhMM_CnvrtPLMN2INT( mmr_info_ind->plmn.mcc,
        						mmr_info_ind->plmn.mnc,
        						&mcc, &mnc );
      }
      /* build numeric plmn representation */
      	if ((mnc & 0x000F) EQ 0x000F)
	{
		   sprintf((char*)&plmn_netw_data.network_numeric, "%d%d",
	    				mcc, (mnc & 0x0FF0) >> 4);
	 }
	 else
	 {
	   	   sprintf((char*)&plmn_netw_data.network_numeric, "%d%d", mcc, mnc);
	 }
//Apr 13, 2007 DRT:OMAPS00122739 x0066814(Geetha)
	if (mmr_info_ind->short_name.v_name)  /* short name  */
  	{
  		TRACE_FUNCTION(" SHORT NAME ");
    		mfw_format_plmn_name(mmr_info_ind->short_name.dcs,(UBYTE*)mmr_info_ind->short_name.text,
                         mmr_info_ind->short_name.c_text,    (UBYTE *)plmn_netw_data.network_short.data, 33);
 	 }

 	if (mmr_info_ind->full_name.v_name) /* full name  */
  	{
  		TRACE_FUNCTION(" Long NAME ");
    		mfw_format_plmn_name(mmr_info_ind->full_name.dcs,(UBYTE*)mmr_info_ind->full_name.text,
	                     mmr_info_ind->full_name.c_text, (UBYTE *)plmn_netw_data.network_long.data, 33);
  }

  plmn_netw_data.opn_read_from = NM_NITZ;

  nm_get_network_data(&plmn_netw_data);
}

#else
                       /* DMPS MMREG SAP */
GLOBAL void rAT_PercentCNIV (T_MMREG_INFO_IND *mmr_info_ind)
{
  T_MFW_NETWORK_STRUCT plmn_netw_data;
  SHORT mcc = 0;
  SHORT mnc = 0;

  TRACE_FUNCTION("rAT_PercentCNIV()");

  /* copy plmn info into plmn_netw_data from mmr_info_ind */
  memset(&plmn_netw_data, 0, sizeof(T_MFW_NETWORK_STRUCT));

  if (mmr_info_ind->v_plmn_id)
  {
    cmhMM_CnvrtPLMN2INT( &(mmr_info_ind->plmn_id), (USHORT *)&mcc, (USHORT *)&mnc );
  }
  /* build numeric plmn representation */
  if ((mnc & 0x000F) EQ 0x000F)
  {
      sprintf((char*)&plmn_netw_data.network_numeric, "%d%d",
              mcc, (mnc & 0x0FF0) >> 4);

  }
  else
  {
          sprintf((char*)&plmn_netw_data.network_numeric, "%d%d", mcc, mnc);

  }

  if (mmr_info_ind->v_short_net_name AND /* short name only */
      !mmr_info_ind->v_full_net_name)
  {
  TRACE_FUNCTION(" SHORT NAME ");
#ifdef NO_ASCIIZ
    memcpy(plmn_netw_data.network_short.data,
           mmr_info_ind->short_net_name.text,
           mmr_info_ind->short_net_name.c_text);
#else
    strcpy(plmn_netw_data.network_short, (char*)mmr_info_ind->short_net_name.text);
#endif
  }
  else if (!mmr_info_ind->v_short_net_name AND
            mmr_info_ind->v_full_net_name)    /* full name only */
  {
    TRACE_FUNCTION(" LONG NAME ");
#ifdef NO_ASCIIZ
    memcpy( plmn_netw_data.network_long.data,
          mmr_info_ind->full_net_name.text,
          mmr_info_ind->full_net_name.c_text);
#else
    strcpy( plmn_netw_data.network_long, (char*)mmr_info_ind->full_net_name.text );
#endif
  }
  else if (mmr_info_ind->v_short_net_name AND
            mmr_info_ind->v_full_net_name)
  {
  TRACE_FUNCTION(" LONG AND SHORT ");
#ifdef NO_ASCIIZ
    memcpy( plmn_netw_data.network_long.data,
          mmr_info_ind->full_net_name.text,
          mmr_info_ind->full_net_name.c_text);
    memcpy( plmn_netw_data.network_short.data,
        mmr_info_ind->short_net_name.text,
        mmr_info_ind->short_net_name.c_text);
#else
    strcpy( plmn_netw_data.network_long, (char*)mmr_info_ind->full_net_name.text );
    strcpy( plmn_netw_data.network_short, (char*)mmr_info_ind->short_net_name.text);
#endif
	  }
  else
  {
	TRACE_EVENT("No name found");
  }

	plmn_netw_data.opn_read_from = NM_NITZ;

	nm_get_network_data(&plmn_netw_data);
}

#endif
/*
+--------------------------------------------------------------------+
| PROJECT :                       MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                  ROUTINE : rAT_PercentCCCN          |
+--------------------------------------------------------------------+

  PURPOSE :
*/
GLOBAL void rAT_PercentCCCN ( T_ACI_FAC_DIR tDirection,
                              SHORT cId,
#ifdef FF_2TO1_PS
                              T_NAS_fac_inf *acFie )
#else
                              T_MNCC_fac_inf *acFie )
#endif
{
  TRACE_FUNCTION ("rAT_PercentCCCN ()");
}

/*
+--------------------------------------------------------------------+
| PROJECT :                       MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                  ROUTINE : rAT_PercentCSSN          |
+--------------------------------------------------------------------+

  PURPOSE :
*/
GLOBAL void rAT_PercentCSSN ( T_ACI_FAC_DIR tDirection,
                              T_ACI_FAC_TRANS_TYPE tType,
#ifdef FF_2TO1_PS
                              T_NAS_fac_inf       *acFie )
#else
                              T_MNCC_fac_inf *acFie )
#endif
{
  TRACE_FUNCTION ("rAT_PercentCSSN ()");
}


#if defined (REL99) || defined (FF_2TO1_PS)

/*
+--------------------------------------------------------------------+
| PROJECT :                       MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                  ROUTINE : rAT_PercentCMGRS         |
+--------------------------------------------------------------------+

  PURPOSE :
*/
GLOBAL void rAT_PercentCMGRS ( T_ACI_CMGRS_MODE  mode,
                                UBYTE             tp_mr,
                                UBYTE             resend_count,
                                UBYTE             max_retrans )
{
  TRACE_FUNCTION ("rAT_PercentCMGRS ()");
}

#endif /* REL99 OR FF_2TO1_PS*/
/*
+--------------------------------------------------------------------+
| PROJECT :                       MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                  ROUTINE : rAT_PercentRDLB          |
+--------------------------------------------------------------------+

  PURPOSE :
*/
GLOBAL void rAT_PercentRDLB ( T_ACI_CC_RDL_BLACKL_STATE state )
{
  TRACE_FUNCTION ("rAT_PercentRDLB ()");
}
/*
+--------------------------------------------------------------------+
| PROJECT :                       MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                  ROUTINE : rAT_PercentCPRSM         |
+--------------------------------------------------------------------+

  PURPOSE :
*/

GLOBAL void rAT_PercentCPRSM ( T_ACI_CPRSM_MOD mode )
{
  TRACE_FUNCTION ("rAT_PercentCPRSM ()");
}

/*
+--------------------------------------------------------------------+
| PROJECT :                       MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                  ROUTINE : rAT_PercentCSTAT         |
+--------------------------------------------------------------------+

  PURPOSE :
*/

//x0pleela 13 Feb, 2006
//Querying for EONS data when %CSTAT returns EONS ready

GLOBAL void rAT_PercentCSTAT ( T_ACI_STATE_MSG msgType )
{
#ifndef NEPTUNE_BOARD
	T_MFW_NETWORK_STRUCT plmn_eons_data;
#endif

  TRACE_FUNCTION ("rAT_PercentCSTAT ()");
  #ifndef NEPTUNE_BOARD
  memset(&plmn_eons_data, 0, sizeof(T_MFW_NETWORK_STRUCT) );
  if( (msgType.entityId EQ STATE_MSG_EONS ) AND
  	(msgType.entityState EQ ENTITY_STATUS_Ready) )
  {
    nm_get_COPN(&plmn_eons_data);

    //send E_NM_OPN event
    nm_get_network_data(&plmn_eons_data);
  }
#endif

}


/*
+--------------------------------------------------------------------+
| PROJECT :                       MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                  ROUTINE : rAT_PercentRDL           |
+--------------------------------------------------------------------+

  PURPOSE :
*/

GLOBAL void rAT_PercentRDL ( T_ACI_CC_REDIAL_STATE state )
{
  TRACE_FUNCTION ("rAT_PercentRDL ()");
}

#ifndef FF_2TO1_PS
/*
+--------------------------------------------------------------------+
| PROJECT :                       MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                  ROUTINE : rAT_PercentCMGR          |
+--------------------------------------------------------------------+

  PURPOSE :
*/

GLOBAL void rAT_PercentCMGR ( T_ACI_CMGL_SM*  sm,
                              T_ACI_CMGR_CBM * cbm)
{
  TRACE_FUNCTION ("rAT_PercentCMGR ()");
}

/*
+--------------------------------------------------------------------+
| PROJECT :                       MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                  ROUTINE : rAT_PercentCMGL          |
+--------------------------------------------------------------------+

  PURPOSE :
*/

GLOBAL void rAT_PercentCMGL ( T_ACI_CMGL_SM * smLst)
{
  TRACE_FUNCTION ("rAT_PercentCMGL ()");
}


/*
+--------------------------------------------------------------------+
| PROJECT :                       MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                  ROUTINE : rAT_*          |
+--------------------------------------------------------------------+

  PURPOSE : Following functions MOved from ATI. (ati_ret.c)
*/


GLOBAL void rAT_PercentCREG  ( T_ACI_CREG_STAT       status,
                               USHORT                lac,
                               USHORT                cid,
                               T_ACI_P_CREG_GPRS_IND gprs_ind)
{
  TRACE_FUNCTION("rAT_PercentCREG()");
}

#if defined (MFW) || defined (SMI)
#ifdef FF_TIMEZONE
GLOBAL void rAT_PlusCTZV ( S32 timezone )
{
  TRACE_FUNCTION("rAT_PlusCTZV()");
}
#else
GLOBAL void rAT_PlusCTZV ( UBYTE* timezone )
{
  TRACE_FUNCTION("rAT_PlusCTZV()");
}
#endif
#endif


// June 02, 2006    DR: OMAPS00078005 x0021334
// Descripton: Test for NITZ (Network Identity and Timezone) support - No New time was displayed
// Solution: New Time/Date received from network is sent to MFW by lower layer by invoking 'rAT_PercentCTZV'
// function. This function has now been implemented to pass on the received values to MMI
// for user confirmation and RTC updation.
/*
+--------------------------------------------------------------------+
| PROJECT :                       MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                  ROUTINE : rAT_PercentCTZV         |
+--------------------------------------------------------------------+

  PURPOSE :
*/
#if defined (MFW) || defined (SMI)
GLOBAL void rAT_PercentCTZV (T_MMR_INFO_IND *mmr_info_ind, S32 timezone )
{
  #ifdef FF_TIMEZONE
  T_MFW_TIME_IND currclock;
  #endif

  TRACE_FUNCTION("rAT_PercentCTZV()");

  #ifdef FF_TIMEZONE
  // Copy time related data received from network to 'currclock'
  // to be passed to MMI.

  currclock.hour = mmr_info_ind->time.hour;
  currclock.minute = mmr_info_ind->time.minute;
  currclock.second = mmr_info_ind->time.second;

  // Copy date related data received from network to 'currclock'
  // to be passed to MMI.
  currclock.day = mmr_info_ind->time.day;
  currclock.month = mmr_info_ind->time.month;
  currclock.year = mmr_info_ind->time.year;

  // Pass time and date info to MMI
  nm_set_network_time(&currclock);
  #endif
}
#endif

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  :     |
| STATE   : code                  ROUTINE :                     |
+--------------------------------------------------------------------+

  PURPOSE : dummy function, needs not to be used.
*/
GLOBAL void rAT_Z ( void ){}

/*
+--------------------------------------------------------------------+
| PROJECT :                       MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                  ROUTINE : rAT_*          |
+--------------------------------------------------------------------+

  PURPOSE : Following functions MOved from ACI. (ati_em_ret.c)
*/

//    June 01, 2005  REF: CRR 31559  x0021334
//    Description: TCS2.1.1 SW not buildable without engineering mode
//    Solution: Engineering Mode specific functions are guarded by 'FF_EM_MODE' flag

#ifndef NEPTUNE_BOARD
#ifdef FF_EM_MODE
GLOBAL void rAT_PercentEM ( /*UBYTE srcId,*/ T_EM_VAL *val_tmp )
{
}

GLOBAL void rAT_PercentEMET ( /*UBYTE srcId,*/ T_EM_VAL val_tmp )
{

}

GLOBAL void rAT_PercentEMETS ( UBYTE entity )
{
}
#endif
#else
#ifdef TI_PS_FF_EM
GLOBAL void rAT_PercentEM ( /*UBYTE srcId,*/ T_EM_VAL *val_tmp )
{
}

GLOBAL void rAT_PercentEMET ( /*UBYTE srcId,*/ T_EM_VAL val_tmp )
{

}

GLOBAL void rAT_PercentEMETS ( UBYTE entity )
{
}
#endif
#endif /*FF_EM_MODE*/

/*
+--------------------------------------------------------------------+
| PROJECT :                       MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                  ROUTINE : rAT_*          |
+--------------------------------------------------------------------+

  PURPOSE : Following functions MOved from ACI. (ati_cphs.c)
*/



#ifndef MFW
#ifndef FF_MMI_RIV
/* dummy in case of SMI */
GLOBAL void rAT_PercentCPNUMS(UBYTE element_index,
                              UBYTE index_level,
                              CHAR  *alpha_tag,
                              CHAR  *number,
                              BOOL  premium_flag,
                              BOOL  network_flag,
                              UBYTE type_of_address)
{
}
#endif /*ndef FF_MMI_RIV */
#endif /* ndef MFW */

#ifndef MFW
#ifndef FF_MMI_RIV
/* dummy in case of SMI */
GLOBAL void rAT_PercentCPROAM(UBYTE roam_status)
{}
#endif /* ndef FF_MMI_RIV */
#endif /* ndef MFW */

#ifndef MFW
#ifndef FF_MMI_RIV
/* dummy in case of SMI */
GLOBAL void rAT_PercentCPVWI ( UBYTE         flag_set,
                               USHORT        line)
{ }
#endif /* FF_MMI_RIV */
#endif /* MFW */
#endif /*FF_2TO1_PS*/

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411)              MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                        ROUTINE : rAT_PercentMBI       |
+--------------------------------------------------------------------+

  PURPOSE : handles callback for %MBI, which queries the mailbox identifiers
*/
#ifdef FF_CPHS_REL4
GLOBAL void rAT_PercentMBI(T_ACI_MBI* mbi)
{
	T_MFW_CPHS_REL4_MBI mfw_mbi;
	mfw_mbi.voice=mbi->mbdn_id_voice;
	mfw_mbi.fax=mbi->mbdn_id_fax;
	mfw_mbi.electronic=mbi->mbdn_id_email;
	mfw_mbi.other=mbi->mbdn_id_other;
	mfw_mbi.valid=1; /*1 means valid*/

	/*need to send MBI signal to BMI*/
	sendCPHSSignal(E_CPHS_REL4_GET_MBI, &mfw_mbi);
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411)              MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                        ROUTINE : rAT_PercentMBI       |
+--------------------------------------------------------------------+

  PURPOSE : handles callback for %MBI, which queries the mailbox identifiers
*/

GLOBAL void rAT_PercentMBDN(T_ACI_MBDN* mbdn)
{

	/*send MBDN signal to BMI*/
	sendCPHSSignal(E_CPHS_REL4_GET_MBDN,mbdn);
}


extern  T_MFW_CPHS_REL4_MWIS mwis_stat[4];
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411)              MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                        ROUTINE : rAT_PercentMWIS|
+--------------------------------------------------------------------+

  PURPOSE : handles callback for %MWIS, which queries the message waiting status*/

GLOBAL void rAT_PercentMWIS(T_ACI_MWIS_MWI* mwis)
{
	/*send MBDN signal to BMI*/
	int profile;
	static UBYTE count = 1;

//	memcpy(mwis_stat[count - 1],mwis,sizeof(T_MFW_CPHS_REL4_MWIS));
	mwis_stat[count-1].mwisStat = mwis->mwiStat;
	mwis_stat[count-1].voicemail = mwis->mwis_count_voice;
	mwis_stat[count-1].fax = mwis->mwis_count_fax;
	mwis_stat[count-1].electronic = mwis->mwis_count_email;
	mwis_stat[count-1].other = mwis->mwis_count_other;


	if(count == mfw_cphs_get_no_profile())
		sendCPHSSignal(E_CPHS_GET_VC_STAT,0);
	else
		count++;
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411)              MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                        ROUTINE : rAT_PercentMWI|
+--------------------------------------------------------------------+

  PURPOSE : handles callback for %MWI. This function is called whenever message waiting status is received*/
GLOBAL void rAT_PercentMWI(UBYTE msp_id,T_ACI_MWIS_MWI* mwis)
{
	TRACE_FUNCTION("rAT_PercentMWI()");
//	memcpy(mwis_stat[msp_id - 1],mwis,sizeof(T_MFW_CPHS_REL4_MWIS));
	mwis_stat[msp_id - 1].mwisStat = mwis->mwiStat;
	mwis_stat[msp_id - 1].voicemail = mwis->mwis_count_voice;
	mwis_stat[msp_id - 1].fax = mwis->mwis_count_fax;
	mwis_stat[msp_id - 1].electronic = mwis->mwis_count_email;
	mwis_stat[msp_id - 1].other = mwis->mwis_count_other;

	sendCPHSSignal(E_CPHS_GET_VC_STAT,0);
}

#endif



/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411)              MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                        ROUTINE : rAT_PlusCLVL       |
+--------------------------------------------------------------------+

  PURPOSE : handles callback for +CLVL querying the volume
*/

GLOBAL void rAT_PlusCLVL(U8 drvVol)
{
  TRACE_FUNCTION ("rAT_PlusCLVL()");

  return;
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411)              MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                        ROUTINE : rAT_PlusCRSL       |
+--------------------------------------------------------------------+

  PURPOSE : handles callback for +CRSL querying the volume
*/

GLOBAL void rAT_PlusCRSL(U8 drvVol)
{
  TRACE_FUNCTION ("rAT_PlusCRSL()");

  return;
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411)              MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                        ROUTINE : rAT_PlusCMUT       |
+--------------------------------------------------------------------+

  PURPOSE : handles callback for +CMUT querying the volume
*/

GLOBAL void rAT_PlusCMUT(U8 drvMute)
{
  TRACE_FUNCTION ("rAT_PlusCMUT()");

  return;
}

/* Mar 14, 2006    REF:ER OMAPS00070811  */
#ifdef NEPTUNE_BOARD
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411)        MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                  ROUTINE : rAT_PercentCMGR          |
+--------------------------------------------------------------------+

 */
GLOBAL void rAT_PercentCMGR  ( T_ACI_CMGL_SM*  sm,
                               T_ACI_CMGR_CBM* cbm )
{
  TRACE_FUNCTION ("rAT_PercentCMGR()");
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411)        MODULE  : MFW_ACI_DUMMY            |
| STATE   : code                  ROUTINE : rAT_PercentCMGL          |
+--------------------------------------------------------------------+

  PURPOSE :
*/
GLOBAL void rAT_PercentCMGL ( T_ACI_CMGL_SM * smLst )
{
  TRACE_FUNCTION ("rAT_PercentCMGL()");
}

#endif

#if defined(TI_UMTS) && defined(TI_PS_3GPP_R5)
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411)              MODULE  : MFW_ACI_DUMMY      |
| STATE   : code                        ROUTINE : rAT_PercentMMCI    |
+--------------------------------------------------------------------+

  PURPOSE : handles callback for %MMCC indication cc service change
            fallback case ( SCUDIF)
*/

GLOBAL void rAT_PercentMMCI ( T_ACI_MMCI_STAT state)
{
  TRACE_FUNCTION("rAT_PercentMMCI()");

  return;
}

#endif /* TI_UMTS && TI_PS_3GPP_R5 */


#ifdef TI_PS_FF_EM

GLOBAL void rAT_PercentEINFO (U16 offset, U16 length, T_ENG_INFO_REQ *eng_info_req)
{
  TRACE_FUNCTION("rAT_PercentEINFO()");
  Mfw_em_response_EINFO(eng_info_req);
}

GLOBAL void rAT_PercentESINFO (U16 offset, U16 length, T_ENG_INFO_STATIC_REQ *eng_info_static_req)
{
  TRACE_FUNCTION("rAT_PercentESINFO()");
  Mfw_em_response_ESINFO(eng_info_static_req);
}

#endif /* TI_PS_FF_EM */

/*a0393213 cphs rel4*/

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411)              MODULE  : ACI_RET            |
| STATE   : code                        ROUTINE : rAT_PercentCFIS    |
+--------------------------------------------------------------------+

  PURPOSE : handles rAT_PercentCFIS call back
  PARAMETERS : cfis    - Call forward indication status
 */
#ifdef FF_CPHS_REL4
GLOBAL void rAT_PercentCFIS ( T_ACI_CFIS_CFU *cfis )
{
  T_MFW_CPHS_REL4_DV_STAT divert_status;
  TRACE_FUNCTION("rAT_PercentCFIS()");

  if(cfis->cfuStat & 0x01) /*first bit corresponds to voice*/
	divert_status.voice=MFW_CFLAG_SET;
  else
  	divert_status.voice=MFW_CFLAG_NOTSet;

  if(cfis->cfuStat & 0x02) /*second bit corresponds to fax*/
	divert_status.fax=MFW_CFLAG_SET;
  else
  	divert_status.fax=MFW_CFLAG_NOTSet;

  if(cfis->cfuStat & 0x04) /*third bit corresponds to data*/
	divert_status.data=MFW_CFLAG_SET;
  else
  	divert_status.data=MFW_CFLAG_NOTSet;

  memcpy(divert_status.voice_dialling_number,cfis->number,PHB_MAX_LEN);

  TRACE_EVENT_P4("voice  %x,  fax  %x,  data  %x,  number  %s",
  	divert_status.voice,divert_status.fax,divert_status.data,
  	divert_status.voice_dialling_number);

  sendCPHSSignal(E_CPHS_GET_DV_STAT,&divert_status);
}
#endif /* FF_CPHS_REL4 */


//May 10, 2006    REF: DRT OMAPS00075829  xdeepadh
//Using the mechanism where MFW can receive primitives without
// ACI to know about it
#if defined(FF_MMI_FILEMANAGER)||defined(FF_MMI_CAMERA_APP)
/*
+------------------------------------------------------------------------------
|  Function     :  mslPrimHandler
+------------------------------------------------------------------------------
|  Description  :  This fn is the premitieve handler for MSL
|
|  Parameters   :  opc-opc code
|                           data - data
|
|
|  Return       :  TRUE/FALSE
+------------------------------------------------------------------------------
*/
GLOBAL BOOL mslPrimHandler (USHORT opc, void * data)
{
TRACE_FUNCTION ("mslPrimHandler");
TRACE_EVENT_P1("opc is %x",opc);

  if (opc EQ MSL_MMI_IND)
  {
    Mslil_msl_mmi_ind((T_MSL_MMI_IND*)data);
    return TRUE;
  }

  return FALSE;

}

/*
+------------------------------------------------------------------------------
|  Function     :  Mslil_msl_mmi_ind
+------------------------------------------------------------------------------
|  Description  :  This fn is called when msl_mmi_ind is received
|
|  Parameters   :  msl_mmi_ind - MSL_MMI_IND primitive structure
|
|  Return       :  void
+------------------------------------------------------------------------------
*/

GLOBAL void Mslil_msl_mmi_ind ( T_MSL_MMI_IND *msl_mmi_ind)
{

  U32 ucp=msl_mmi_ind->ucp;
  /*a0393213 compiler warnings removal - removed variable status*/

  TRACE_FUNCTION ("Mslil_msl_mmi_ind");

	switch(ucp)
	{
#ifdef FF_MMI_CAMERA_APP
	case  MSL_UCP_IMGCAP:/*MSL_UCP_IMGCAP*/
		mfw_msl_cam_cb(msl_mmi_ind->message, msl_mmi_ind->appData);
		break;
#endif
#ifdef FF_MMI_FILEMANAGER
	case  MSL_UCP_IMGTHMB:/*MSL_UCP_IMGTHMB*/
		//Call the mmi cb for imagethumbnail.
		mfw_fm_thmb_mslcb(msl_mmi_ind->message, msl_mmi_ind->appData);
		break;
	case  MSL_UCP_IMGVIEW:/*MSL_UCP_IMGPREVIEW*/
		//Call the mmi cb for magepreview.
		mfw_fm_view_mslcb(msl_mmi_ind->message, msl_mmi_ind->appData);
		break;
#endif
	}

  PFREE(msl_mmi_ind);
}

/*
+------------------------------------------------------------------------------
|  Function     :  Msl_mslil_Callback
+------------------------------------------------------------------------------
|  Description  :  This function should be called by other MSL functions when a callback is to be called
|
|  Parameters   : handle - MSL handle
|			    ucp_type - Use case pipeline type
|			    appData  - application specific data
|			    message - status message
|
|  Return       :  void
|
+------------------------------------------------------------------------------
*/

void Msl_mslil_Callback(void* handle, U32 ucp_type, U32 tCMd, U32 tStatus)
{
#if defined (NEW_FRAME)
	EXTERN T_HANDLE hCommACI;
#else
	EXTERN T_VSI_CHANDLE hCommACI;
#endif

	PALLOC(msl_mmi_ind,MSL_MMI_IND);
      TRACE_FUNCTION ("Msl_mslil_Callback");
	msl_mmi_ind->ucp = ucp_type;
	msl_mmi_ind->handle = (U32)handle;
	msl_mmi_ind->message = tCMd;
	msl_mmi_ind->appData = (U32)tStatus;

#if defined (NEW_FRAME)
	PSENDX(ACI,msl_mmi_ind);
#else
#if defined (_TMS470)
	vsi_c_send("",hCommACI,D2P(msl_mmi_ind),
	        sizeof(T_PRIM_HEADER)+sizeof(T_MSL_MMI_IND));
#else
	PSEND(ACI,msl_mmi_ind);
#endif
#endif

	return;
}

#endif //#if defined(FF_MMI_FILEMANAGER)||defined(FF_MMI_CAMERA_APP)
/* EOF */