telephonyserverplugins/simtsy/src/CSimDataCall.cpp
branchRCL_3
changeset 66 07a122eea281
parent 65 630d2f34d719
equal deleted inserted replaced
65:630d2f34d719 66:07a122eea281
     1 // Copyright (c) 2001-2010 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
    19 
    19 
    20 /**
    20 /**
    21  @file
    21  @file
    22 */
    22 */
    23 
    23 
    24 
       
    25 
       
    26 #include "OstTraceDefinitions.h"
       
    27 #ifdef OST_TRACE_COMPILER_IN_USE
       
    28 #include "CSimDataCallTraces.h"
       
    29 #endif
       
    30 
       
    31 #include <testconfigfileparser.h>
    24 #include <testconfigfileparser.h>
    32 #include "CSimDataCall.h"
    25 #include "CSimDataCall.h"
    33 #include "CSimPhone.h"
    26 #include "CSimPhone.h"
       
    27 #include "Simlog.h"
    34 
    28 
    35 CSimDataCall* CSimDataCall::NewL(CSimLine* aLine,const TDesC& aName, CSimPhone* aPhone)
    29 CSimDataCall* CSimDataCall::NewL(CSimLine* aLine,const TDesC& aName, CSimPhone* aPhone)
    36 /**
    30 /**
    37  * Standard two phase constructor.
    31  * Standard two phase constructor.
    38  *
    32  *
    65  * Retrieves all the pausing duration tags from the config file
    59  * Retrieves all the pausing duration tags from the config file
    66  *
    60  *
    67  * @param aName name of the data call to be constructed
    61  * @param aName name of the data call to be constructed
    68  */
    62  */
    69 	{
    63 	{
    70 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_1, "Starting to parse Data Call config parameters...");
    64 	LOGDATA1("Starting to parse Data Call config parameters...");
    71 
    65 
    72 	iDiallingPause=iLine->CfgFile()->ItemValue(KDiallingPauseDuration,KDefaultDiallingPauseDuration);
    66 	iDiallingPause=iLine->CfgFile()->ItemValue(KDiallingPauseDuration,KDefaultDiallingPauseDuration);
    73 	iConnectingPause=iLine->CfgFile()->ItemValue(KConnectingPauseDuration,KDefaultConnectingPauseDuration);
    67 	iConnectingPause=iLine->CfgFile()->ItemValue(KConnectingPauseDuration,KDefaultConnectingPauseDuration);
    74 	iDisconnectingPause=iLine->CfgFile()->ItemValue(KDisconnectingPauseDuration,KDefaultDisconnectingPauseDuration);
    68 	iDisconnectingPause=iLine->CfgFile()->ItemValue(KDisconnectingPauseDuration,KDefaultDisconnectingPauseDuration);
    75 	iAnswerIncomingPause=iLine->CfgFile()->ItemValue(KAnswerIncomingPauseDuration,KDefaultAnswerIncomingPauseDuration);
    69 	iAnswerIncomingPause=iLine->CfgFile()->ItemValue(KAnswerIncomingPauseDuration,KDefaultAnswerIncomingPauseDuration);
    87 		TUint8 digit = 0;
    81 		TUint8 digit = 0;
    88 		
    82 		
    89 		TInt ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,speedCaps);
    83 		TInt ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,speedCaps);
    90 		if(ret!=KErrNone)
    84 		if(ret!=KErrNone)
    91 			{
    85 			{
    92 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_2, "WARNING - CONFIGURATION FILE PARSING - Reading element SPEEDCAPS returned %d (element no. %d) from tag %s.",ret,0,KDataCallCaps);
    86 			LOGPARSERR("speedCaps",ret,0,&KDataCallCaps);
    93 			}
    87 			}
    94 		else
    88 		else
    95 			if(AsciiToNum(speedCaps, digit)==KErrNone)
    89 			if(AsciiToNum(speedCaps, digit)==KErrNone)
    96 				iMobileCallCaps.iSpeedCaps = digit;
    90 				iMobileCallCaps.iSpeedCaps = digit;
    97 
    91 
    98 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,protocolCaps);
    92 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,protocolCaps);
    99 		if(ret!=KErrNone)
    93 		if(ret!=KErrNone)
   100 			{
    94 			{
   101 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_3, "WARNING - CONFIGURATION FILE PARSING - Reading element PROTOCOLCAPS returned %d (element no. %d) from tag %s.",ret,1,KDataCallCaps);
    95 			LOGPARSERR("protocolCaps",ret,1,&KDataCallCaps);
   102 			}
    96 			}
   103 		else
    97 		else
   104 			if(AsciiToNum(protocolCaps, digit)==KErrNone)
    98 			if(AsciiToNum(protocolCaps, digit)==KErrNone)
   105 				iMobileCallCaps.iProtocolCaps = digit;
    99 				iMobileCallCaps.iProtocolCaps = digit;
   106 
   100 
   107 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,serviceCaps);
   101 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,serviceCaps);
   108 		if(ret!=KErrNone)
   102 		if(ret!=KErrNone)
   109 			{
   103 			{
   110 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_4, "WARNING - CONFIGURATION FILE PARSING - Reading element SERVICECAPS returned %d (element no. %d) from tag %s.",ret,2,KDataCallCaps);
   104 			LOGPARSERR("serviceCaps",ret,2,&KDataCallCaps);
   111 			}
   105 			}
   112 		else
   106 		else
   113 			if(AsciiToNum(serviceCaps, digit)==KErrNone)
   107 			if(AsciiToNum(serviceCaps, digit)==KErrNone)
   114 				iMobileCallCaps.iServiceCaps = digit;
   108 				iMobileCallCaps.iServiceCaps = digit;
   115 
   109 
   116 		
   110 		
   117 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,3,qosCaps);
   111 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,3,qosCaps);
   118 		if(ret!=KErrNone)
   112 		if(ret!=KErrNone)
   119 			{
   113 			{
   120 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_5, "WARNING - CONFIGURATION FILE PARSING - Reading element QOSCAPS returned %d (element no. %d) from tag %s.",ret,3,KDataCallCaps);
   114 			LOGPARSERR("qosCaps",ret,3,&KDataCallCaps);
   121 			}
   115 			}
   122 		else
   116 		else
   123 			if(AsciiToNum(qosCaps, digit)==KErrNone)
   117 			if(AsciiToNum(qosCaps, digit)==KErrNone)
   124 				iMobileCallCaps.iQoSCaps = digit;
   118 				iMobileCallCaps.iQoSCaps = digit;
   125 
   119 
   126 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,4,hscsdSupport);
   120 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,4,hscsdSupport);
   127 		if(ret!=KErrNone)
   121 		if(ret!=KErrNone)
   128 			{
   122 			{
   129 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_6, "WARNING - CONFIGURATION FILE PARSING - Reading element HSCSDSUPPORT returned %d (element no. %d) from tag %s.",ret,4,KDataCallCaps);
   123 			LOGPARSERR("hscsdSupport",ret,4,&KDataCallCaps);
   130 			}
   124 			}
   131 		else
   125 		else
   132 			iMobileCallCaps.iHscsdSupport = hscsdSupport;
   126 			iMobileCallCaps.iHscsdSupport = hscsdSupport;
   133 	
   127 	
   134 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,5,mClass);
   128 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,5,mClass);
   135 		if(ret!=KErrNone)
   129 		if(ret!=KErrNone)
   136 			{
   130 			{
   137 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_7, "WARNING - CONFIGURATION FILE PARSING - Reading element MCLASS returned %d (element no. %d) from tag %s.",ret,5,KDataCallCaps);
   131 			LOGPARSERR("mClass",ret,5,&KDataCallCaps);
   138 			}
   132 			}
   139 		else
   133 		else
   140 			iMobileCallCaps.iMClass = mClass;
   134 			iMobileCallCaps.iMClass = mClass;
   141 
   135 
   142 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,6,MaxRxTimeslots);
   136 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,6,MaxRxTimeslots);
   143 		if(ret!=KErrNone)
   137 		if(ret!=KErrNone)
   144 			{
   138 			{
   145 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_8, "WARNING - CONFIGURATION FILE PARSING - Reading element MAXRXTIMESLOTS returned %d (element no. %d) from tag %s.",ret,6,KDataCallCaps);
   139 			LOGPARSERR("MaxRxTimeslots",ret,6,&KDataCallCaps);
   146 			}
   140 			}
   147 		else
   141 		else
   148 			iMobileCallCaps.iMaxRxTimeSlots = MaxRxTimeslots;
   142 			iMobileCallCaps.iMaxRxTimeSlots = MaxRxTimeslots;
   149 
   143 
   150 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,7,MaxTxTimeslots);
   144 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,7,MaxTxTimeslots);
   151 		if(ret!=KErrNone)
   145 		if(ret!=KErrNone)
   152 			{
   146 			{
   153 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_9, "WARNING - CONFIGURATION FILE PARSING - Reading element MAXTXTIMESLOTS returned %d (element no. %d) from tag %s.",ret,7,KDataCallCaps);
   147 			LOGPARSERR("MaxTxTimeslots",ret,7,&KDataCallCaps);
   154 			}
   148 			}
   155 		else
   149 		else
   156 			iMobileCallCaps.iMaxTxTimeSlots = MaxTxTimeslots;
   150 			iMobileCallCaps.iMaxTxTimeSlots = MaxTxTimeslots;
   157 
   151 
   158 		
   152 		
   159 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,8,totalRxTxTimeslots);
   153 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,8,totalRxTxTimeslots);
   160 		if(ret!=KErrNone)
   154 		if(ret!=KErrNone)
   161 			{
   155 			{
   162 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_10, "WARNING - CONFIGURATION FILE PARSING - Reading element TOTALRXTXTIMESLOTS returned %d (element no. %d) from tag %s.",ret,8,KDataCallCaps);
   156 			LOGPARSERR("totalRxTxTimeslots",ret,8,&KDataCallCaps);
   163 			}
   157 			}
   164 		else
   158 		else
   165 			iMobileCallCaps.iTotalRxTxTimeSlots = totalRxTxTimeslots;
   159 			iMobileCallCaps.iTotalRxTxTimeSlots = totalRxTxTimeslots;
   166 
   160 
   167 		
   161 		
   168 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,9,codingCaps);
   162 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,9,codingCaps);
   169 		if(ret!=KErrNone)
   163 		if(ret!=KErrNone)
   170 			{
   164 			{
   171 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_11, "WARNING - CONFIGURATION FILE PARSING - Reading element CODINGCAPS returned %d (element no. %d) from tag %s.",ret,9,KDataCallCaps);
   165 			LOGPARSERR("codingCaps",ret,9,&KDataCallCaps);
   172 			}
   166 			}
   173 		else
   167 		else
   174 			if(AsciiToNum(codingCaps, digit)==KErrNone)
   168 			if(AsciiToNum(codingCaps, digit)==KErrNone)
   175 				iMobileCallCaps.iCodingCaps = digit;
   169 				iMobileCallCaps.iCodingCaps = digit;
   176 
   170 
   177 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,10,asymmetryCaps);
   171 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,10,asymmetryCaps);
   178 		if(ret!=KErrNone)
   172 		if(ret!=KErrNone)
   179 			{
   173 			{
   180 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_12, "WARNING - CONFIGURATION FILE PARSING - Reading element ASYMMETRYCAPS returned %d (element no. %d) from tag %s.",ret,10,KDataCallCaps);
   174 			LOGPARSERR("asymmetryCaps",ret,10,&KDataCallCaps);
   181 			}
   175 			}
   182 		else
   176 		else
   183 			if(AsciiToNum(asymmetryCaps, digit)==KErrNone)
   177 			if(AsciiToNum(asymmetryCaps, digit)==KErrNone)
   184 				iMobileCallCaps.iAsymmetryCaps = digit;
   178 				iMobileCallCaps.iAsymmetryCaps = digit;
   185 
   179 
   186 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,11,userInitUpgrade);
   180 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,11,userInitUpgrade);
   187 		if(ret!=KErrNone)
   181 		if(ret!=KErrNone)
   188 			{
   182 			{
   189 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_13, "WARNING - CONFIGURATION FILE PARSING - Reading element USERINITUPGRADE returned %d (element no. %d) from tag %s.",ret,11,KDataCallCaps);
   183 			LOGPARSERR("userInitUpgrade",ret,11,&KDataCallCaps);
   190 			}
   184 			}
   191 		else
   185 		else
   192 			iMobileCallCaps.iUserInitUpgrade = userInitUpgrade;
   186 			iMobileCallCaps.iUserInitUpgrade = userInitUpgrade;
   193 
   187 
   194 		
   188 		
   195 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,10,rlpVersionCaps);
   189 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,10,rlpVersionCaps);
   196 		if(ret!=KErrNone)
   190 		if(ret!=KErrNone)
   197 			{
   191 			{
   198 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_14, "WARNING - CONFIGURATION FILE PARSING - Reading element RLPVERSIONCAPS returned %d (element no. %d) from tag %s.",ret,10,KDataCallCaps);
   192 			LOGPARSERR("rlpVersionCaps",ret,10,&KDataCallCaps);
   199 			}
   193 			}
   200 		else
   194 		else
   201 			if(AsciiToNum(rlpVersionCaps, digit)==KErrNone)
   195 			if(AsciiToNum(rlpVersionCaps, digit)==KErrNone)
   202 				iMobileCallCaps.iRLPVersionCaps = digit;
   196 				iMobileCallCaps.iRLPVersionCaps = digit;
   203 
   197 
   204 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,10,v42bisCaps);
   198 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,10,v42bisCaps);
   205 		if(ret!=KErrNone)
   199 		if(ret!=KErrNone)
   206 			{
   200 			{
   207 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_15, "WARNING - CONFIGURATION FILE PARSING - Reading element V42BISCAPS returned %d (element no. %d) from tag %s.",ret,10,KDataCallCaps);
   201 			LOGPARSERR("v42bisCaps",ret,10,&KDataCallCaps);
   208 			}
   202 			}
   209 		else
   203 		else
   210 			if(AsciiToNum(v42bisCaps, digit)==KErrNone)
   204 			if(AsciiToNum(v42bisCaps, digit)==KErrNone)
   211 				iMobileCallCaps.iV42bisCaps  = digit;
   205 				iMobileCallCaps.iV42bisCaps  = digit;
   212 		}
   206 		}
   245 			TInt iT1Max,iT1Min,iN2Max,iN2Min,iT4Max,iT4Min;
   239 			TInt iT1Max,iT1Min,iN2Max,iN2Min,iT4Max,iT4Min;
   246 
   240 
   247 			TInt ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,iRlpVersion);
   241 			TInt ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,iRlpVersion);
   248 			if(ret!=KErrNone)
   242 			if(ret!=KErrNone)
   249 				{
   243 				{
   250 				OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_16, "WARNING - CONFIGURATION FILE PARSING - Reading element IRLPVERSION returned %d (element no. %d) from tag %s.",ret,0,KDataRLPparams);
   244 				LOGPARSERR("iRlpVersion",ret,0,&KDataRLPparams);
   251 				}
   245 				}
   252 			else
   246 			else
   253 				iMobileCallRLPItem.iRlpVersion = iRlpVersion;
   247 				iMobileCallRLPItem.iRlpVersion = iRlpVersion;
   254 			
   248 			
   255 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,iIWSMax);
   249 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,iIWSMax);
   256 			if(ret!=KErrNone)
   250 			if(ret!=KErrNone)
   257 				{
   251 				{
   258 				OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_17, "WARNING - CONFIGURATION FILE PARSING - Reading element IIWSMAX returned %d (element no. %d) from tag %s.",ret,0,KDataRLPparams);
   252 				LOGPARSERR("iIWSMax",ret,0,&KDataRLPparams);
   259 				}
   253 				}
   260 			else
   254 			else
   261 				iMobileCallRLPItem.iMobileCallRLP.iIWSMax = iIWSMax;
   255 				iMobileCallRLPItem.iMobileCallRLP.iIWSMax = iIWSMax;
   262 			
   256 			
   263 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,iIWSMin);
   257 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,iIWSMin);
   264 			if(ret!=KErrNone)
   258 			if(ret!=KErrNone)
   265 				{
   259 				{
   266 				OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_18, "WARNING - CONFIGURATION FILE PARSING - Reading element IIWSMIN returned %d (element no. %d) from tag %s.",ret,1,KDataRLPparams);
   260 				LOGPARSERR("iIWSMin",ret,1,&KDataRLPparams);
   267 				}
   261 				}
   268 			else
   262 			else
   269 				iMobileCallRLPItem.iMobileCallRLP.iIWSMin = iIWSMin;
   263 				iMobileCallRLPItem.iMobileCallRLP.iIWSMin = iIWSMin;
   270 
   264 
   271 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,iMWSMax);
   265 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,iMWSMax);
   272 			if(ret!=KErrNone)
   266 			if(ret!=KErrNone)
   273 				{
   267 				{
   274 				OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_19, "WARNING - CONFIGURATION FILE PARSING - Reading element IMWSMAX returned %d (element no. %d) from tag %s.",ret,2,KDataRLPparams);
   268 				LOGPARSERR("iMWSMax",ret,2,&KDataRLPparams);
   275 				}
   269 				}
   276 			else
   270 			else
   277 				iMobileCallRLPItem.iMobileCallRLP.iMWSMax = iMWSMax;
   271 				iMobileCallRLPItem.iMobileCallRLP.iMWSMax = iMWSMax;
   278 			
   272 			
   279 
   273 
   280 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,3,iMWSMin);
   274 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,3,iMWSMin);
   281 			if(ret!=KErrNone)
   275 			if(ret!=KErrNone)
   282 				{
   276 				{
   283 				OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_20, "WARNING - CONFIGURATION FILE PARSING - Reading element IMWSMIN returned %d (element no. %d) from tag %s.",ret,3,KDataRLPparams);
   277 				LOGPARSERR("iMWSMin",ret,3,&KDataRLPparams);
   284 				}
   278 				}
   285 			else
   279 			else
   286 				iMobileCallRLPItem.iMobileCallRLP.iMWSMin = iMWSMin;
   280 				iMobileCallRLPItem.iMobileCallRLP.iMWSMin = iMWSMin;
   287 			
   281 			
   288 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,4,iT1Max);
   282 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,4,iT1Max);
   289 			if(ret!=KErrNone)
   283 			if(ret!=KErrNone)
   290 				{
   284 				{
   291 				OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_21, "WARNING - CONFIGURATION FILE PARSING - Reading element IT1MAX returned %d (element no. %d) from tag %s.",ret,4,KDataRLPparams);
   285 				LOGPARSERR("iT1Max",ret,4,&KDataRLPparams);
   292 				}
   286 				}
   293 			else
   287 			else
   294 				iMobileCallRLPItem.iMobileCallRLP.iT1Max = iT1Max;
   288 				iMobileCallRLPItem.iMobileCallRLP.iT1Max = iT1Max;
   295 
   289 
   296 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,5,iT1Min);
   290 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,5,iT1Min);
   297 			if(ret!=KErrNone)
   291 			if(ret!=KErrNone)
   298 				{
   292 				{
   299 				OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_22, "WARNING - CONFIGURATION FILE PARSING - Reading element IT1MIN returned %d (element no. %d) from tag %s.",ret,5,KDataRLPparams);
   293 				LOGPARSERR("iT1Min",ret,5,&KDataRLPparams);
   300 				}
   294 				}
   301 			else
   295 			else
   302 				iMobileCallRLPItem.iMobileCallRLP.iT1Min = iT1Min;
   296 				iMobileCallRLPItem.iMobileCallRLP.iT1Min = iT1Min;
   303 
   297 
   304 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,6,iN2Max);
   298 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,6,iN2Max);
   305 			if(ret!=KErrNone)
   299 			if(ret!=KErrNone)
   306 				{
   300 				{
   307 				OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_23, "WARNING - CONFIGURATION FILE PARSING - Reading element IN2MAX returned %d (element no. %d) from tag %s.",ret,6,KDataRLPparams);
   301 				LOGPARSERR("iN2Max",ret,6,&KDataRLPparams);
   308 				}
   302 				}
   309 			else
   303 			else
   310 				iMobileCallRLPItem.iMobileCallRLP.iN2Max = iN2Max;
   304 				iMobileCallRLPItem.iMobileCallRLP.iN2Max = iN2Max;
   311 
   305 
   312 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,7,iN2Min);
   306 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,7,iN2Min);
   313 			if(ret!=KErrNone)
   307 			if(ret!=KErrNone)
   314 				{
   308 				{
   315 				OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_24, "WARNING - CONFIGURATION FILE PARSING - Reading element IN2MIN returned %d (element no. %d) from tag %s.",ret,7,KDataRLPparams);
   309 				LOGPARSERR("iN2Min",ret,7,&KDataRLPparams);
   316 				}
   310 				}
   317 			else
   311 			else
   318 				iMobileCallRLPItem.iMobileCallRLP.iN2Min = iN2Min;
   312 				iMobileCallRLPItem.iMobileCallRLP.iN2Min = iN2Min;
   319 
   313 
   320 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,8,iT4Max);
   314 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,8,iT4Max);
   321 			if(ret!=KErrNone)
   315 			if(ret!=KErrNone)
   322 				{
   316 				{
   323 				OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_25, "WARNING - CONFIGURATION FILE PARSING - Reading element IT4MAX returned %d (element no. %d) from tag %s.",ret,8,KDataRLPparams);
   317 				LOGPARSERR("iT4Max",ret,8,&KDataRLPparams);
   324 				}
   318 				}
   325 			else
   319 			else
   326 				iMobileCallRLPItem.iMobileCallRLP.iT4Max = iT4Max;
   320 				iMobileCallRLPItem.iMobileCallRLP.iT4Max = iT4Max;
   327 
   321 
   328 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,9,iT4Min);
   322 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,9,iT4Min);
   329 			if(ret!=KErrNone)
   323 			if(ret!=KErrNone)
   330 				{
   324 				{
   331 				OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_26, "WARNING - CONFIGURATION FILE PARSING - Reading element IT4MIN returned %d (element no. %d) from tag %s.",ret,9,KDataRLPparams);
   325 				LOGPARSERR("iT4Min",ret,9,&KDataRLPparams);
   332 				}
   326 				}
   333 			else
   327 			else
   334 				iMobileCallRLPItem.iMobileCallRLP.iT4Min = iT4Min;
   328 				iMobileCallRLPItem.iMobileCallRLP.iT4Min = iT4Min;
   335 			
   329 			
   336 			iMobileCallRLPList->AppendL(iMobileCallRLPItem);		
   330 			iMobileCallRLPList->AppendL(iMobileCallRLPItem);		
   361 		TUint8 digit=0;
   355 		TUint8 digit=0;
   362 	
   356 	
   363 		TInt ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,iAiur);
   357 		TInt ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,iAiur);
   364 		if(ret!=KErrNone)
   358 		if(ret!=KErrNone)
   365 			{
   359 			{
   366 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_27, "WARNING - CONFIGURATION FILE PARSING - Reading element IAIUR returned %d (element no. %d) from tag %s.",ret,0,KDynamicHSCSDInfo);
   360 			LOGPARSERR("iAiur",ret,0,&KDynamicHSCSDInfo);
   367 			}
   361 			}
   368 		else
   362 		else
   369 			if(AsciiToNum(iAiur, digit)==KErrNone)
   363 			if(AsciiToNum(iAiur, digit)==KErrNone)
   370 				iHscsdInfo.iAiur = (RMobileCall::TMobileCallAiur) digit;
   364 				iHscsdInfo.iAiur = (RMobileCall::TMobileCallAiur) digit;
   371 		
   365 		
   372 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,iRxTimeSlots);
   366 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,iRxTimeSlots);
   373 		if(ret!=KErrNone)
   367 		if(ret!=KErrNone)
   374 			{
   368 			{
   375 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_28, "WARNING - CONFIGURATION FILE PARSING - Reading element IRXTIMESLOTS returned %d (element no. %d) from tag %s.",ret,1,KDynamicHSCSDInfo);
   369 			LOGPARSERR("iRxTimeSlots",ret,1,&KDynamicHSCSDInfo);
   376 			}
   370 			}
   377 		else
   371 		else
   378 			iHscsdInfo.iRxTimeSlots = iRxTimeSlots;
   372 			iHscsdInfo.iRxTimeSlots = iRxTimeSlots;
   379 		
   373 		
   380 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,iTxTimeSlots);
   374 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,iTxTimeSlots);
   381 		if(ret!=KErrNone)
   375 		if(ret!=KErrNone)
   382 			{
   376 			{
   383 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_29, "WARNING - CONFIGURATION FILE PARSING - Reading element ITXTIMESLOTS returned %d (element no. %d) from tag %s.",ret,2,KDynamicHSCSDInfo);
   377 			LOGPARSERR("iTxTimeSlots",ret,2,&KDynamicHSCSDInfo);
   384 			}
   378 			}
   385 		else
   379 		else
   386 			iHscsdInfo.iTxTimeSlots = iTxTimeSlots;
   380 			iHscsdInfo.iTxTimeSlots = iTxTimeSlots;
   387 
   381 
   388 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,3,iCodings);
   382 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,3,iCodings);
   389 		if(ret!=KErrNone)
   383 		if(ret!=KErrNone)
   390 			{
   384 			{
   391 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_30, "WARNING - CONFIGURATION FILE PARSING - Reading element ICODINGS returned %d (element no. %d) from tag %s.",ret,3,KDynamicHSCSDInfo);
   385 			LOGPARSERR("iCodings",ret,3,&KDynamicHSCSDInfo);
   392 			}
   386 			}
   393 		else
   387 		else
   394 			if(AsciiToNum(iCodings, digit)==KErrNone)
   388 			if(AsciiToNum(iCodings, digit)==KErrNone)
   395 				iHscsdInfo.iCodings = (RMobileCall::TMobileCallTchCoding) digit;
   389 				iHscsdInfo.iCodings = (RMobileCall::TMobileCallTchCoding) digit;
   396 	}
   390 	}
   407 		{
   401 		{
   408 		TPtrC8 portName,csyName;
   402 		TPtrC8 portName,csyName;
   409 		TInt err=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,csyName);	// The 3rd parameter (0) represents the index of the variable on the config file line
   403 		TInt err=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,csyName);	// The 3rd parameter (0) represents the index of the variable on the config file line
   410 		if (err!=KErrNone)
   404 		if (err!=KErrNone)
   411 			{
   405 			{
   412 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_31, "WARNING - CONFIGURATION FILE PARSING - Reading element CSYNAME returned %d (element no. %d) from tag %s.",err,0,KCommSetup);
   406 			LOGPARSERR("csyName",err,0,&KCommSetup);
   413 			iCsyName.Copy(KDefaultCsyName);
   407 			iCsyName.Copy(KDefaultCsyName);
   414 			}
   408 			}
   415 		else
   409 		else
   416 			iCsyName.Copy(csyName);
   410 			iCsyName.Copy(csyName);
   417 
   411 
   418 		err=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,portName);		// The 3rd parameter (1) represents the index of the variable on the config file line
   412 		err=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,portName);		// The 3rd parameter (1) represents the index of the variable on the config file line
   419 		if (err!=KErrNone)
   413 		if (err!=KErrNone)
   420 			{
   414 			{
   421 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_32, "WARNING - CONFIGURATION FILE PARSING - Reading element PORTNAME returned %d (element no. %d) from tag %s.",err,1,KCommSetup);
   415 			LOGPARSERR("portName",err,1,&KCommSetup);
   422 			iPortName.Copy(KDefaultPortName);
   416 			iPortName.Copy(KDefaultPortName);
   423 			}
   417 			}
   424 		else
   418 		else
   425 			iPortName.Copy(portName);
   419 			iPortName.Copy(portName);
   426 
   420 
   427 		TInt dataRate,handshake;
   421 		TInt dataRate,handshake;
   428 		err=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,dataRate);		// The 3rd parameter (2) represents the index of the variable on the config file line
   422 		err=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,dataRate);		// The 3rd parameter (2) represents the index of the variable on the config file line
   429 		if (err!=KErrNone)
   423 		if (err!=KErrNone)
   430 			{
   424 			{
   431 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_33, "WARNING - CONFIGURATION FILE PARSING - Reading element DATARATE returned %d (element no. %d) from tag %s.",err,2,KCommSetup);
   425 			LOGPARSERR("dataRate",err,2,&KCommSetup);
   432 			iConfig.iRate=KDefaultCommPortRate;
   426 			iConfig.iRate=KDefaultCommPortRate;
   433 			}
   427 			}
   434 		else
   428 		else
   435 			iConfig.iRate=(TBps)dataRate;
   429 			iConfig.iRate=(TBps)dataRate;
   436 
   430 
   437 		err=CTestConfig::GetElement(item->Value(),KStdDelimiter,3,handshake);		// The 3rd parameter (3) represents the index of the variable on the config file line
   431 		err=CTestConfig::GetElement(item->Value(),KStdDelimiter,3,handshake);		// The 3rd parameter (3) represents the index of the variable on the config file line
   438 		if (err!=KErrNone)
   432 		if (err!=KErrNone)
   439 			{
   433 			{
   440 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_34, "WARNING - CONFIGURATION FILE PARSING - Reading element HANDSHAKE returned %d (element no. %d) from tag %s.",err,3,KCommSetup);
   434 			LOGPARSERR("handshake",err,3,&KCommSetup);
   441 			iConfig.iHandshake=KDefaultHandshake;
   435 			iConfig.iHandshake=KDefaultHandshake;
   442 			}
   436 			}
   443 		else
   437 		else
   444 			iConfig.iHandshake=(TUint)handshake;
   438 			iConfig.iHandshake=(TUint)handshake;
   445 		}
   439 		}
   457 		{
   451 		{
   458 		TInt bearerCaps,bearerSpeed;
   452 		TInt bearerCaps,bearerSpeed;
   459 		TInt err=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,bearerCaps);	// The 3rd parameter (0) represents the index of the variable on the config file line
   453 		TInt err=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,bearerCaps);	// The 3rd parameter (0) represents the index of the variable on the config file line
   460 		if (err!=KErrNone)
   454 		if (err!=KErrNone)
   461 			{
   455 			{
   462 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_35, "WARNING - CONFIGURATION FILE PARSING - Reading element BEARERCAPS returned %d (element no. %d) from tag %s.",err,0,KBearerService);
   456 			LOGPARSERR("bearerCaps",err,0,&KBearerService);
   463 			iBearerService.iBearerCaps=KDefaultBearerCaps;
   457 			iBearerService.iBearerCaps=KDefaultBearerCaps;
   464 			}
   458 			}
   465 		else
   459 		else
   466 			iBearerService.iBearerCaps=bearerCaps;
   460 			iBearerService.iBearerCaps=bearerCaps;
   467 		
   461 		
   468 		err=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,bearerSpeed);		// The 3rd parameter (1) represents the index of the variable on the config file line
   462 		err=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,bearerSpeed);		// The 3rd parameter (1) represents the index of the variable on the config file line
   469 		if (err!=KErrNone)
   463 		if (err!=KErrNone)
   470 			{
   464 			{
   471 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_36, "WARNING - CONFIGURATION FILE PARSING - Reading element BEARERSPEED returned %d (element no. %d) from tag %s.",err,1,KBearerService);
   465 			LOGPARSERR("bearerSpeed",err,1,&KBearerService);
   472 			iBearerService.iBearerSpeed=KDefaultBearerSpeed;
   466 			iBearerService.iBearerSpeed=KDefaultBearerSpeed;
   473 			}
   467 			}
   474 		else
   468 		else
   475 			iBearerService.iBearerSpeed=(RCall::TCallBearerSpeed)bearerSpeed;
   469 			iBearerService.iBearerSpeed=(RCall::TCallBearerSpeed)bearerSpeed;
   476 		
   470 		
   496  	if (item)
   490  	if (item)
   497  		{
   491  		{
   498  		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,delay);
   492  		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,delay);
   499  		if(ret!=KErrNone)
   493  		if(ret!=KErrNone)
   500  			{
   494  			{
   501  			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_37, "WARNING - CONFIGURATION FILE PARSING - Reading element DELAY returned %d (element no. %d) from tag %s.",ret,0,KNotifyRemotePartyInfo);
   495  			LOGPARSERR("delay",ret,0,&KNotifyRemotePartyInfo);
   502  			}
   496  			}
   503  		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,callingname);
   497  		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,callingname);
   504  		if(ret!=KErrNone)
   498  		if(ret!=KErrNone)
   505  			{
   499  			{
   506  			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_38, "WARNING - CONFIGURATION FILE PARSING - Reading element CALLINGNAME returned %d (element no. %d) from tag %s.",ret,1,KNotifyRemotePartyInfo);
   500  			LOGPARSERR("callingname",ret,1,&KNotifyRemotePartyInfo);
   507  			}
   501  			}
   508  		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,remotenumber);
   502  		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,remotenumber);
   509  		if(ret!=KErrNone)
   503  		if(ret!=KErrNone)
   510  			{
   504  			{
   511  			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_39, "WARNING - CONFIGURATION FILE PARSING - Reading element REMOTENUMBER returned %d (element no. %d) from tag %s.",ret,2,KNotifyRemotePartyInfo);
   505  			LOGPARSERR("remotenumber",ret,2,&KNotifyRemotePartyInfo);
   512  			}
   506  			}
   513  		
   507  		
   514  		iNotifyRemotePartyInfoTimer->iDelay = delay;
   508  		iNotifyRemotePartyInfoTimer->iDelay = delay;
   515  		iNotifyRemotePartyInfoTimer->iRemotePartyInfoV1.iDirection = RMobileCall::EDirectionUnknown;
   509  		iNotifyRemotePartyInfoTimer->iRemotePartyInfoV1.iDirection = RMobileCall::EDirectionUnknown;
   516  		iNotifyRemotePartyInfoTimer->iRemotePartyInfoV1.iCallingName.Copy(callingname);
   510  		iNotifyRemotePartyInfoTimer->iRemotePartyInfoV1.iCallingName.Copy(callingname);
   522  	else
   516  	else
   523  		{
   517  		{
   524  		iNotifyRemotePartyInfoTimer->iRemotePartyInfoV1.iRemoteIdStatus = RMobileCall::ERemoteIdentityUnknown;
   518  		iNotifyRemotePartyInfoTimer->iRemotePartyInfoV1.iRemoteIdStatus = RMobileCall::ERemoteIdentityUnknown;
   525  		}
   519  		}
   526 	
   520 	
   527 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CONSTRUCTL_40, "...Finished parsing Data Call config parameters...");
   521 	LOGDATA1("...Finished parsing Data Call config parameters...");
   528 	}
   522 	}
   529 
   523 
   530 CSimDataCall::~CSimDataCall()
   524 CSimDataCall::~CSimDataCall()
   531 /**
   525 /**
   532  * Destroy all the objects constructed.
   526  * Destroy all the objects constructed.
   557  */
   551  */
   558 	{
   552 	{
   559 	TAny* dataPtr=aPackage.Ptr1();
   553 	TAny* dataPtr=aPackage.Ptr1();
   560 	TAny* dataPtr2=aPackage.Ptr2();
   554 	TAny* dataPtr2=aPackage.Ptr2();
   561 
   555 
   562 	OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_EXTFUNC_1, "CSimDataCall::ExtFunc: IPC Number is %d",aIpc);
   556 	LOGDATA2("CSimDataCall::ExtFunc: IPC Number is %d",aIpc);
   563 	// The request data has to extracted from TDataPackage and the TAny* pointers have to
   557 	// The request data has to extracted from TDataPackage and the TAny* pointers have to
   564 	// be "cast" to the expected request data type
   558 	// be "cast" to the expected request data type
   565 
   559 
   566 	switch (aIpc)
   560 	switch (aIpc)
   567 		{
   561 		{
   613 	
   607 	
   614 	case EMobileCallNotifyRemotePartyInfoChange:
   608 	case EMobileCallNotifyRemotePartyInfoChange:
   615  		return NotifyRemotePartyInfoChange(aTsyReqHandle, aPackage.Des1n());
   609  		return NotifyRemotePartyInfoChange(aTsyReqHandle, aPackage.Des1n());
   616 
   610 
   617 	default:
   611 	default:
   618 		OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_EXTFUNC_2, "CSimDataCall::ExtFunc: Unsupported IPC detected - number %d",aIpc);
   612 		LOGDATA2("CSimDataCall::ExtFunc: Unsupported IPC detected - number %d",aIpc);
   619 		break;
   613 		break;
   620 		}
   614 		}
   621 
   615 
   622 	return KErrNotSupported;
   616 	return KErrNotSupported;
   623 	}
   617 	}
   655 	
   649 	
   656 	case EMobileCallNotifyRemotePartyInfoChange:
   650 	case EMobileCallNotifyRemotePartyInfoChange:
   657  		return NotifyRemotePartyInfoChangeCancel();
   651  		return NotifyRemotePartyInfoChangeCancel();
   658 
   652 
   659 	default:
   653 	default:
   660 		OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_CANCELSERVICE_1, "CSimDataCall::CancelService: No match for IPC, defering to base function");
   654 		LOGDATA1("CSimDataCall::CancelService: No match for IPC, defering to base function");
   661 		break;
   655 		break;
   662 		}
   656 		}
   663 	return CCallBase::CancelService(aIpc,aTsyReqHandle);
   657 	return CCallBase::CancelService(aIpc,aTsyReqHandle);
   664 	}
   658 	}
   665 
   659 
   671  * @param aCallParams  the call parameters
   665  * @param aCallParams  the call parameters
   672  * @param aTelNumber The telephone number to dial
   666  * @param aTelNumber The telephone number to dial
   673  * @return KErrNone
   667  * @return KErrNone
   674  */
   668  */
   675 	{
   669 	{
   676 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_DIAL_1, ">>CSimDataCall::Dial");
   670 	LOGDATA1(">>CSimDataCall::Dial");
   677 	iDialRequestHandle=aTsyReqHandle;
   671 	iDialRequestHandle=aTsyReqHandle;
   678 	PopulateCallParams(aCallParams);
   672 	PopulateCallParams(aCallParams);
   679 
   673 
   680 	TInt err=ActionEvent(ECallEventDial,KErrNone);
   674 	TInt err=ActionEvent(ECallEventDial,KErrNone);
   681 	if(err!=KErrNone)
   675 	if(err!=KErrNone)
   682 		ReqCompleted(aTsyReqHandle,err);
   676 		ReqCompleted(aTsyReqHandle,err);
   683 
   677 
   684 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_DIAL_2, "<<CSimDataCall::Dial");
   678 	LOGDATA1("<<CSimDataCall::Dial");
   685 	return KErrNone;
   679 	return KErrNone;
   686 	}
   680 	}
   687 
   681 
   688 TInt CSimDataCall::DialCancel(const TTsyReqHandle /*aTsyReqHandle*/)
   682 TInt CSimDataCall::DialCancel(const TTsyReqHandle /*aTsyReqHandle*/)
   689 /**
   683 /**
   691 *
   685 *
   692 * @param aTsyReqHandle
   686 * @param aTsyReqHandle
   693 * @return KErrNone if successfully cancelled
   687 * @return KErrNone if successfully cancelled
   694 */
   688 */
   695 	{
   689 	{
   696 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_DIALCANCEL_1, ">>CSimDataCall::DialCancel");
   690 	LOGDATA1(">>CSimDataCall::DialCancel");
   697 	switch(iState)
   691 	switch(iState)
   698 		{
   692 		{
   699 	case RMobileCall::EStatusIdle:
   693 	case RMobileCall::EStatusIdle:
   700 	case RMobileCall::EStatusConnected:
   694 	case RMobileCall::EStatusConnected:
   701 		SimPanic(EIllegalCancelRequest);		// A DialCancel should never reach the TSY in this state.
   695 		SimPanic(EIllegalCancelRequest);		// A DialCancel should never reach the TSY in this state.
   717 			ReqCompleted(iDialRequestHandle, KErrCancel);
   711 			ReqCompleted(iDialRequestHandle, KErrCancel);
   718 			}
   712 			}
   719 		break;
   713 		break;
   720 
   714 
   721 	default:
   715 	default:
   722 		OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_DIALCANCEL_2, "CSimDataCall::DialCancel: No action taken - state: %d",iState);
   716 		LOGDATA2("CSimDataCall::DialCancel: No action taken - state: %d",iState);
   723 		break;
   717 		break;
   724 		}
   718 		}
   725 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_DIALCANCEL_3, "<<CSimDataCall::DialCancel");
   719 	LOGDATA1("<<CSimDataCall::DialCancel");
   726 	return KErrNone;
   720 	return KErrNone;
   727 	}
   721 	}
   728 
   722 
   729 TInt CSimDataCall::AnswerIncomingCall(const TTsyReqHandle aTsyReqHandle,const TDesC8* aCallParams)
   723 TInt CSimDataCall::AnswerIncomingCall(const TTsyReqHandle aTsyReqHandle,const TDesC8* aCallParams)
   730 /**
   724 /**
   735 * @param aTsyReqHandle
   729 * @param aTsyReqHandle
   736 * @param aCallParams  the call parameters
   730 * @param aCallParams  the call parameters
   737 * @return KErrNone
   731 * @return KErrNone
   738 */
   732 */
   739 	{
   733 	{
   740 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_ANSWERINCOMINGCALL_1, ">>CSimDataCall::AnswerIncomingCall");
   734 	LOGDATA1(">>CSimDataCall::AnswerIncomingCall");
   741 	TInt err=iLine->SetAutoAnswerCallObject(this);
   735 	TInt err=iLine->SetAutoAnswerCallObject(this);
   742 	if(err!=KErrNone)
   736 	if(err!=KErrNone)
   743 		{
   737 		{
   744 		ReqCompleted(aTsyReqHandle,err);
   738 		ReqCompleted(aTsyReqHandle,err);
   745 		return KErrNone;
   739 		return KErrNone;
   758 		if(ret == KErrNone)
   752 		if(ret == KErrNone)
   759 			{
   753 			{
   760 			ret = ActionEvent(ECallEventAnswerIncoming,KErrNone);	
   754 			ret = ActionEvent(ECallEventAnswerIncoming,KErrNone);	
   761 			}
   755 			}
   762 		}
   756 		}
   763 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_ANSWERINCOMINGCALL_2, "<<CSimDataCall::AnswerIncomingCall");
   757 	LOGDATA1("<<CSimDataCall::AnswerIncomingCall");
   764 	return ret;
   758 	return ret;
   765 	}
   759 	}
   766 
   760 
   767 TInt CSimDataCall::AnswerIncomingCallCancel(const TTsyReqHandle /*aTsyReqHandle*/)
   761 TInt CSimDataCall::AnswerIncomingCallCancel(const TTsyReqHandle /*aTsyReqHandle*/)
   768 /**
   762 /**
   770 *
   764 *
   771 * @param aTsyReqHandle
   765 * @param aTsyReqHandle
   772 * @return KErrNone if successfully cancelled
   766 * @return KErrNone if successfully cancelled
   773 */
   767 */
   774 	{
   768 	{
   775 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_ANSWERINCOMINGCALLCANCEL_1, ">>CSimDataCall::AnswerIncomingCallCancel");
   769 	LOGDATA1(">>CSimDataCall::AnswerIncomingCallCancel");
   776 	if(iAnswerIncomingCall.iNotifyPending)
   770 	if(iAnswerIncomingCall.iNotifyPending)
   777 		{
   771 		{
   778 		iAnswerIncomingCall.iNotifyPending=EFalse;
   772 		iAnswerIncomingCall.iNotifyPending=EFalse;
   779 		iLine->ResetAutoAnswerCallObject(this);
   773 		iLine->ResetAutoAnswerCallObject(this);
   780 		ReqCompleted(iAnswerIncomingCall.iNotifyHandle,KErrCancel);
   774 		ReqCompleted(iAnswerIncomingCall.iNotifyHandle,KErrCancel);
   781 		}
   775 		}
   782 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_ANSWERINCOMINGCALLCANCEL_2, "<<CSimDataCall::AnswerIncomingCallCancel");
   776 	LOGDATA1("<<CSimDataCall::AnswerIncomingCallCancel");
   783 	return KErrNone;
   777 	return KErrNone;
   784 	}
   778 	}
   785 
   779 
   786 TInt CSimDataCall::Connect(const TTsyReqHandle aTsyReqHandle,const TDesC8* /*aCallParams*/)
   780 TInt CSimDataCall::Connect(const TTsyReqHandle aTsyReqHandle,const TDesC8* /*aCallParams*/)
   787 	{
   781 	{
   801 *
   795 *
   802 * @param aTsyReqHandle
   796 * @param aTsyReqHandle
   803 * @return KErrNone
   797 * @return KErrNone
   804 */
   798 */
   805 	{
   799 	{
   806 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_HANGUP_1, ">>CSimDataCall::HangUp");
   800 	LOGDATA1(">>CSimDataCall::HangUp");
   807 	iHangUpRequestHandle=aTsyReqHandle;
   801 	iHangUpRequestHandle=aTsyReqHandle;
   808 	TInt err=ActionEvent(ECallEventHangUp,KErrNone);
   802 	TInt err=ActionEvent(ECallEventHangUp,KErrNone);
   809 	if(err!=KErrNone)
   803 	if(err!=KErrNone)
   810 		ReqCompleted(aTsyReqHandle,err);
   804 		ReqCompleted(aTsyReqHandle,err);
   811 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_HANGUP_2, "<<CSimDataCall::HangUp");
   805 	LOGDATA1("<<CSimDataCall::HangUp");
   812 	return KErrNone;
   806 	return KErrNone;
   813 	}
   807 	}
   814 
   808 
   815 TInt CSimDataCall::HangUpCancel(const TTsyReqHandle /*aTsyReqHandle*/)
   809 TInt CSimDataCall::HangUpCancel(const TTsyReqHandle /*aTsyReqHandle*/)
   816 /**
   810 /**
   818 *
   812 *
   819 * @param aTsyReqHandle
   813 * @param aTsyReqHandle
   820 * @return KErrNone if successfully cancelled
   814 * @return KErrNone if successfully cancelled
   821 */
   815 */
   822 	{
   816 	{
   823 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_HANGUPCANCEL_1, ">>CSimDataCall::HangUpCancel");
   817 	LOGDATA1(">>CSimDataCall::HangUpCancel");
   824 	switch(iState)
   818 	switch(iState)
   825 		{
   819 		{
   826 	case RMobileCall::EStatusIdle:
   820 	case RMobileCall::EStatusIdle:
   827 		SimPanic(EIllegalCancelRequest);		// A DialCancel should never reach the TSY in this state.
   821 		SimPanic(EIllegalCancelRequest);		// A DialCancel should never reach the TSY in this state.
   828 		break;
   822 		break;
   842 			ReqCompleted(iHangUpRequestHandle, KErrCancel);
   836 			ReqCompleted(iHangUpRequestHandle, KErrCancel);
   843 			}
   837 			}
   844 		break;
   838 		break;
   845 
   839 
   846 	default:
   840 	default:
   847 		OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_HANGUPCANCEL_2, "CSimDataCall::HangUpCancel: No action taken - state: %d",iState);
   841 		LOGDATA2("CSimDataCall::HangUpCancel: No action taken - state: %d",iState);
   848 		break;
   842 		break;
   849 		}
   843 		}
   850 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_HANGUPCANCEL_3, "<<CSimDataCall::HangUpCancel");
   844 	LOGDATA1("<<CSimDataCall::HangUpCancel");
   851 	return KErrNone;
   845 	return KErrNone;
   852 	}
   846 	}
   853 
   847 
   854 TInt CSimDataCall::RelinquishOwnership()
   848 TInt CSimDataCall::RelinquishOwnership()
   855 	{
   849 	{
  1005 	__ASSERT_ALWAYS(iState!=RMobileCall::EStatusUnknown,SimPanic(ECallStatusUnknownIllegal));
   999 	__ASSERT_ALWAYS(iState!=RMobileCall::EStatusUnknown,SimPanic(ECallStatusUnknownIllegal));
  1006 
  1000 
  1007 	switch(aEvent)
  1001 	switch(aEvent)
  1008 		{
  1002 		{
  1009 	case ECallEventDial:
  1003 	case ECallEventDial:
  1010 		OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_ACTIONEVENT_1, ">>CSimDataCall::ActionEvent = [ECallEventDial]");
  1004 		LOGDATA1(">>CSimDataCall::ActionEvent = [ECallEventDial]");
  1011 		if(iState==RMobileCall::EStatusIdle)
  1005 		if(iState==RMobileCall::EStatusIdle)
  1012 			{
  1006 			{
  1013 			TRAP(ret, ret=ChangeStateL(RMobileCall::EStatusDialling,EFalse,EFalse));
  1007 			TRAP(ret, ret=ChangeStateL(RMobileCall::EStatusDialling,EFalse,EFalse));
  1014 			if(ret==KErrNone)
  1008 			if(ret==KErrNone)
  1015 				iTimer->Start(iDiallingPause,this);
  1009 				iTimer->Start(iDiallingPause,this);
  1018 			return KErrEtelCallAlreadyActive;
  1012 			return KErrEtelCallAlreadyActive;
  1019 		break;
  1013 		break;
  1020 
  1014 
  1021 	case ECallEventHangUp:
  1015 	case ECallEventHangUp:
  1022 		{
  1016 		{
  1023 		OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_ACTIONEVENT_2, ">>CSimDataCall::ActionEvent = [ECallEventHangUp]");
  1017 		LOGDATA1(">>CSimDataCall::ActionEvent = [ECallEventHangUp]");
  1024 		switch(iState)
  1018 		switch(iState)
  1025 			{
  1019 			{
  1026 		case RMobileCall::EStatusConnected:
  1020 		case RMobileCall::EStatusConnected:
  1027 			iCommPortLoaned=EFalse;
  1021 			iCommPortLoaned=EFalse;
  1028 			iNtRas->Terminate();
  1022 			iNtRas->Terminate();
  1041 			}
  1035 			}
  1042 		}
  1036 		}
  1043 		break;
  1037 		break;
  1044 
  1038 
  1045 	case ECallEventIncomingCall:
  1039 	case ECallEventIncomingCall:
  1046 		OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_ACTIONEVENT_3, ">>CSimDataCall::ActionEvent = [ECallEventIncomingCall]");
  1040 		LOGDATA1(">>CSimDataCall::ActionEvent = [ECallEventIncomingCall]");
  1047 		if(iState==RMobileCall::EStatusIdle)
  1041 		if(iState==RMobileCall::EStatusIdle)
  1048 			{
  1042 			{
  1049 			if(iAnswerIncomingCall.iNotifyPending)
  1043 			if(iAnswerIncomingCall.iNotifyPending)
  1050 				{
  1044 				{
  1051 				TRAP(ret,	ret=ProcessAnswerIncomingCallL());
  1045 				TRAP(ret,	ret=ProcessAnswerIncomingCallL());
  1060 		else
  1054 		else
  1061 			return KErrEtelCallAlreadyActive;
  1055 			return KErrEtelCallAlreadyActive;
  1062 		break;
  1056 		break;
  1063 
  1057 
  1064 	case ECallEventAnswerIncoming:
  1058 	case ECallEventAnswerIncoming:
  1065 		OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_ACTIONEVENT_4, ">>CSimDataCall::ActionEvent = [ECallEventAnswerIncoming]");
  1059 		LOGDATA1(">>CSimDataCall::ActionEvent = [ECallEventAnswerIncoming]");
  1066 		if(iState==RMobileCall::EStatusRinging)
  1060 		if(iState==RMobileCall::EStatusRinging)
  1067 			{
  1061 			{
  1068 			TRAP(ret, ret=ProcessAnswerIncomingCallL());
  1062 			TRAP(ret, ret=ProcessAnswerIncomingCallL());
  1069 			}
  1063 			}
  1070 		else
  1064 		else
  1071 			SimPanic(EIllegalStateInconsistancy);		// The state is checked in AnswerIncomingCall, so there's been an inconsistancy if the state is out of line.
  1065 			SimPanic(EIllegalStateInconsistancy);		// The state is checked in AnswerIncomingCall, so there's been an inconsistancy if the state is out of line.
  1072 		break;
  1066 		break;
  1073 
  1067 
  1074 	case ECallEventRemoteHangup:
  1068 	case ECallEventRemoteHangup:
  1075 		OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_ACTIONEVENT_5, ">>CSimDataCall::ActionEvent = [ECallEventRemoteHangup]");
  1069 		LOGDATA1(">>CSimDataCall::ActionEvent = [ECallEventRemoteHangup]");
  1076 		if(iState==RMobileCall::EStatusConnected)
  1070 		if(iState==RMobileCall::EStatusConnected)
  1077 			{
  1071 			{
  1078 			TRAP(ret, ret=ProcessRemoteHangupL());
  1072 			TRAP(ret, ret=ProcessRemoteHangupL());
  1079 			}
  1073 			}
  1080 		else
  1074 		else
  1081 			SimPanic(EIllegalStateInconsistancy);		// The state is checked in RemoteHangup, so there's been an inconsistancy if the state is out of line.
  1075 			SimPanic(EIllegalStateInconsistancy);		// The state is checked in RemoteHangup, so there's been an inconsistancy if the state is out of line.
  1082 		break;
  1076 		break;
  1083 
  1077 
  1084 	case ECallEventTimeOut:
  1078 	case ECallEventTimeOut:
  1085 			{
  1079 			{
  1086 			OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_ACTIONEVENT_6, ">>CSimVoiceCall::ActionEvent = [ECallEventTimeOut]");
  1080 			LOGDATA1(">>CSimVoiceCall::ActionEvent = [ECallEventTimeOut]");
  1087 			switch(iState)
  1081 			switch(iState)
  1088 				{
  1082 				{
  1089 			case RMobileCall::EStatusDialling:
  1083 			case RMobileCall::EStatusDialling:
  1090 				OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_ACTIONEVENT_7, ">>CSimDataCall::State = [EStatusDialling]");
  1084 				LOGDATA1(">>CSimDataCall::State = [EStatusDialling]");
  1091 				TRAP(ret, ret=ChangeStateL(RMobileCall::EStatusConnecting,EFalse,EFalse));
  1085 				TRAP(ret, ret=ChangeStateL(RMobileCall::EStatusConnecting,EFalse,EFalse));
  1092 				if(ret==KErrNone)
  1086 				if(ret==KErrNone)
  1093 					iTimer->Start(iConnectingPause,this);
  1087 					iTimer->Start(iConnectingPause,this);
  1094 				return ret;
  1088 				return ret;
  1095 
  1089 
  1096 			case RMobileCall::EStatusConnecting:
  1090 			case RMobileCall::EStatusConnecting:
  1097 				OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_ACTIONEVENT_8, ">>CSimDataCall::State = [EStatusConnecting]");
  1091 				LOGDATA1(">>CSimDataCall::State = [EStatusConnecting]");
  1098 // If the config file has not spec'ed a CSY, then fail the dial...
  1092 // If the config file has not spec'ed a CSY, then fail the dial...
  1099 				if(iCsyName.Length()==0)
  1093 				if(iCsyName.Length()==0)
  1100 					{
  1094 					{
  1101 					ReqCompleted(iDialRequestHandle,KErrEtelNoCarrier);
  1095 					ReqCompleted(iDialRequestHandle,KErrEtelNoCarrier);
  1102 					TRAP(ret, ret=ChangeStateL(RMobileCall::EStatusIdle,EFalse,EFalse));
  1096 					TRAP(ret, ret=ChangeStateL(RMobileCall::EStatusIdle,EFalse,EFalse));
  1108 				if(ret!=KErrNone)
  1102 				if(ret!=KErrNone)
  1109 					ReqCompleted(iDialRequestHandle,ret);
  1103 					ReqCompleted(iDialRequestHandle,ret);
  1110 				return ret;
  1104 				return ret;
  1111 
  1105 
  1112 			case RMobileCall::EStatusDisconnecting:
  1106 			case RMobileCall::EStatusDisconnecting:
  1113 				OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_ACTIONEVENT_9, ">>CSimDataCall::State = [EStatusDisconnecting]");
  1107 				LOGDATA1(">>CSimDataCall::State = [EStatusDisconnecting]");
  1114 				TRAP(ret, ret=ChangeStateL(RMobileCall::EStatusIdle,EFalse,EFalse));
  1108 				TRAP(ret, ret=ChangeStateL(RMobileCall::EStatusIdle,EFalse,EFalse));
  1115 				ReqCompleted(iHangUpRequestHandle,ret);
  1109 				ReqCompleted(iHangUpRequestHandle,ret);
  1116 				return ret;
  1110 				return ret;
  1117 
  1111 
  1118 			case RMobileCall::EStatusAnswering:
  1112 			case RMobileCall::EStatusAnswering:
  1119 				OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_ACTIONEVENT_10, ">>CSimDataCall::State = [EStatusAnswering]");
  1113 				LOGDATA1(">>CSimDataCall::State = [EStatusAnswering]");
  1120 				TRAP(ret, ret=ChangeStateL(RMobileCall::EStatusConnected,EFalse,EFalse));
  1114 				TRAP(ret, ret=ChangeStateL(RMobileCall::EStatusConnected,EFalse,EFalse));
  1121 				ReqCompleted(iAnswerIncomingCall.iNotifyHandle,ret);
  1115 				ReqCompleted(iAnswerIncomingCall.iNotifyHandle,ret);
  1122 				return ret;
  1116 				return ret;
  1123 
  1117 
  1124 			default:
  1118 			default:
  1125 				OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_ACTIONEVENT_11, ">>CSimDataCall::State = [%d]",iState);
  1119 				LOGDATA2(">>CSimDataCall::State = [%d]",iState);
  1126 				break;
  1120 				break;
  1127 				}
  1121 				}
  1128 			}
  1122 			}
  1129 		break;
  1123 		break;
  1130 
  1124 
  1156 /**
  1150 /**
  1157 * Timer callback function.  When the timer goes off, it will call back into this
  1151 * Timer callback function.  When the timer goes off, it will call back into this
  1158 * function for further processing.
  1152 * function for further processing.
  1159 */
  1153 */
  1160 	{
  1154 	{
  1161 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_TIMERCALLBACK_1, ">>CSimDataCall::TimerCallBack");
  1155 	LOGDATA1(">>CSimDataCall::TimerCallBack");
  1162 	TInt err=ActionEvent(ECallEventTimeOut,KErrNone);
  1156 	TInt err=ActionEvent(ECallEventTimeOut,KErrNone);
  1163 	__ASSERT_ALWAYS(err==KErrNone,SimPanic(ETimeOutEventActionFailed));
  1157 	__ASSERT_ALWAYS(err==KErrNone,SimPanic(ETimeOutEventActionFailed));
  1164 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_TIMERCALLBACK_2, "<<CSimDataCall::TimerCallBack");
  1158 	LOGDATA1("<<CSimDataCall::TimerCallBack");
  1165 	}
  1159 	}
  1166 
  1160 
  1167 TInt CSimDataCall::ProcessAnswerIncomingCallL()
  1161 TInt CSimDataCall::ProcessAnswerIncomingCallL()
  1168 /**
  1162 /**
  1169 * Answers an Incoming Call.
  1163 * Answers an Incoming Call.
  1170 * First the call state must be changed to "answering", then the flag indicating
  1164 * First the call state must be changed to "answering", then the flag indicating
  1171 * that an answer incoming call request is no longer pending.  Finally, a new
  1165 * that an answer incoming call request is no longer pending.  Finally, a new
  1172 * call object must be assigned to receive the details of the next incoming call.
  1166 * call object must be assigned to receive the details of the next incoming call.
  1173 */
  1167 */
  1174 	{
  1168 	{
  1175 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_PROCESSANSWERINCOMINGCALLL_1, ">>CSimDataCall::ProcessAnswerIncomingCall");
  1169 	LOGDATA1(">>CSimDataCall::ProcessAnswerIncomingCall");
  1176 	TInt ret=ChangeStateL(RMobileCall::EStatusAnswering,EFalse,EFalse);
  1170 	TInt ret=ChangeStateL(RMobileCall::EStatusAnswering,EFalse,EFalse);
  1177 	if(ret!=KErrNone)
  1171 	if(ret!=KErrNone)
  1178 		return ret;
  1172 		return ret;
  1179 	iTimer->Start(iAnswerIncomingPause,this);
  1173 	iTimer->Start(iAnswerIncomingPause,this);
  1180 	iAnswerIncomingCall.iNotifyPending=EFalse;
  1174 	iAnswerIncomingCall.iNotifyPending=EFalse;
  1181 	iLine->ResetAutoAnswerCallObject(this);
  1175 	iLine->ResetAutoAnswerCallObject(this);
  1182 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_PROCESSANSWERINCOMINGCALLL_2, "<<CSimDataCall::ProcessAnswerIncomingCall");
  1176 	LOGDATA1("<<CSimDataCall::ProcessAnswerIncomingCall");
  1183 	return ret;
  1177 	return ret;
  1184 	}
  1178 	}
  1185 
  1179 
  1186 TInt CSimDataCall::ProcessRemoteHangupL()
  1180 TInt CSimDataCall::ProcessRemoteHangupL()
  1187 /**
  1181 /**
  1189 * First the call state must be changed to "disconnecting", then the flag indicating
  1183 * First the call state must be changed to "disconnecting", then the flag indicating
  1190 * that a remote hangup request is no longer pending.  Finally, a new
  1184 * that a remote hangup request is no longer pending.  Finally, a new
  1191 * call object must be assigned to be the next remotely hung up call.
  1185 * call object must be assigned to be the next remotely hung up call.
  1192 */
  1186 */
  1193 	{
  1187 	{
  1194 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_PROCESSREMOTEHANGUPL_1, ">>CSimDataCall::ProcessRemoteHangupL");
  1188 	LOGDATA1(">>CSimDataCall::ProcessRemoteHangupL");
  1195 	TInt ret=ChangeStateL(RMobileCall::EStatusDisconnecting,EFalse,EFalse);
  1189 	TInt ret=ChangeStateL(RMobileCall::EStatusDisconnecting,EFalse,EFalse);
  1196 	if(ret!=KErrNone)
  1190 	if(ret!=KErrNone)
  1197 		return ret;
  1191 		return ret;
  1198 	iTimer->Start(iRemoteHangupPause,this);
  1192 	iTimer->Start(iRemoteHangupPause,this);
  1199 	iLine->ResetRemoteHangupCallObject(this);
  1193 	iLine->ResetRemoteHangupCallObject(this);
  1200 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMDATACALL_PROCESSREMOTEHANGUPL_2, "<<CSimDataCall::ProcessRemoteHangupL");
  1194 	LOGDATA1("<<CSimDataCall::ProcessRemoteHangupL");
  1201 	return ret;
  1195 	return ret;
  1202 	}
  1196 	}
  1203 
  1197 
  1204 
  1198 
  1205 void CSimDataCall::PopulateCallParams(const TDesC8* aCallParams)
  1199 void CSimDataCall::PopulateCallParams(const TDesC8* aCallParams)