telephonyserverplugins/simtsy/src/csimsmsmess.cpp
changeset 44 8b72faa1200f
parent 20 244d7c5f118e
child 66 07a122eea281
equal deleted inserted replaced
39:2473f5e227f9 44:8b72faa1200f
     1 // Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 2001-2010 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".
    15 
    15 
    16 /**
    16 /**
    17  @file
    17  @file
    18 */
    18 */
    19 
    19 
       
    20 
       
    21 
       
    22 #include "OstTraceDefinitions.h"
       
    23 #ifdef OST_TRACE_COMPILER_IN_USE
       
    24 #include "csimsmsmessTraces.h"
       
    25 #endif
       
    26 
    20 #include "csimsmsmess.h"
    27 #include "csimsmsmess.h"
    21 #include <testconfigfileparser.h>
    28 #include <testconfigfileparser.h>
    22 #include "Simlog.h"
       
    23 #include <etelmm.h>
    29 #include <etelmm.h>
    24 #include "CSimTsyMode.h"
    30 #include "CSimTsyMode.h"
    25 
    31 
    26 //macro
    32 //macro
    27 #define UNPACK_PCKG(target,source,datatype)  datatype& target=  (*(TPckg<datatype>*)(source))()
    33 #define UNPACK_PCKG(target,source,datatype)  datatype& target=  (*(TPckg<datatype>*)(source))()
    72     InitializeL();
    78     InitializeL();
    73     }
    79     }
    74 
    80 
    75 void CSimSmsMessaging::InitializeL()
    81 void CSimSmsMessaging::InitializeL()
    76 	{
    82 	{
    77 	LOGSMS1("Starting to Load and Parse Sms Messaging Config ");
    83 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_INITIALIZEL_1, "Starting to Load and Parse Sms Messaging Config ");
    78 	iRxTimer=CSimTimer::NewL(iPhone);
    84 	iRxTimer=CSimTimer::NewL(iPhone);
    79 	iTxTimer=CSimTimer::NewL(iPhone);
    85 	iTxTimer=CSimTimer::NewL(iPhone);
    80 	iSmspTimer=CSimTimer::NewL(iPhone);
    86 	iSmspTimer=CSimTimer::NewL(iPhone);
    81 		
    87 		
    82 	iSmsRxParameterListGsm=new(ELeave) CArrayFixFlat<TSmsRxParametersGsm>(KSmsSettingGranularity);	
    88 	iSmsRxParameterListGsm=new(ELeave) CArrayFixFlat<TSmsRxParametersGsm>(KSmsSettingGranularity);	
    94 	FindAndCreateSmsParamsL();
   100 	FindAndCreateSmsParamsL();
    95 
   101 
    96 	// NOTE - no need to start iRxTimer; this will be started once a EMobileSmsMessagingReceiveMessage
   102 	// NOTE - no need to start iRxTimer; this will be started once a EMobileSmsMessagingReceiveMessage
    97 	// request is received and/or Send Sms contrainst satisfied (see CompleteTxPendingReq)
   103 	// request is received and/or Send Sms contrainst satisfied (see CompleteTxPendingReq)
    98 	
   104 	
    99 	LOGSMS1("Finished parsing SMS Messaging config parameters");
   105 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_INITIALIZEL_2, "Finished parsing SMS Messaging config parameters");
   100 	}
   106 	}
   101 
   107 
   102 
   108 
   103 void CSimSmsMessaging::Reset()
   109 void CSimSmsMessaging::Reset()
   104     {
   110     {
   176 	TInt count=CfgFileSection()->ItemCount(KSmsRx);
   182 	TInt count=CfgFileSection()->ItemCount(KSmsRx);
   177 	const CTestConfigItem* item=NULL;
   183 	const CTestConfigItem* item=NULL;
   178 	TInt i;
   184 	TInt i;
   179 	TSmsRxParametersGsm smsRxParameterGsm;
   185 	TSmsRxParametersGsm smsRxParameterGsm;
   180 	
   186 	
   181 	LOGSMS2("CSimSmsMessaging::FindAndCreateRxAttributesL IN [count=%d]", count);
   187 	OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATERXATTRIBUTESL_1, "CSimSmsMessaging::FindAndCreateRxAttributesL IN [count=%d]", count);
   182 
   188 
   183 	// Need to do this *before* entering the loop (so that we know 
   189 	// Need to do this *before* entering the loop (so that we know 
   184 	// whether or not to read a delivery report pdu off the config file).
   190 	// whether or not to read a delivery report pdu off the config file).
   185 	iSmsControlCaps=RMobileSmsMessaging::TMobileSmsControlCaps(CfgFileSection()->ItemValue(KSmsControlCaps,KDefaultSmsControlCaps));
   191 	iSmsControlCaps=RMobileSmsMessaging::TMobileSmsControlCaps(CfgFileSection()->ItemValue(KSmsControlCaps,KDefaultSmsControlCaps));
   186 
   192 
   192 
   198 
   193 		TPtrC8 smsPdu,sca;
   199 		TPtrC8 smsPdu,sca;
   194 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,smsPdu);
   200 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,smsPdu);
   195 		if(ret!=KErrNone)
   201 		if(ret!=KErrNone)
   196 			{
   202 			{
   197 			LOGPARSERR("smsPdu",ret,0,&KSmsRx);
   203 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATERXATTRIBUTESL_2, "WARNING - CONFIGURATION FILE PARSING - Reading element SMSPDU returned %d (element no. %d) from tag %s.",ret,0,KSmsRx);
   198 			continue;
   204 			continue;
   199 			}
   205 			}
   200 		else
   206 		else
   201 			{
   207 			{
   202 			smsRxParameterGsm.iPdu.Zero();
   208 			smsRxParameterGsm.iPdu.Zero();
   204 			}
   210 			}
   205 		
   211 		
   206 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,sca);
   212 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,sca);
   207 		if(ret!=KErrNone)
   213 		if(ret!=KErrNone)
   208 			{
   214 			{
   209 			LOGPARSERR("sca",ret,1,&KSmsRx);
   215 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATERXATTRIBUTESL_3, "WARNING - CONFIGURATION FILE PARSING - Reading element SCA returned %d (element no. %d) from tag %s.",ret,1,KSmsRx);
   210 			continue;
   216 			continue;
   211 			}
   217 			}
   212 		else
   218 		else
   213 			{
   219 			{
   214 			smsRxParameterGsm.iSca=sca;
   220 			smsRxParameterGsm.iSca=sca;
   220 			{
   226 			{
   221 			TPtrC8 deliveryReportPdu;
   227 			TPtrC8 deliveryReportPdu;
   222 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,deliveryReportPdu);
   228 			ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,deliveryReportPdu);
   223 			if( (ret!=KErrNone) && (ret!=KErrGeneral) )
   229 			if( (ret!=KErrNone) && (ret!=KErrGeneral) )
   224 				{
   230 				{
   225 				LOGPARSERR("deliveryReportPdu",ret,2,&KSmsRx);
   231 				OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATERXATTRIBUTESL_4, "WARNING - CONFIGURATION FILE PARSING - Reading element DELIVERYREPORTPDU returned %d (element no. %d) from tag %s.",ret,2,KSmsRx);
   226 				}
   232 				}
   227 			else
   233 			else
   228 				{
   234 				{
   229 				if (CSimTsyMode::GetMode() != CSimTsyMode::ECdmaV1)			
   235 				if (CSimTsyMode::GetMode() != CSimTsyMode::ECdmaV1)			
   230 					{
   236 					{
   244 	iResumeCompletePause=CfgFileSection()->ItemValue(KSmsResumePause,KDefaultSmsResumePause);
   250 	iResumeCompletePause=CfgFileSection()->ItemValue(KSmsResumePause,KDefaultSmsResumePause);
   245 
   251 
   246 	if (iSmsControlCaps & RMobileSmsMessaging::KCapsReceiveUnstoredClientAck)
   252 	if (iSmsControlCaps & RMobileSmsMessaging::KCapsReceiveUnstoredClientAck)
   247 		iSmsReceiveMode=RMobileSmsMessaging::EReceiveUnstoredClientAck;
   253 		iSmsReceiveMode=RMobileSmsMessaging::EReceiveUnstoredClientAck;
   248 	else iSmsReceiveMode=RMobileSmsMessaging::EReceiveModeUnspecified;
   254 	else iSmsReceiveMode=RMobileSmsMessaging::EReceiveModeUnspecified;
   249 	LOGSMS5("iSmsRxPeriod =%d, iAckNackCompletePause=%d, iResumeCompletePause=%d, iSmsControlCaps=%d",iSmsRxPeriod, iAckNackCompletePause, iResumeCompletePause, iSmsControlCaps); 
   255 	OstTraceDefExt4(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATERXATTRIBUTESL_5, "iSmsRxPeriod =%d, iAckNackCompletePause=%d, iResumeCompletePause=%d, iSmsControlCaps=%d",iSmsRxPeriod, iAckNackCompletePause, iResumeCompletePause, iSmsControlCaps);
   250 	LOGSMS4("iSmsModeCaps =%d, iSmsRxStartDelay = %d, iSmsReceiveMode = %d",iSmsModeCaps , iSmsRxStartDelay, iSmsReceiveMode);	
   256 	OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATERXATTRIBUTESL_6, "iSmsModeCaps =%d, iSmsRxStartDelay = %d, iSmsReceiveMode = %d",iSmsModeCaps , iSmsRxStartDelay, iSmsReceiveMode);
   251 	LOGSMS2("CSimSmsMessaging::FindAndCreateRxAttributesL OUT [count=%d]", iSmsRxParameterListGsm->Count());	
   257 	OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATERXATTRIBUTESL_7, "CSimSmsMessaging::FindAndCreateRxAttributesL OUT [count=%d]", iSmsRxParameterListGsm->Count());
   252 	}
   258 	}
   253 
   259 
   254 void CSimSmsMessaging::FindAndCreateTxAttributesL()
   260 void CSimSmsMessaging::FindAndCreateTxAttributesL()
   255 /**
   261 /**
   256  * Extract values from the tags
   262  * Extract values from the tags
   273 		//get pdu
   279 		//get pdu
   274 		TPtrC8 smsTx;
   280 		TPtrC8 smsTx;
   275 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,smsTx);
   281 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,smsTx);
   276 		if(ret!=KErrNone)
   282 		if(ret!=KErrNone)
   277 			{
   283 			{
   278 			LOGPARSERR("smsTx",ret,0,&KSmsTx);
   284 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATETXATTRIBUTESL_1, "WARNING - CONFIGURATION FILE PARSING - Reading element SMSTX returned %d (element no. %d) from tag %s.",ret,0,KSmsTx);
   279 			continue;
   285 			continue;
   280 			}
   286 			}
   281 		else
   287 		else
   282 			{			
   288 			{			
   283 			smsTxParametersGsm.iPdu.Zero();
   289 			smsTxParametersGsm.iPdu.Zero();
   287 		//get Sca
   293 		//get Sca
   288 		TPtrC8 sca;
   294 		TPtrC8 sca;
   289 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,sca);
   295 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,sca);
   290 		if (ret!=KErrNone)
   296 		if (ret!=KErrNone)
   291 			{
   297 			{
   292 			LOGPARSERR("sca",ret,1,&KSmsTx);
   298 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATETXATTRIBUTESL_2, "WARNING - CONFIGURATION FILE PARSING - Reading element SCA returned %d (element no. %d) from tag %s.",ret,1,KSmsTx);
   293 			continue;
   299 			continue;
   294 			}
   300 			}
   295 		else
   301 		else
   296 			{			
   302 			{			
   297 			smsTxParametersGsm.iSca.Copy(sca);				
   303 			smsTxParametersGsm.iSca.Copy(sca);				
   300 		//get reference
   306 		//get reference
   301 		TInt reference;
   307 		TInt reference;
   302 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,reference);
   308 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,reference);
   303 		if(ret!=KErrNone)
   309 		if(ret!=KErrNone)
   304 			{
   310 			{
   305 			LOGPARSERR("reference",ret,2,&KSmsTx);
   311 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATETXATTRIBUTESL_3, "WARNING - CONFIGURATION FILE PARSING - Reading element REFERENCE returned %d (element no. %d) from tag %s.",ret,2,KSmsTx);
   306 			smsTxParametersGsm.iRef=KNoMessageReferenceInCofigurationFile;	
   312 			smsTxParametersGsm.iRef=KNoMessageReferenceInCofigurationFile;	
   307 			}
   313 			}
   308 		else
   314 		else
   309 			{	
   315 			{	
   310 			smsTxParametersGsm.iRef=reference;				
   316 			smsTxParametersGsm.iRef=reference;				
   313 		//get submit report pdu
   319 		//get submit report pdu
   314 		TPtrC8 submitReportPdu;
   320 		TPtrC8 submitReportPdu;
   315 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,3,submitReportPdu);
   321 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,3,submitReportPdu);
   316 		if(ret!=KErrNone)
   322 		if(ret!=KErrNone)
   317 			{
   323 			{
   318 			LOGPARSERR("submitReportPdu",ret,3,&KSmsTx);
   324 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATETXATTRIBUTESL_4, "WARNING - CONFIGURATION FILE PARSING - Reading element SUBMITREPORTPDU returned %d (element no. %d) from tag %s.",ret,3,KSmsTx);
   319 			continue;
   325 			continue;
   320 			}
   326 			}
   321 		else
   327 		else
   322 			{			
   328 			{			
   323 			smsTxParametersGsm.iSubmitReport.Zero(); 	
   329 			smsTxParametersGsm.iSubmitReport.Zero(); 	
   327 		//get expected error code
   333 		//get expected error code
   328 		TInt errorCode;
   334 		TInt errorCode;
   329 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,4,errorCode);
   335 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,4,errorCode);
   330 		if(ret!=KErrNone)
   336 		if(ret!=KErrNone)
   331 			{
   337 			{
   332 			LOGPARSERR("errorCode",ret,4,&KSmsTx);
   338 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATETXATTRIBUTESL_5, "WARNING - CONFIGURATION FILE PARSING - Reading element ERRORCODE returned %d (element no. %d) from tag %s.",ret,4,KSmsTx);
   333 			continue;
   339 			continue;
   334 			}
   340 			}
   335 		else
   341 		else
   336 			{		
   342 			{		
   337 			smsTxParametersGsm.iExpectedError=errorCode;					
   343 			smsTxParametersGsm.iExpectedError=errorCode;					
   363 		
   369 		
   364 		TInt ipc,noBefore,noAfter;
   370 		TInt ipc,noBefore,noAfter;
   365 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,ipc);//only :SendMessage() is supported
   371 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,ipc);//only :SendMessage() is supported
   366 		if(ret!=KErrNone || ipc!=4207)
   372 		if(ret!=KErrNone || ipc!=4207)
   367 			{
   373 			{
   368 			LOGPARSERR("ipc",ret,0,&KSmsStartRxDelay);
   374 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATECONSTRAINTS_1, "WARNING - CONFIGURATION FILE PARSING - Reading element IPC returned %d (element no. %d) from tag %s.",ret,0,KSmsStartRxDelay);
   369 			continue;
   375 			continue;
   370 			}
   376 			}
   371 
   377 
   372 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,noBefore);
   378 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,noBefore);
   373 		if(ret==KErrNone)
   379 		if(ret==KErrNone)
   374 			constraint.iIpcCnt=noBefore;
   380 			constraint.iIpcCnt=noBefore;
   375 		else
   381 		else
   376 			{
   382 			{
   377 			LOGPARSERR("noBefore",ret,1,&KSmsStartRxDelay);
   383 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATECONSTRAINTS_2, "WARNING - CONFIGURATION FILE PARSING - Reading element NOBEFORE returned %d (element no. %d) from tag %s.",ret,1,KSmsStartRxDelay);
   378 			continue;
   384 			continue;
   379 			}
   385 			}
   380 
   386 
   381 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,noAfter);
   387 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,noAfter);
   382 		if(ret==KErrNone)
   388 		if(ret==KErrNone)
   383 			constraint.iRxCnt=noAfter;
   389 			constraint.iRxCnt=noAfter;
   384 		else
   390 		else
   385 			{
   391 			{
   386 			LOGPARSERR("noAfter",ret,2,&KSmsStartRxDelay);
   392 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATECONSTRAINTS_3, "WARNING - CONFIGURATION FILE PARSING - Reading element NOAFTER returned %d (element no. %d) from tag %s.",ret,2,KSmsStartRxDelay);
   387 			continue;
   393 			continue;
   388 			}
   394 			}
   389 		
   395 		
   390 		__ASSERT_ALWAYS(iConstraints.Append(constraint) == KErrNone,SimPanic(EGeneral));
   396 		__ASSERT_ALWAYS(iConstraints.Append(constraint) == KErrNone,SimPanic(EGeneral));
   391 		}
   397 		}
   411 		TPtrC8 storeName;
   417 		TPtrC8 storeName;
   412 		TInt maxNumSlots;
   418 		TInt maxNumSlots;
   413 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,storeName);
   419 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,storeName);
   414 		if(ret!=KErrNone)
   420 		if(ret!=KErrNone)
   415 			{
   421 			{
   416 			LOGPARSERR("storeName",ret,0,&KSmsStore);
   422 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATESMSSTORESL_1, "WARNING - CONFIGURATION FILE PARSING - Reading element STORENAME returned %d (element no. %d) from tag %s.",ret,0,KSmsStore);
   417 			continue;
   423 			continue;
   418 			}
   424 			}
   419 
   425 
   420 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,maxNumSlots);
   426 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,maxNumSlots);
   421 		if(ret!=KErrNone)
   427 		if(ret!=KErrNone)
   422 			{
   428 			{
   423 			LOGPARSERR("maxNumSlots",ret,1,&KSmsStore);
   429 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATESMSSTORESL_2, "WARNING - CONFIGURATION FILE PARSING - Reading element MAXNUMSLOTS returned %d (element no. %d) from tag %s.",ret,1,KSmsStore);
   424 			continue;
   430 			continue;
   425 			}
   431 			}
   426 
   432 
   427 		CSimSmsStore* smsStore=CSimSmsStore::NewL(this,storeName,maxNumSlots,aPhone);
   433 		CSimSmsStore* smsStore=CSimSmsStore::NewL(this,storeName,maxNumSlots,aPhone);
   428 		TCleanupItem newObjClose(CloseSmsObj,smsStore);
   434 		TCleanupItem newObjClose(CloseSmsObj,smsStore);
   470 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,index);
   476 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,index);
   471 		if((ret==KErrNone)&&(index < maxSlots))
   477 		if((ret==KErrNone)&&(index < maxSlots))
   472 			entry.iIndex=index;
   478 			entry.iIndex=index;
   473 		else
   479 		else
   474 			{
   480 			{
   475 			LOGPARSERR("index",ret,0,&KSmsParamEntry);
   481 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATESMSPARAMSL_1, "WARNING - CONFIGURATION FILE PARSING - Reading element INDEX returned %d (element no. %d) from tag %s.",ret,0,KSmsParamEntry);
   476 			continue;
   482 			continue;
   477 			}
   483 			}
   478 
   484 
   479 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,smspName);
   485 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,smspName);
   480 		if(ret==KErrNone)
   486 		if(ret==KErrNone)
   481 			entry.iText.Copy(smspName);
   487 			entry.iText.Copy(smspName);
   482 		else
   488 		else
   483 			{
   489 			{
   484 			LOGPARSERR("smspName",ret,1,&KSmsParamEntry);
   490 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATESMSPARAMSL_2, "WARNING - CONFIGURATION FILE PARSING - Reading element SMSPNAME returned %d (element no. %d) from tag %s.",ret,1,KSmsParamEntry);
   485 			continue;
   491 			continue;
   486 			}
   492 			}
   487 
   493 
   488 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,pid);
   494 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,pid);
   489 		if(ret==KErrNone)
   495 		if(ret==KErrNone)
   491 			entry.iProtocolId=TUint8(pid);
   497 			entry.iProtocolId=TUint8(pid);
   492 			entry.iValidParams |= RMobileSmsMessaging::KProtocolIdIncluded;
   498 			entry.iValidParams |= RMobileSmsMessaging::KProtocolIdIncluded;
   493 			}
   499 			}
   494 		else
   500 		else
   495 			{
   501 			{
   496 			LOGPARSERR("pid",ret,2,&KSmsParamEntry);
   502 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATESMSPARAMSL_3, "WARNING - CONFIGURATION FILE PARSING - Reading element PID returned %d (element no. %d) from tag %s.",ret,2,KSmsParamEntry);
   497 			continue;
   503 			continue;
   498 			}
   504 			}
   499 
   505 
   500 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,3,dcs);
   506 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,3,dcs);
   501 		if(ret==KErrNone)
   507 		if(ret==KErrNone)
   503 			entry.iDcs=TUint8(dcs);
   509 			entry.iDcs=TUint8(dcs);
   504 			entry.iValidParams |= RMobileSmsMessaging::KDcsIncluded;
   510 			entry.iValidParams |= RMobileSmsMessaging::KDcsIncluded;
   505 			}
   511 			}
   506 		else
   512 		else
   507 			{
   513 			{
   508 			LOGPARSERR("dcs",ret,3,&KSmsParamEntry);
   514 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATESMSPARAMSL_4, "WARNING - CONFIGURATION FILE PARSING - Reading element DCS returned %d (element no. %d) from tag %s.",ret,3,KSmsParamEntry);
   509 			continue;
   515 			continue;
   510 			}
   516 			}
   511 
   517 
   512 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,4,validityPeriod);
   518 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,4,validityPeriod);
   513 		if(ret==KErrNone)
   519 		if(ret==KErrNone)
   515 			entry.iValidityPeriod=TUint8(validityPeriod);
   521 			entry.iValidityPeriod=TUint8(validityPeriod);
   516 			entry.iValidParams |= RMobileSmsMessaging::KValidityPeriodIncluded;
   522 			entry.iValidParams |= RMobileSmsMessaging::KValidityPeriodIncluded;
   517 			}
   523 			}
   518 		else
   524 		else
   519 			{
   525 			{
   520 			LOGPARSERR("validityPeriod",ret,4,&KSmsParamEntry);
   526 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATESMSPARAMSL_5, "WARNING - CONFIGURATION FILE PARSING - Reading element VALIDITYPERIOD returned %d (element no. %d) from tag %s.",ret,4,KSmsParamEntry);
   521 			continue;
   527 			continue;
   522 			}
   528 			}
   523 
   529 
   524 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,5,destAddress);
   530 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,5,destAddress);
   525 		if(ret==KErrNone)
   531 		if(ret==KErrNone)
   526 			{
   532 			{
   527 			RecordDestination(destAddress, entry);
   533 			RecordDestination(destAddress, entry);
   528 			}
   534 			}
   529 		else
   535 		else
   530 			{
   536 			{
   531 			LOGPARSERR("destAddress",ret,5,&KSmsParamEntry);
   537 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATESMSPARAMSL_6, "WARNING - CONFIGURATION FILE PARSING - Reading element DESTADDRESS returned %d (element no. %d) from tag %s.",ret,5,KSmsParamEntry);
   532 			continue;
   538 			continue;
   533 			}
   539 			}
   534 
   540 
   535 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,6,sca);
   541 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,6,sca);
   536 		if(ret==KErrNone)
   542 		if(ret==KErrNone)
   537 			{
   543 			{
   538 			RecordSca(sca, entry);
   544 			RecordSca(sca, entry);
   539 			}
   545 			}
   540 		else
   546 		else
   541 			{
   547 			{
   542 			LOGPARSERR("sca",ret,6,&KSmsParamEntry);
   548 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_FINDANDCREATESMSPARAMSL_7, "WARNING - CONFIGURATION FILE PARSING - Reading element SCA returned %d (element no. %d) from tag %s.",ret,6,KSmsParamEntry);
   543 			continue;
   549 			continue;
   544 			}
   550 			}
   545 
   551 
   546 		iSmspEntries->AddEntryL(entry);
   552 		iSmspEntries->AddEntryL(entry);
   547 		}
   553 		}
   579 		aEntry.iDestination.iTelNumber.Copy(aAsciiAddr);
   585 		aEntry.iDestination.iTelNumber.Copy(aAsciiAddr);
   580 		aEntry.iValidParams |= RMobileSmsMessaging::KDestinationIncluded;
   586 		aEntry.iValidParams |= RMobileSmsMessaging::KDestinationIncluded;
   581 		}	
   587 		}	
   582 	}
   588 	}
   583 
   589 
   584 #ifdef _DEBUG	// to stop the UREL build warnings
   590 #if (OST_TRACE_CATEGORY & OST_TRACE_CATEGORY_DEBUG)	// to stop the UREL build warnings
   585 void CSimSmsMessaging::LogRequest(const TBool aEntering, TInt aIpc, TInt aError)
   591 void CSimSmsMessaging::LogRequest(const TBool aEntering, TInt aIpc, TInt aError)
   586 #else
   592 #else
   587 void CSimSmsMessaging::LogRequest(const TBool aEntering, TInt aIpc, TInt /*aError*/)
   593 void CSimSmsMessaging::LogRequest(const TBool aEntering, TInt aIpc, TInt /*aError*/)
   588 #endif
   594 #endif
   589 /**
   595 /**
   709 			break;
   715 			break;
   710 		}
   716 		}
   711 
   717 
   712 	if (aEntering!=EFalse)
   718 	if (aEntering!=EFalse)
   713 		{
   719 		{
   714 		LOGSMS3(">>%d,CSimSmsMessaging::%S",aIpc, &ipcBuf );
   720 		OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_LOGREQUEST1_1, ">>%d,CSimSmsMessaging::%s",aIpc, ipcBuf );
   715 		}
   721 		}
   716 	else
   722 	else
   717 		{
   723 		{
   718 		LOGSMS4("<<%d, CSimSmsMessaging::%S with error %d",aIpc, &ipcBuf, aError);
   724 #if (OST_TRACE_CATEGORY & OST_TRACE_CATEGORY_DEBUG)    // to stop the UREL build warnings	
       
   725 		OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_LOGREQUEST1_2, "<<%d, CSimSmsMessaging::%s with error %d",aIpc, ipcBuf, aError);
       
   726 #endif		
   719 		}
   727 		}
   720 	}
   728 	}
   721 
   729 
   722 
   730 
   723 TInt CSimSmsMessaging::ExtFunc(const TTsyReqHandle aReqHandle,const TInt aIpc, const TDataPackage& aPckg)
   731 TInt CSimSmsMessaging::ExtFunc(const TTsyReqHandle aReqHandle,const TInt aIpc, const TDataPackage& aPckg)
   847 	for(i=0;i<count;++i)
   855 	for(i=0;i<count;++i)
   848 		{
   856 		{
   849 		if(iSmsTxCnt==(iConstraints[i].iIpcCnt))
   857 		if(iSmsTxCnt==(iConstraints[i].iIpcCnt))
   850 			{
   858 			{
   851 			iCurrentConstraint=i;
   859 			iCurrentConstraint=i;
   852 			LOGSMS2("New Constraint : %d", iCurrentConstraint);
   860 			OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_IPCMATCH_1, "New Constraint : %d", iCurrentConstraint);
   853 			if(i!=0)
   861 			if(i!=0)
   854 				{
   862 				{
   855 				if( !constraintEllapsed )
   863 				if( !constraintEllapsed )
   856 					{
   864 					{
   857 					LOGSMS1("Panic The constraints are overlapping...Compare test code and config file");
   865 					OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_IPCMATCH_2, "Panic The constraints are overlapping...Compare test code and config file");
   858 					}
   866 					}
   859 				__ASSERT_ALWAYS(constraintEllapsed!=EFalse,SimPanic(EConstraintsOverlapping));
   867 				__ASSERT_ALWAYS(constraintEllapsed!=EFalse,SimPanic(EConstraintsOverlapping));
   860 				}
   868 				}
   861 			return ETrue;
   869 			return ETrue;
   862 			}
   870 			}
   867 CTelObject* CSimSmsMessaging::OpenNewObjectByNameL(const TDesC& aName)
   875 CTelObject* CSimSmsMessaging::OpenNewObjectByNameL(const TDesC& aName)
   868 /**
   876 /**
   869  *
   877  *
   870  */
   878  */
   871 	{
   879 	{
   872 	LOGSMS1(">>CSimSmsMessaging::OpenNewObjectByNameL");
   880 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_OPENNEWOBJECTBYNAMEL_1, ">>CSimSmsMessaging::OpenNewObjectByNameL");
   873 	TBuf8<KMaxName> name;
   881 	TBuf8<KMaxName> name;
   874 	name.Copy(aName);		// Do simple 16 bit to 8 bit conversion
   882 	name.Copy(aName);		// Do simple 16 bit to 8 bit conversion
   875 	for(TInt i=0;i<iSmsStores->Count();i++)
   883 	for(TInt i=0;i<iSmsStores->Count();i++)
   876 		{
   884 		{
   877 		if(name.MatchF(iSmsStores->At(i)->Name())==0)
   885 		if(name.MatchF(iSmsStores->At(i)->Name())==0)
  1029  *	This function, triggered by sms receive events, manages the stated machine of 
  1037  *	This function, triggered by sms receive events, manages the stated machine of 
  1030  *  receiving Unstored clientacked sms messages
  1038  *  receiving Unstored clientacked sms messages
  1031  *  
  1039  *  
  1032  */
  1040  */
  1033 	{
  1041 	{
  1034 	LOGSMS3(">>CSimSmsMessaging::ActionRxEventUnstoredClientAck [iRxState=%d aRxEvent=%d]", iRxState, aRxEvent);
  1042 	OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_ACTIONRXEVENTUNSTOREDCLIENTACK_1, ">>CSimSmsMessaging::ActionRxEventUnstoredClientAck [iRxState=%d aRxEvent=%d]", iRxState, aRxEvent);
  1035 	switch(iRxState)
  1043 	switch(iRxState)
  1036 		{
  1044 		{
  1037 	case ESmsRxStateIdle:
  1045 	case ESmsRxStateIdle:
  1038 		{
  1046 		{
  1039 		if(aRxEvent==ESmsEventPostedRxReq)
  1047 		if(aRxEvent==ESmsEventPostedRxReq)
  1064 		if(aRxEvent==ESmsEventRxAckNack)
  1072 		if(aRxEvent==ESmsEventRxAckNack)
  1065 			{
  1073 			{
  1066 			iRxState=ESmsRxStateWaitingForNetworkAckNackResponse;
  1074 			iRxState=ESmsRxStateWaitingForNetworkAckNackResponse;
  1067 			if (!iRxTimer->IsActive() && !iRxTimer->Running())
  1075 			if (!iRxTimer->IsActive() && !iRxTimer->Running())
  1068 				{
  1076 				{
  1069 				LOGSMS1(">>CSimSmsMessaging::ActionRxEventUnstoredClientAck Starting Rx Timer");
  1077 				OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_ACTIONRXEVENTUNSTOREDCLIENTACK_2, ">>CSimSmsMessaging::ActionRxEventUnstoredClientAck Starting Rx Timer");
  1070 				iRxTimer->Start(iAckNackCompletePause,this, ETimerIdSmsMessRx);
  1078 				iRxTimer->Start(iAckNackCompletePause,this, ETimerIdSmsMessRx);
  1071 				}
  1079 				}
  1072 
  1080 
  1073 			return KErrNone;
  1081 			return KErrNone;
  1074 			}
  1082 			}
  1126  *	This function, triggered by sms receive events, manages the stated machine of 
  1134  *	This function, triggered by sms receive events, manages the stated machine of 
  1127  *  receiving Unstored Phone acked sms messages
  1135  *  receiving Unstored Phone acked sms messages
  1128  *  
  1136  *  
  1129  */
  1137  */
  1130 	{
  1138 	{
  1131 	LOGSMS3(">> ActionRxEventUnstoredPhoneAck Enter function. Event=%d, State=%d",aRxEvent,iRxState);
  1139 	OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_ACTIONRXEVENTUNSTOREDPHONEACK_1, ">> ActionRxEventUnstoredPhoneAck Enter function. Event=%d, State=%d",aRxEvent,iRxState);
  1132 	
  1140 	
  1133 	TInt ret = KErrGeneral;
  1141 	TInt ret = KErrGeneral;
  1134 	
  1142 	
  1135 	switch(iRxState)
  1143 	switch(iRxState)
  1136 		{
  1144 		{
  1167  *	This function, triggered by sms receive events, manages the stated machine of 
  1175  *	This function, triggered by sms receive events, manages the stated machine of 
  1168  *  receiving stored Phone acked  sms messages
  1176  *  receiving stored Phone acked  sms messages
  1169  *  
  1177  *  
  1170  */
  1178  */
  1171 	{
  1179 	{
  1172 	LOGSMS3(">> ActionRxEventStored Enter function. Event=%d, State=%d",aRxEvent,iRxState);
  1180 	OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_ACTIONRXEVENTSTORED_1, ">> ActionRxEventStored Enter function. Event=%d, State=%d",aRxEvent,iRxState);
  1173 	TInt ret = KErrGeneral;
  1181 	TInt ret = KErrGeneral;
  1174 	
  1182 	
  1175 	switch(iRxState)
  1183 	switch(iRxState)
  1176 		{
  1184 		{
  1177 	case ESmsRxStateIdle:
  1185 	case ESmsRxStateIdle:
  1236 		return KErrNone;
  1244 		return KErrNone;
  1237 		}
  1245 		}
  1238 
  1246 
  1239 	iSmsRxAttrib=&attrib;
  1247 	iSmsRxAttrib=&attrib;
  1240 	iSmsRxReqOutstanding=ETrue;
  1248 	iSmsRxReqOutstanding=ETrue;
  1241 	LOGSMS3(">>ReceiveMessageL. aSmsPdu&=%x, aParam2&=%x",aSmsPdu,iSmsRxAttrib);
  1249 	OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_RECEIVEMESSAGEL_1, ">>ReceiveMessageL. aSmsPdu&=0x%x, aParam2&=0x%x",(TUint)aSmsPdu,(TUint)iSmsRxAttrib);
  1242 	
  1250 	
  1243 	//  Print received PDU to simTSY log.
  1251 	//  Print received PDU to simTSY log.
  1244 	__ASSERT_ALWAYS(iSmsReceiveMode!=RMobileSmsMessaging::EReceiveModeUnspecified,SimPanic(EMobileSmsMessagingPhoneNotSetToAReceiveMode));
  1252 	__ASSERT_ALWAYS(iSmsReceiveMode!=RMobileSmsMessaging::EReceiveModeUnspecified,SimPanic(EMobileSmsMessagingPhoneNotSetToAReceiveMode));
  1245 	TInt ret=0;
  1253 	TInt ret=0;
  1246 	switch (iSmsReceiveMode)//swich which state machine to enter
  1254 	switch (iSmsReceiveMode)//swich which state machine to enter
  1420 /**
  1428 /**
  1421  *  This function actions the sms message sending state machine. It is triggered by sms sending events
  1429  *  This function actions the sms message sending state machine. It is triggered by sms sending events
  1422  *
  1430  *
  1423  */
  1431  */
  1424 	{
  1432 	{
  1425 	LOGSMS1(">>ActionTxEvent ");
  1433 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_ACTIONTXEVENT_1, ">>ActionTxEvent ");
  1426 	switch(iTxState)
  1434 	switch(iTxState)
  1427 	{
  1435 	{
  1428 	case ESmsTxStateIdle:
  1436 	case ESmsTxStateIdle:
  1429 		__ASSERT_ALWAYS(aTxEvent!=ESmsEventSubmitReportReceived,SimPanic(EIllegalSmsTxEvent));
  1437 		__ASSERT_ALWAYS(aTxEvent!=ESmsEventSubmitReportReceived,SimPanic(EIllegalSmsTxEvent));
  1430 		if(aTxEvent==ESmsEventSendReq)
  1438 		if(aTxEvent==ESmsEventSendReq)
  1469 		iPhone->ReqCompleted(aReqHandle, err);
  1477 		iPhone->ReqCompleted(aReqHandle, err);
  1470 		return KErrNone;
  1478 		return KErrNone;
  1471 		}
  1479 		}
  1472 		
  1480 		
  1473 	iSmsTxAttrib=&attrib;
  1481 	iSmsTxAttrib=&attrib;
  1474 #ifdef _DEBUG
  1482 #if (OST_TRACE_CATEGORY & OST_TRACE_CATEGORY_DEBUG)
  1475 		LogTMobileSmsAttributesV1(*iSmsTxAttrib);
  1483 		LogTMobileSmsAttributesV1(*iSmsTxAttrib);
  1476 #endif // _DEBUG
  1484 #endif // _DEBUG
  1477 		
  1485 		
  1478 
  1486 
  1479 	//check if messages defined in cfg file
  1487 	//check if messages defined in cfg file
  1538  * Complete an outstanding SMS message receive request if one is outstanding.  If there is
  1546  * Complete an outstanding SMS message receive request if one is outstanding.  If there is
  1539  * no request outstanding, the message will be discared.
  1547  * no request outstanding, the message will be discared.
  1540  * update the constraint count
  1548  * update the constraint count
  1541  */
  1549  */
  1542 	{
  1550 	{
  1543 	LOGSMS1(">>AttemptSmsRxComplete ");
  1551 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_ATTEMPTSMSRXCOMPLETE_1, ">>AttemptSmsRxComplete ");
  1544 
  1552 
  1545 	if (CSimTsyMode::GetMode() != CSimTsyMode::ECdmaV1)
  1553 	if (CSimTsyMode::GetMode() != CSimTsyMode::ECdmaV1)
  1546 		{
  1554 		{
  1547 		iConstraintRxCnt++;
  1555 		iConstraintRxCnt++;
  1548 		}
  1556 		}
  1550 	TInt ret=KErrNone;
  1558 	TInt ret=KErrNone;
  1551 	if(iSmsRxReqOutstanding)
  1559 	if(iSmsRxReqOutstanding)
  1552 		{
  1560 		{
  1553 		if (iSmsReceiveMode==RMobileSmsMessaging::EReceiveStored)
  1561 		if (iSmsReceiveMode==RMobileSmsMessaging::EReceiveStored)
  1554 			{
  1562 			{
  1555 			LOGSMS4(">>Populating SMS Structures. iSmsRxPdu&=%x, iSmsRxAttrib&=%x, iSmsRxCnt=%d.",iSmsRxPdu,iSmsRxAttrib,iSmsRxCnt);
  1563 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_ATTEMPTSMSRXCOMPLETE_2, ">>Populating SMS Structures. iSmsRxPdu&=0x%x, iSmsRxAttrib&=0x%x, iSmsRxCnt=%d.",(TUint)iSmsRxPdu,(TUint)iSmsRxAttrib,iSmsRxCnt);
  1556 			RMobileSmsStore::TMobileGsmSmsEntryV1 sms;
  1564 			RMobileSmsStore::TMobileGsmSmsEntryV1 sms;
  1557 
  1565 
  1558 			*iSmsRxPdu=iSmsRxParameterListGsm->At(iSmsRxCnt).iPdu;
  1566 			*iSmsRxPdu=iSmsRxParameterListGsm->At(iSmsRxCnt).iPdu;
  1559 			
  1567 			
  1560 			sms.iMsgData=RMobileSmsMessaging::TMobileSmsGsmTpdu(*iSmsRxPdu);
  1568 			sms.iMsgData=RMobileSmsMessaging::TMobileSmsGsmTpdu(*iSmsRxPdu);
  1591 /**
  1599 /**
  1592  * Complete a SmsTx request and increments the SmsTx counter
  1600  * Complete a SmsTx request and increments the SmsTx counter
  1593  *
  1601  *
  1594  */
  1602  */
  1595 	{
  1603 	{
  1596 	LOGSMS1(">>CompleteTxPendingReq ");
  1604 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_COMPLETETXPENDINGREQ_1, ">>CompleteTxPendingReq ");
  1597 	iSmsTxCnt++;
  1605 	iSmsTxCnt++;
  1598 	if(IpcMatch())
  1606 	if(IpcMatch())
  1599 		{
  1607 		{
  1600 		iConstraintRxCnt=0;
  1608 		iConstraintRxCnt=0;
  1601 		if( iRxState == ESmsRxStateSuspend )
  1609 		if( iRxState == ESmsRxStateSuspend )
  1621 			}
  1629 			}
  1622 		else
  1630 		else
  1623 			{
  1631 			{
  1624 			// No pending client receive request - need to wait for it before
  1632 			// No pending client receive request - need to wait for it before
  1625 			// simulating received SMS from network.
  1633 			// simulating received SMS from network.
  1626 			LOGSMS1(" - no pending receive req from client - do not start Rx timer");
  1634 			OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_COMPLETETXPENDINGREQ_2, " - no pending receive req from client - do not start Rx timer");
  1627 			}
  1635 			}
  1628 		}
  1636 		}
  1629 	ReqCompleted(iSmsTxReqHandle, aError);
  1637 	ReqCompleted(iSmsTxReqHandle, aError);
  1630 	}
  1638 	}
  1631 
  1639 
  1632 void CSimSmsMessaging::StartSmsMtTimer()
  1640 void CSimSmsMessaging::StartSmsMtTimer()
  1633 	{
  1641 	{
  1634 	LOGSMS1(">>StartSmsMtTimer ");
  1642 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_STARTSMSMTTIMER_1, ">>StartSmsMtTimer ");
  1635 	TInt count = 0;
  1643 	TInt count = 0;
  1636 	count = iSmsRxCnt<iSmsRxParameterListGsm->Count();
  1644 	count = iSmsRxCnt<iSmsRxParameterListGsm->Count();
  1637 			
  1645 			
  1638 		if(count)		// Check that there are more messages defined in the config file.
  1646 		if(count)		// Check that there are more messages defined in the config file.
  1639 			{
  1647 			{
  1640 			if((iConstraints.Count()==0) ||	(iConstraintRxCnt<iConstraints[iCurrentConstraint].iRxCnt))	// If there are no constraints, or there are constraints and they're not exhausted.
  1648 			if((iConstraints.Count()==0) ||	(iConstraintRxCnt<iConstraints[iCurrentConstraint].iRxCnt))	// If there are no constraints, or there are constraints and they're not exhausted.
  1641 				{
  1649 				{
  1642 				LOGSMS1(">>StartSmsMtTimer Starting");
  1650 				OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_STARTSMSMTTIMER_2, ">>StartSmsMtTimer Starting");
  1643 				iRxTimer->Start(iSmsRxPeriod,this, ETimerIdSmsMessRx);
  1651 				iRxTimer->Start(iSmsRxPeriod,this, ETimerIdSmsMessRx);
  1644 				LOGSMS1(">>StartSmsMtTimer Started");
  1652 				OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_STARTSMSMTTIMER_3, ">>StartSmsMtTimer Started");
  1645 				}
  1653 				}
  1646 			}
  1654 			}
  1647 	}
  1655 	}
  1648 
  1656 
  1649 
  1657 
  1652  * Populate the SMS Rx Attributes from an ASCII respresentation, such as that stored in the configuration file.
  1660  * Populate the SMS Rx Attributes from an ASCII respresentation, such as that stored in the configuration file.
  1653  * This involves checking the address for a leading '+' character and setting the TON and NPI
  1661  * This involves checking the address for a leading '+' character and setting the TON and NPI
  1654  * accordingly.  The address can then be copied into the iTelNumber structure.
  1662  * accordingly.  The address can then be copied into the iTelNumber structure.
  1655  */
  1663  */
  1656 	{
  1664 	{
  1657 	LOGSMS1(">>PopulateSmsRxAttrib, ");
  1665 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_POPULATESMSRXATTRIB_1, ">>PopulateSmsRxAttrib, ");
  1658 	aAttrib->iOriginator.iTelNumber.SetLength(0);
  1666 	aAttrib->iOriginator.iTelNumber.SetLength(0);
  1659 	
  1667 	
  1660 	switch (iSmsReceiveMode)
  1668 	switch (iSmsReceiveMode)
  1661 		{
  1669 		{
  1662 	case RMobileSmsMessaging::EReceiveUnstoredClientAck:
  1670 	case RMobileSmsMessaging::EReceiveUnstoredClientAck:
  2023 		TRAPD(leaveCode,iSmspEntries->RestoreL(*aBuffer));
  2031 		TRAPD(leaveCode,iSmspEntries->RestoreL(*aBuffer));
  2024 		if (leaveCode)
  2032 		if (leaveCode)
  2025 			return leaveCode;
  2033 			return leaveCode;
  2026 		iSmspReqHandle=aTsyReqHandle;
  2034 		iSmspReqHandle=aTsyReqHandle;
  2027 		iSmspTimer->Start(iSmspBatchPause,this, ETimerIdSmsMessSmsp);
  2035 		iSmspTimer->Start(iSmspBatchPause,this, ETimerIdSmsMessSmsp);
  2028 		LOGSMS1("<<StoreSmsList,Exit function");
  2036 		OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_STORESMSPLIST_1, "<<StoreSmsList,Exit function");
  2029 		return KErrNone;
  2037 		return KErrNone;
  2030 		}
  2038 		}
  2031 	else
  2039 	else
  2032 		LOGSMS1("<<StoreSmsList,Exit function");
  2040 		OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_STORESMSPLIST_2, "<<StoreSmsList,Exit function");
  2033 		return KErrInUse;
  2041 		return KErrInUse;
  2034 	
  2042 	
  2035 	}
  2043 	}
  2036 
  2044 
  2037 void CSimSmsMessaging::StoreSmspListCancel()
  2045 void CSimSmsMessaging::StoreSmspListCancel()
  2067  * Process a timer call back event.  
  2075  * Process a timer call back event.  
  2068  * @param aId Contains the Id of the timer that triggered the event
  2076  * @param aId Contains the Id of the timer that triggered the event
  2069  * 
  2077  * 
  2070  */
  2078  */
  2071 	{
  2079 	{
  2072 	LOGSMS3(">>CSimSmsMesaging::TimerCallBack IN [aId=%d iSmsReceiveMode=%d]", aId, iSmsReceiveMode);
  2080 	OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_TIMERCALLBACK_1, ">>CSimSmsMesaging::TimerCallBack IN [aId=%d iSmsReceiveMode=%d]", aId, iSmsReceiveMode);
  2073 	switch(aId)
  2081 	switch(aId)
  2074 		{
  2082 		{
  2075 		case ETimerIdSmsMessTx:
  2083 		case ETimerIdSmsMessTx:
  2076 			{
  2084 			{
  2077 			TInt ret=ActionTxEvent(ESmsEventSubmitReportReceived);
  2085 			TInt ret=ActionTxEvent(ESmsEventSubmitReportReceived);
  2095 				break;
  2103 				break;
  2096 			case RMobileSmsMessaging::EReceiveUnstoredPhoneAck:
  2104 			case RMobileSmsMessaging::EReceiveUnstoredPhoneAck:
  2097 				ret=ActionRxEventUnstoredPhoneAck(ESmsEventRxTimer);
  2105 				ret=ActionRxEventUnstoredPhoneAck(ESmsEventRxTimer);
  2098 				break;
  2106 				break;
  2099 			case RMobileSmsMessaging::EReceiveStored:
  2107 			case RMobileSmsMessaging::EReceiveStored:
  2100 				LOGSMS1("Recieve Stored SMS Rx Event.");
  2108 				OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_TIMERCALLBACK_2, "Recieve Stored SMS Rx Event.");
  2101 				ret=ActionRxEventStored(ESmsEventRxTimer);
  2109 				ret=ActionRxEventStored(ESmsEventRxTimer);
  2102 				break;
  2110 				break;
  2103 			default://other receive modes cannot be set
  2111 			default://other receive modes cannot be set
  2104 				break;
  2112 				break;
  2105 				}//end switch
  2113 				}//end switch
  2106 
  2114 
  2107 			if (ret != KErrNone)
  2115 			if (ret != KErrNone)
  2108 				{
  2116 				{
  2109 				LOGSMS2("ERROR: Unexpected ret code %d", ret);
  2117 				OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_TIMERCALLBACK_3, "ERROR: Unexpected ret code %d", ret);
  2110 				__ASSERT_ALWAYS(ret==KErrNone,SimPanic(EIllegalSmsRxEvent, __LINE__));	// There should be no error from this action, but to check...
  2118 				__ASSERT_ALWAYS(ret==KErrNone,SimPanic(EIllegalSmsRxEvent, __LINE__));	// There should be no error from this action, but to check...
  2111 				}
  2119 				}
  2112 
  2120 
  2113 			break;
  2121 			break;
  2114 			}
  2122 			}
  2129 			}
  2137 			}
  2130 
  2138 
  2131 		default:
  2139 		default:
  2132 			break;
  2140 			break;
  2133 		}
  2141 		}
  2134 	LOGSMS1(">>CSimSmsMesaging::TimerCallBack OUT");
  2142 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_TIMERCALLBACK_4, ">>CSimSmsMesaging::TimerCallBack OUT");
  2135 	}
  2143 	}
  2136 
  2144 
  2137 const CTestConfigSection* CSimSmsMessaging::CfgFileSection()
  2145 const CTestConfigSection* CSimSmsMessaging::CfgFileSection()
  2138 /**
  2146 /**
  2139 * Returns a pointer to the config file section
  2147 * Returns a pointer to the config file section
  2140 *
  2148 *
  2141 * @return CTestConfigSection a pointer to the configuration file data section
  2149 * @return CTestConfigSection a pointer to the configuration file data section
  2142 */
  2150 */
  2143 	{
  2151 	{
  2144 	LOGSMS1(">>CSimSmsMessaging::CfgFileSection");
  2152 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_CFGFILESECTION_1, ">>CSimSmsMessaging::CfgFileSection");
  2145 	return iPhone->CfgFile();
  2153 	return iPhone->CfgFile();
  2146 	}
  2154 	}
  2147 
  2155 
  2148 
  2156 
  2149 void CSimSmsMessaging::ReloadConfigurationSettingsL()
  2157 void CSimSmsMessaging::ReloadConfigurationSettingsL()
  2194 		}
  2202 		}
  2195 	des.Append(0);
  2203 	des.Append(0);
  2196 	return hexBuf;
  2204 	return hexBuf;
  2197 	}
  2205 	}
  2198 
  2206 
  2199 #ifdef _DEBUG // to prevent UREL build warnings
  2207 #if (OST_TRACE_CATEGORY & OST_TRACE_CATEGORY_DEBUG) // to prevent UREL build warnings
  2200 void CSimSmsMessaging::DumpPdu(const TDesC8& aText, TDesC8& aSmsPdu, HBufC8* aPduInAscii)
  2208 void CSimSmsMessaging::DumpPdu(const TDesC8& aText, TDesC8& aSmsPdu, HBufC8* aPduInAscii)
  2201 #else
  2209 #else
  2202 void CSimSmsMessaging::DumpPdu(const TDesC8& /*aText*/, TDesC8& aSmsPdu, HBufC8* aPduInAscii)
  2210 void CSimSmsMessaging::DumpPdu(const TDesC8& /*aText*/, TDesC8& aSmsPdu, HBufC8* aPduInAscii)
  2203 #endif
  2211 #endif
  2204 /**
  2212 /**
  2206 @param aText - a header line about the PDU.
  2214 @param aText - a header line about the PDU.
  2207 @param aSmsPdu - PDU to log.
  2215 @param aSmsPdu - PDU to log.
  2208 @param aPduInAscii - aSmsPdu in ASCII format (default NULL).
  2216 @param aPduInAscii - aSmsPdu in ASCII format (default NULL).
  2209 */
  2217 */
  2210     {
  2218     {
  2211 	LOGSMS3("%S pdu length=%d", &aText, aSmsPdu.Length());
  2219 #if (OST_TRACE_CATEGORY & OST_TRACE_CATEGORY_DEBUG)    // to stop the UREL build warnings    
       
  2220 	OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_DUMPPDU1_1, "%s pdu length=%d", aText, aSmsPdu.Length());
       
  2221 #endif	
  2212 
  2222 
  2213     if( !aSmsPdu.Length() )
  2223     if( !aSmsPdu.Length() )
  2214         return;
  2224         return;
  2215 
  2225 
  2216 	// In sendPdu case, caller needs to call PduToAscii for comparison.
  2226 	// In sendPdu case, caller needs to call PduToAscii for comparison.
  2222 	//Print the pdu in a loop because LOGTEXT can only print up to 150 characters
  2232 	//Print the pdu in a loop because LOGTEXT can only print up to 150 characters
  2223 	for (TInt i = 0; i < hexBuf->Length(); i+=100)
  2233 	for (TInt i = 0; i < hexBuf->Length(); i+=100)
  2224 	    {
  2234 	    {
  2225 		TInt len = Min(100, hexBuf->Mid(i).Length());
  2235 		TInt len = Min(100, hexBuf->Mid(i).Length());
  2226         TPtrC8 pduChunk(hexBuf->Mid(i).Left(len).Ptr(), len);
  2236         TPtrC8 pduChunk(hexBuf->Mid(i).Left(len).Ptr(), len);
  2227 		LOGSMS2("PDU Chunk: %S:", &pduChunk);
  2237 		OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_DUMPPDU1_2, "PDU Chunk: %s:", pduChunk);
  2228 		}
  2238 		}
  2229 
  2239 
  2230 	if (0 == aPduInAscii)
  2240 	if (0 == aPduInAscii)
  2231 	  delete hexBuf;
  2241 	  delete hexBuf;
  2232     }
  2242     }
  2233 
  2243 
  2234 #ifdef _DEBUG
  2244 #if (OST_TRACE_CATEGORY & OST_TRACE_CATEGORY_DEBUG)
  2235 
  2245 
  2236 /**
  2246 /**
  2237 Appends Type of number and Numbering plan identification to TBuf8 buffer.
  2247 Appends Type of number and Numbering plan identification to TBuf8 buffer.
  2238 
  2248 
  2239 @param aBuffer Name of aTon will be appended to this buffer.
  2249 @param aBuffer Name of aTon will be appended to this buffer.
  2355 	_LIT8(KMSGREF,		"   iMsgRef:     ");
  2365 	_LIT8(KMSGREF,		"   iMsgRef:     ");
  2356 	_LIT8(KSUBMITREP,	"   iSubmitRep:  ");
  2366 	_LIT8(KSUBMITREP,	"   iSubmitRep:  ");
  2357 
  2367 
  2358 	TBuf8<KTextWidth> buffer;
  2368 	TBuf8<KTextWidth> buffer;
  2359 
  2369 
  2360 	LOGSMS1("Send Sms Attributes:");
  2370 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_LOGTMOBILESMSATTRIBUTESV1_1, "Send Sms Attributes:");
  2361 	
  2371 	
  2362 	buffer.Zero();
  2372 	buffer.Zero();
  2363 	buffer.Copy(KFLAGS);
  2373 	buffer.Copy(KFLAGS);
  2364 	buffer.Append(_L8("0x"));
  2374 	buffer.Append(_L8("0x"));
  2365 	buffer.AppendFormat(_L8("%08X") , ((TInt)(aSmsAttributesV1.iFlags)));
  2375 	buffer.AppendFormat(_L8("%08X") , ((TInt)(aSmsAttributesV1.iFlags)));
  2366 	LOGSMS2("Buffer: %S", &buffer);
  2376 	OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_LOGTMOBILESMSATTRIBUTESV1_2, "Buffer: %s", buffer);
  2367 
  2377 
  2368 	if(aSmsAttributesV1.iFlags & RMobileSmsMessaging::KGsmServiceCentre)
  2378 	if(aSmsAttributesV1.iFlags & RMobileSmsMessaging::KGsmServiceCentre)
  2369 		{
  2379 		{
  2370 		buffer.Zero();
  2380 		buffer.Zero();
  2371 		buffer.Copy(KSCADDR);
  2381 		buffer.Copy(KSCADDR);
  2372 		buffer.Append(aSmsAttributesV1.iGsmServiceCentre.iTelNumber);
  2382 		buffer.Append(aSmsAttributesV1.iGsmServiceCentre.iTelNumber);
  2373 		LOGSMS2("buffer: %S", &buffer);
  2383 		OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_LOGTMOBILESMSATTRIBUTESV1_3, "Buffer: %s", buffer);
  2374 
  2384 
  2375 		buffer.Zero();
  2385 		buffer.Zero();
  2376 		buffer.Copy(KSCADDRTON);
  2386 		buffer.Copy(KSCADDRTON);
  2377 		AppendTonToBuffer(buffer,(aSmsAttributesV1.iGsmServiceCentre.iTypeOfNumber));
  2387 		AppendTonToBuffer(buffer,(aSmsAttributesV1.iGsmServiceCentre.iTypeOfNumber));
  2378 		LOGSMS2("buffer: %S", &buffer);
  2388 		OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_LOGTMOBILESMSATTRIBUTESV1_4, "Buffer: %s", buffer);;
  2379 
  2389 
  2380 		buffer.Zero();
  2390 		buffer.Zero();
  2381 		buffer.Copy(KSCADDRNPI);
  2391 		buffer.Copy(KSCADDRNPI);
  2382 		AppendNpiToBuffer(buffer,(aSmsAttributesV1.iGsmServiceCentre.iNumberPlan));		   
  2392 		AppendNpiToBuffer(buffer,(aSmsAttributesV1.iGsmServiceCentre.iNumberPlan));		   
  2383 		LOGSMS2("buffer: %S", &buffer);
  2393 		OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_LOGTMOBILESMSATTRIBUTESV1_5, "Buffer: %s", buffer);
  2384 		}
  2394 		}
  2385 	if(aSmsAttributesV1.iFlags & RMobileSmsMessaging::KSmsDataFormat)
  2395 	if(aSmsAttributesV1.iFlags & RMobileSmsMessaging::KSmsDataFormat)
  2386 		{
  2396 		{
  2387 		buffer.Zero();
  2397 		buffer.Zero();
  2388 		buffer.Copy(KDATAFORMAT);
  2398 		buffer.Copy(KDATAFORMAT);
  2392 			}
  2402 			}
  2393 		else if(aSmsAttributesV1.iDataFormat == RMobileSmsMessaging::EFormatGsmTpdu)
  2403 		else if(aSmsAttributesV1.iDataFormat == RMobileSmsMessaging::EFormatGsmTpdu)
  2394 			{
  2404 			{
  2395 			buffer.Append(_L("EFormatGsmTpdu"));
  2405 			buffer.Append(_L("EFormatGsmTpdu"));
  2396 			}		
  2406 			}		
  2397 		LOGSMS2("buffer: %S", &buffer);
  2407 		OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_LOGTMOBILESMSATTRIBUTESV1_6, "Buffer: %s", buffer);
  2398 		}
  2408 		}
  2399 	if(aSmsAttributesV1.iFlags & RMobileSmsMessaging::KRemotePartyInfo)
  2409 	if(aSmsAttributesV1.iFlags & RMobileSmsMessaging::KRemotePartyInfo)
  2400 		{
  2410 		{
  2401 		const RMobileSmsMessaging::TMobileSmsSendAttributesV1& smsSendAttributesV1 = static_cast<const RMobileSmsMessaging::TMobileSmsSendAttributesV1&> (aSmsAttributesV1);
  2411 		const RMobileSmsMessaging::TMobileSmsSendAttributesV1& smsSendAttributesV1 = static_cast<const RMobileSmsMessaging::TMobileSmsSendAttributesV1&> (aSmsAttributesV1);
  2402 
  2412 
  2403 		buffer.Zero();
  2413 		buffer.Zero();
  2404 		buffer.Copy(KDEADDR);
  2414 		buffer.Copy(KDEADDR);
  2405 		buffer.Append(smsSendAttributesV1.iDestination.iTelNumber);
  2415 		buffer.Append(smsSendAttributesV1.iDestination.iTelNumber);
  2406 		LOGSMS2("buffer: %S", &buffer);
  2416 		OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_LOGTMOBILESMSATTRIBUTESV1_7, "Buffer: %s", buffer);
  2407 
  2417 
  2408 		buffer.Zero();
  2418 		buffer.Zero();
  2409 		buffer.Copy(KDEADDRTON);
  2419 		buffer.Copy(KDEADDRTON);
  2410 		AppendTonToBuffer(buffer,(smsSendAttributesV1.iDestination.iTypeOfNumber));
  2420 		AppendTonToBuffer(buffer,(smsSendAttributesV1.iDestination.iTypeOfNumber));
  2411 		LOGSMS2("buffer: %S", &buffer);
  2421 		OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_LOGTMOBILESMSATTRIBUTESV1_8, "Buffer: %s", buffer);
  2412 
  2422 
  2413 		buffer.Zero();
  2423 		buffer.Zero();
  2414 		buffer.Copy(KDEADDRNPI);
  2424 		buffer.Copy(KDEADDRNPI);
  2415 		AppendNpiToBuffer(buffer,(smsSendAttributesV1.iDestination.iNumberPlan)); 
  2425 		AppendNpiToBuffer(buffer,(smsSendAttributesV1.iDestination.iNumberPlan)); 
  2416 		LOGSMS2("buffer: %S", &buffer);
  2426 		OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_LOGTMOBILESMSATTRIBUTESV1_9, "Buffer: %s", buffer);
  2417 		}
  2427 		}
  2418 	if(aSmsAttributesV1.iFlags & RMobileSmsMessaging::KMoreToSend)
  2428 	if(aSmsAttributesV1.iFlags & RMobileSmsMessaging::KMoreToSend)
  2419 		{
  2429 		{
  2420 		const RMobileSmsMessaging::TMobileSmsSendAttributesV1& smsSendAttributesV1 = static_cast<const RMobileSmsMessaging::TMobileSmsSendAttributesV1&> (aSmsAttributesV1);
  2430 		const RMobileSmsMessaging::TMobileSmsSendAttributesV1& smsSendAttributesV1 = static_cast<const RMobileSmsMessaging::TMobileSmsSendAttributesV1&> (aSmsAttributesV1);
  2421 
  2431 
  2428 			}
  2438 			}
  2429 		else
  2439 		else
  2430 			{
  2440 			{
  2431 			buffer.Append(_L8("EFalse"));
  2441 			buffer.Append(_L8("EFalse"));
  2432 			}
  2442 			}
  2433 		LOGSMS2("buffer: %S", &buffer);
  2443 		OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_LOGTMOBILESMSATTRIBUTESV1_10, "Buffer: %s", buffer);
  2434 		}
  2444 		}
  2435 	if(aSmsAttributesV1.iFlags & RMobileSmsMessaging::KMessageReference)
  2445 	if(aSmsAttributesV1.iFlags & RMobileSmsMessaging::KMessageReference)
  2436 		{
  2446 		{
  2437 		const RMobileSmsMessaging::TMobileSmsSendAttributesV1& smsSendAttributesV1 = static_cast<const RMobileSmsMessaging::TMobileSmsSendAttributesV1&> (aSmsAttributesV1);
  2447 		const RMobileSmsMessaging::TMobileSmsSendAttributesV1& smsSendAttributesV1 = static_cast<const RMobileSmsMessaging::TMobileSmsSendAttributesV1&> (aSmsAttributesV1);
  2438 
  2448 
  2439 		buffer.Zero();
  2449 		buffer.Zero();
  2440 		buffer.Copy(KMSGREF);
  2450 		buffer.Copy(KMSGREF);
  2441 		buffer.Append(_L("0x"));
  2451 		buffer.Append(_L("0x"));
  2442 		buffer.AppendFormat(_L8("%08X") , smsSendAttributesV1.iMsgRef);
  2452 		buffer.AppendFormat(_L8("%08X") , smsSendAttributesV1.iMsgRef);
  2443 		LOGSMS2("buffer: %S", &buffer);
  2453 		OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_LOGTMOBILESMSATTRIBUTESV1_11, "Buffer: %s", buffer);
  2444 		}
  2454 		}
  2445 
  2455 
  2446 	if(aSmsAttributesV1.iFlags & RMobileSmsMessaging::KGsmSubmitReport)
  2456 	if(aSmsAttributesV1.iFlags & RMobileSmsMessaging::KGsmSubmitReport)
  2447 		{
  2457 		{
  2448 		const RMobileSmsMessaging::TMobileSmsSendAttributesV1& smsSendAttributesV1 = static_cast<const RMobileSmsMessaging::TMobileSmsSendAttributesV1&> (aSmsAttributesV1);
  2458 		const RMobileSmsMessaging::TMobileSmsSendAttributesV1& smsSendAttributesV1 = static_cast<const RMobileSmsMessaging::TMobileSmsSendAttributesV1&> (aSmsAttributesV1);
  2464 					break;
  2474 					break;
  2465 					}
  2475 					}
  2466 				buffer.AppendFormat(_L8("%X") , smsSendAttributesV1.iSubmitReport[j]);
  2476 				buffer.AppendFormat(_L8("%X") , smsSendAttributesV1.iSubmitReport[j]);
  2467 				j++;
  2477 				j++;
  2468 				}
  2478 				}
  2469 			LOGSMS2("buffer: %S", &buffer);
  2479 			OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMSMSMESSAGING_LOGTMOBILESMSATTRIBUTESV1_12, "Buffer: %s", buffer);
  2470 			buffer.Zero();
  2480 			buffer.Zero();
  2471 			i=0;
  2481 			i=0;
  2472 			l+=KTextWidth;
  2482 			l+=KTextWidth;
  2473 			}
  2483 			}
  2474 		while(l < k);
  2484 		while(l < k);