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