telephonyserverplugins/simtsy/src/CSimPhBkUsimStore.cpp
branchRCL_3
changeset 20 07a122eea281
parent 19 630d2f34d719
equal deleted inserted replaced
19:630d2f34d719 20: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".
    17 
    17 
    18 /**
    18 /**
    19  @file
    19  @file
    20 */
    20 */
    21 
    21 
    22 
       
    23 
       
    24 #include "OstTraceDefinitions.h"
       
    25 #ifdef OST_TRACE_COMPILER_IN_USE
       
    26 #include "CSimPhBkUsimStoreTraces.h"
       
    27 #endif
       
    28 
       
    29 #include "CSimPhBkUsimStore.h"
    22 #include "CSimPhBkUsimStore.h"
    30 #include "CSimPhone.h"
    23 #include "CSimPhone.h"
       
    24 #include "Simlog.h"
    31 #include <testconfigfileparser.h>
    25 #include <testconfigfileparser.h>
    32 
    26 
    33 const TUint16 KNpiTonInternational=145;		// < The Number Plan Identifier and Type of Number for an international telephone number.
    27 const TUint16 KNpiTonInternational=145;		// < The Number Plan Identifier and Type of Number for an international telephone number.
    34 const TUint16 KNpiTonNational=129;			// < The Number Plan Identifier and Type of Number for a national telephone number.
    28 const TUint16 KNpiTonNational=129;			// < The Number Plan Identifier and Type of Number for a national telephone number.
    35 const TInt KMaxGroups = 10;					// < The maximum allowed number of groups associated with a phonebook entry
    29 const TInt KMaxGroups = 10;					// < The maximum allowed number of groups associated with a phonebook entry
    93  * @param aMaxEmail		The maximum number of email addresses associated with an entry.
    87  * @param aMaxEmail		The maximum number of email addresses associated with an entry.
    94  * @param aMaxAdditionalTelNumLen	The maximum length of the an additional telephone number.
    88  * @param aMaxAdditionalTelNumLen	The maximum length of the an additional telephone number.
    95  * @param aMaxAdditionalTextLen		The maximum length of the alpha tag in an additional telephone number.
    89  * @param aMaxAdditionalTextLen		The maximum length of the alpha tag in an additional telephone number.
    96  */
    90  */
    97 	{
    91 	{
    98 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_CONSTRUCTL_1, "Starting to parse Phonebook store additional config parameters...");
    92 	LOGPHBK1("Starting to parse Phonebook store additional config parameters...");
    99 	__ASSERT_ALWAYS(aMaxNumLen<=KPhBkMaxTelNumSize,SimPanic(EPhonebookNameOrNumberTooLarge));
    93 	__ASSERT_ALWAYS(aMaxNumLen<=KPhBkMaxTelNumSize,SimPanic(EPhonebookNameOrNumberTooLarge));
   100 	__ASSERT_ALWAYS(aMaxTextLen<=KPhBkMaxAlphaTagSize,SimPanic(EPhonebookNameOrNumberTooLarge));
    94 	__ASSERT_ALWAYS(aMaxTextLen<=KPhBkMaxAlphaTagSize,SimPanic(EPhonebookNameOrNumberTooLarge));
   101 
    95 
   102 	iPhBkMaxNumSlots=aMaxNumSlots;
    96 	iPhBkMaxNumSlots=aMaxNumSlots;
   103 	iPhBkMaxTelNumLen=aMaxNumLen;
    97 	iPhBkMaxTelNumLen=aMaxNumLen;
   139 		TInt ipc, cnt, event;
   133 		TInt ipc, cnt, event;
   140 
   134 
   141 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,ipc);
   135 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,ipc);
   142 		if(ret!=KErrNone)
   136 		if(ret!=KErrNone)
   143 			{
   137 			{
   144 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_CONSTRUCTL_2, "WARNING - CONFIGURATION FILE PARSING - Reading element IPC returned %d (element no. %d) from tag %s.",ret,0,KTriggerEventIPC);
   138 			LOGPARSERR("ipc",ret,0,&KTriggerEventIPC);
   145 			}
   139 			}
   146 		else
   140 		else
   147 			iTriggerEventIPC.iIPC=ipc;
   141 			iTriggerEventIPC.iIPC=ipc;
   148 
   142 
   149 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,cnt);
   143 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,cnt);
   150 		if(ret!=KErrNone)
   144 		if(ret!=KErrNone)
   151 			{
   145 			{
   152 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_CONSTRUCTL_3, "WARNING - CONFIGURATION FILE PARSING - Reading element CNT returned %d (element no. %d) from tag %s.",ret,1,KTriggerEventIPC);
   146 			LOGPARSERR("cnt",ret,1,&KTriggerEventIPC);
   153 			}
   147 			}
   154 		else
   148 		else
   155 			iTriggerEventIPC.iIPCCnt=cnt;
   149 			iTriggerEventIPC.iIPCCnt=cnt;
   156 		
   150 		
   157 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,event);
   151 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,event);
   158 		if(ret!=KErrNone)
   152 		if(ret!=KErrNone)
   159 			{
   153 			{
   160 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_CONSTRUCTL_4, "WARNING - CONFIGURATION FILE PARSING - Reading element EVENT returned %d (element no. %d) from tag %s.",ret,2,KTriggerEventIPC);
   154 			LOGPARSERR("event",ret,2,&KTriggerEventIPC);
   161 			}
   155 			}
   162 		else
   156 		else
   163 			iTriggerEventIPC.iEvent=RMobilePhone::TMobilePhoneSecurityEvent(event);
   157 			iTriggerEventIPC.iEvent=RMobilePhone::TMobilePhoneSecurityEvent(event);
   164 
   158 
   165 		}
   159 		}
   183 
   177 
   184 				ret0=CTestConfig::GetElement(item0->Value(),KStdDelimiter,0,phonebookStore);
   178 				ret0=CTestConfig::GetElement(item0->Value(),KStdDelimiter,0,phonebookStore);
   185 				if(ret0!=KErrNone)
   179 				if(ret0!=KErrNone)
   186 					{
   180 					{
   187 					iPhBkStoreCaps=KDefaultPhBkPhoneStoreCaps;
   181 					iPhBkStoreCaps=KDefaultPhBkPhoneStoreCaps;
   188 					OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_CONSTRUCTL_5, "WARNING - CONFIGURATION FILE PARSING - Reading element CAPS:PHONEBOOKSTORE returned %d (element no. %d) from tag %s.",ret,0,KPhBkPhoneUSimStoreCaps);
   182 					LOGPARSERR("Caps:PhonebookStore",ret,0,&KPhBkPhoneUSimStoreCaps);
   189 					}	
   183 					}	
   190 
   184 
   191 				if(phonebookStore.MatchF(iPhBkStore)!=0)// Not this PhBkStore type
   185 				if(phonebookStore.MatchF(iPhBkStore)!=0)// Not this PhBkStore type
   192 					continue;
   186 					continue;
   193 
   187 
   194 				ret0=CTestConfig::GetElement(item0->Value(),KStdDelimiter,1,phonebookName);
   188 				ret0=CTestConfig::GetElement(item0->Value(),KStdDelimiter,1,phonebookName);
   195 				if(ret0!=KErrNone)
   189 				if(ret0!=KErrNone)
   196 					{
   190 					{
   197 					iPhBkStoreCaps=KDefaultPhBkPhoneStoreCaps;
   191 					iPhBkStoreCaps=KDefaultPhBkPhoneStoreCaps;
   198 					OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_CONSTRUCTL_6, "WARNING - CONFIGURATION FILE PARSING - Reading element PHONEBOOKNAME returned %d (element no. %d) from tag %s.",ret,1,KPhBkPhoneUSimStoreCaps);
   192 					LOGPARSERR("phonebookName",ret,1,&KPhBkPhoneUSimStoreCaps);
   199 					}	
   193 					}	
   200 				
   194 				
   201 				if(phonebookName.MatchF(iPhBkStoreName)!=0)// Not this PhBkStoreName type
   195 				if(phonebookName.MatchF(iPhBkStoreName)!=0)// Not this PhBkStoreName type
   202 					continue;
   196 					continue;
   203 				
   197 				
   204 				ret0=CTestConfig::GetElement(item0->Value(),KStdDelimiter,2,value0);
   198 				ret0=CTestConfig::GetElement(item0->Value(),KStdDelimiter,2,value0);
   205 				if(ret0!=KErrNone)
   199 				if(ret0!=KErrNone)
   206 					{
   200 					{
   207 					iPhBkStoreCaps=KDefaultPhBkPhoneStoreCaps;
   201 					iPhBkStoreCaps=KDefaultPhBkPhoneStoreCaps;
   208 					OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_CONSTRUCTL_7, "WARNING - CONFIGURATION FILE PARSING - Reading element CAPS returned %d (element no. %d) from tag %s.",ret,2,KPhBkPhoneUSimStoreCaps);
   202 					LOGPARSERR("caps",ret,2,&KPhBkPhoneUSimStoreCaps);
   209 					}	
   203 					}	
   210 				else
   204 				else
   211 					{
   205 					{
   212 					TUint32 intValue;
   206 					TUint32 intValue;
   213 					TInt ret = AsciiToNum(value0, intValue);
   207 					TInt ret = AsciiToNum(value0, intValue);
   221 					}
   215 					}
   222 				
   216 				
   223 				}
   217 				}
   224 			}
   218 			}
   225 	}
   219 	}
   226 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_CONSTRUCTL_8, "...Finished parsing Phonebook store additional config parameters...");
   220 	LOGPHBK1("...Finished parsing Phonebook store additional config parameters...");
   227 	}
   221 	}
   228 
   222 
   229 void CSimPhBkUSimStore::PopulateStoreFromConfigFileL()
   223 void CSimPhBkUSimStore::PopulateStoreFromConfigFileL()
   230 /**
   224 /**
   231  * Populate the Phonebook Store from information in the configuration file.  This is performed
   225  * Populate the Phonebook Store from information in the configuration file.  This is performed
   235  *
   229  *
   236  * The store entries comply to the following format:
   230  * The store entries comply to the following format:
   237  * "PhBkStoreEntry = <store name>, <slot number>, <telephone number>, <alphatag>"
   231  * "PhBkStoreEntry = <store name>, <slot number>, <telephone number>, <alphatag>"
   238  */
   232  */
   239 	{
   233 	{
   240 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATESTOREFROMCONFIGFILEL_1, "Starting to read Phonebook store entries...");
   234 	LOGPHBK1("Starting to read Phonebook store entries...");
   241 	iPhBkIndividualPause=CfgFile()->ItemValue(KPhBkStoreIndividualReqPause,KDefaultPhBkStoreIndividualReqPause);
   235 	iPhBkIndividualPause=CfgFile()->ItemValue(KPhBkStoreIndividualReqPause,KDefaultPhBkStoreIndividualReqPause);
   242 	iPhBkBatchPause=CfgFile()->ItemValue(KPhBkStoreBatchReqPause,KDefaultPhBkStoreBatchReqPause);
   236 	iPhBkBatchPause=CfgFile()->ItemValue(KPhBkStoreBatchReqPause,KDefaultPhBkStoreBatchReqPause);
   243 
   237 
   244 	const CTestConfigItem* item=NULL;
   238 	const CTestConfigItem* item=NULL;
   245 	TInt ret=KErrNone;
   239 	TInt ret=KErrNone;
   260 		TInt index;
   254 		TInt index;
   261 		TUint8 npiTon;
   255 		TUint8 npiTon;
   262 		ret=GetPhBkUSimEntry(item,parseIndex,phonebookStore,phonebookName,aid,index,telNum,alphaTag,npiTon,alphaTag2);
   256 		ret=GetPhBkUSimEntry(item,parseIndex,phonebookStore,phonebookName,aid,index,telNum,alphaTag,npiTon,alphaTag2);
   263 		if(ret!=KErrNone)
   257 		if(ret!=KErrNone)
   264 			{
   258 			{
   265 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATESTOREFROMCONFIGFILEL_2, "WARNING - CONFIGURATION FILE PARSING - Reading element PHONEBOOK ENTRY returned %d (element no. %d) from tag %s.",ret,index,KPhBkUSimStoreEntry);
   259 			LOGPARSERR("Phonebook Entry",ret,index,&KPhBkUSimStoreEntry);
   266 			continue;
   260 			continue;
   267 			}
   261 			}
   268 
   262 
   269 		if(phonebookStore.MatchF(iPhBkStore)!=0)// Not this PhBkStore type
   263 		if(phonebookStore.MatchF(iPhBkStore)!=0)// Not this PhBkStore type
   270 			continue;
   264 			continue;
   304 		iPhBkUSimStoreEntries[index].iAlphaTag2.Copy(alphaTag2);
   298 		iPhBkUSimStoreEntries[index].iAlphaTag2.Copy(alphaTag2);
   305 	
   299 	
   306 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,parseIndex++,additional);
   300 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,parseIndex++,additional);
   307 		if(ret!=KErrNone)
   301 		if(ret!=KErrNone)
   308 			{
   302 			{
   309 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATESTOREFROMCONFIGFILEL_3, "WARNING - CONFIGURATION FILE PARSING - Reading element ADDITIONAL returned %d (element no. %d) from tag %s.",ret,parseIndex,KPhBkUSimStoreEntry);
   303 			LOGPARSERR("additional",ret,parseIndex,&KPhBkUSimStoreEntry);
   310 			}
   304 			}
   311 		else
   305 		else
   312 			{	
   306 			{	
   313 			TPtrC8 myName,myNum;
   307 			TPtrC8 myName,myNum;
   314 			TUint8 myTon;
   308 			TUint8 myTon;
   331 			}
   325 			}
   332 	
   326 	
   333 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,parseIndex++,emails);
   327 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,parseIndex++,emails);
   334 		if(ret!=KErrNone)
   328 		if(ret!=KErrNone)
   335 			{
   329 			{
   336 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATESTOREFROMCONFIGFILEL_4, "WARNING - CONFIGURATION FILE PARSING - Reading element EMAILS returned %d (element no. %d) from tag %s.",ret,parseIndex,KPhBkUSimStoreEntry);
   330 			LOGPARSERR("emails",ret,parseIndex,&KPhBkUSimStoreEntry);
   337 			}
   331 			}
   338 		else
   332 		else
   339 		{	
   333 		{	
   340 			TPtrC8 myemail;
   334 			TPtrC8 myemail;
   341 			TInt myindex=0;
   335 			TInt myindex=0;
   352 		}
   346 		}
   353 
   347 
   354 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,parseIndex++,groups);
   348 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,parseIndex++,groups);
   355 		if(ret!=KErrNone)
   349 		if(ret!=KErrNone)
   356 			{
   350 			{
   357 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATESTOREFROMCONFIGFILEL_5, "WARNING - CONFIGURATION FILE PARSING - Reading element GROUPS returned %d (element no. %d) from tag %s.",ret,parseIndex,KPhBkUSimStoreEntry);
   351 			LOGPARSERR("groups",ret,parseIndex,&KPhBkUSimStoreEntry);
   358 			}
   352 			}
   359 		else
   353 		else
   360 		{	
   354 		{	
   361 
   355 
   362 			TPtrC8 mygroup;
   356 			TPtrC8 mygroup;
   376 
   370 
   377 		TBool hidden;
   371 		TBool hidden;
   378 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,parseIndex++,hidden);
   372 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,parseIndex++,hidden);
   379 		if(ret!=KErrNone)
   373 		if(ret!=KErrNone)
   380 			{
   374 			{
   381 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATESTOREFROMCONFIGFILEL_6, "WARNING - CONFIGURATION FILE PARSING - Reading element EMAILS returned %d (element no. %d) from tag %s.",ret,parseIndex,KPhBkUSimStoreEntry);
   375 			LOGPARSERR("emails",ret,parseIndex,&KPhBkUSimStoreEntry);
   382 			}
   376 			}
   383 		else
   377 		else
   384 			iPhBkUSimStoreEntries[index].iHiddenEntry=hidden;
   378 			iPhBkUSimStoreEntries[index].iHiddenEntry=hidden;
   385 
   379 
   386 		}
   380 		}
   398 		TPtrC8 phonebookName, phonebookStore;
   392 		TPtrC8 phonebookName, phonebookStore;
   399 
   393 
   400 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,count);
   394 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,count);
   401 		if(ret!=KErrNone)
   395 		if(ret!=KErrNone)
   402 			{
   396 			{
   403 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATESTOREFROMCONFIGFILEL_7, "WARNING - CONFIGURATION FILE PARSING - Reading element COUNT returned %d (element no. %d) from tag %s.",ret,0,KPhBkError);
   397 			LOGPARSERR("count",ret,0,&KPhBkError);
   404 			continue;
   398 			continue;
   405 			}
   399 			}
   406 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,error);
   400 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,error);
   407 		if(ret!=KErrNone)
   401 		if(ret!=KErrNone)
   408 			{
   402 			{
   409 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATESTOREFROMCONFIGFILEL_8, "WARNING - CONFIGURATION FILE PARSING - Reading element ERROR returned %d (element no. %d) from tag %s.",ret,1,KPhBkError);
   403 			LOGPARSERR("error",ret,1,&KPhBkError);
   410 			continue;
   404 			continue;
   411 			}
   405 			}
   412 		
   406 		
   413 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,phonebookName);
   407 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,phonebookName);
   414 		if(ret!=KErrNone)
   408 		if(ret!=KErrNone)
   415 			{
   409 			{
   416 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATESTOREFROMCONFIGFILEL_9, "WARNING - CONFIGURATION FILE PARSING - Reading element PHONEBOOKNAME returned %d (element no. %d) from tag %s.",ret,2,KPhBkError);
   410 			LOGPARSERR("phonebookName",ret,2,&KPhBkError);
   417 			continue;
   411 			continue;
   418 			}
   412 			}
   419 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,3,phonebookStore);
   413 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,3,phonebookStore);
   420 		if(ret!=KErrNone)
   414 		if(ret!=KErrNone)
   421 			{
   415 			{
   422 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATESTOREFROMCONFIGFILEL_10, "WARNING - CONFIGURATION FILE PARSING - Reading element PHONEBOOKSTORE returned %d (element no. %d) from tag %s.",ret,3,KPhBkError);
   416 			LOGPARSERR("phonebookStore",ret,3,&KPhBkError);
   423 			//global phonebook error
   417 			//global phonebook error
   424 			continue;
   418 			continue;
   425 			}
   419 			}
   426 		
   420 		
   427 		if(phonebookName.MatchF(iPhBkStoreName)!=0)// Not this phonebook
   421 		if(phonebookName.MatchF(iPhBkStoreName)!=0)// Not this phonebook
   434 		entry.iError=error;
   428 		entry.iError=error;
   435 		TRAP_IGNORE(iPhBkError->AppendL(entry));
   429 		TRAP_IGNORE(iPhBkError->AppendL(entry));
   436 		}
   430 		}
   437 	PopulateOOBWrite();
   431 	PopulateOOBWrite();
   438 	PopulateOOBDelete();
   432 	PopulateOOBDelete();
   439 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATESTOREFROMCONFIGFILEL_11, "...Finished reading Phonebook store entries...");
   433 	LOGPHBK1("...Finished reading Phonebook store entries...");
   440 
   434 
   441 	if(iPhBkOOBWriteDuration!=-1)
   435 	if(iPhBkOOBWriteDuration!=-1)
   442 		iOOBWriteTimer->Start(iPhBkOOBWriteDuration,this,ETimerIdPhBkUSimStorOOBWrite);
   436 		iOOBWriteTimer->Start(iPhBkOOBWriteDuration,this,ETimerIdPhBkUSimStorOOBWrite);
   443 	if(iPhBkOOBDeleteDuration!=-1)
   437 	if(iPhBkOOBDeleteDuration!=-1)
   444 		iOOBDeleteTimer->Start(iPhBkOOBDeleteDuration,this,ETimerIdPhBkUSimStorOOBDelete);
   438 		iOOBDeleteTimer->Start(iPhBkOOBDeleteDuration,this,ETimerIdPhBkUSimStorOOBDelete);
   460 
   454 
   461 	TInt count;
   455 	TInt count;
   462 	TInt ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,parseIndex++,count);
   456 	TInt ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,parseIndex++,count);
   463 	if(ret!=KErrNone)
   457 	if(ret!=KErrNone)
   464 		{
   458 		{
   465 		OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATEOOBWRITE_1, "WARNING - CONFIGURATION FILE PARSING - Reading element COUNT returned %d (element no. %d) from tag %s.",ret,parseIndex,KOOBPhBkUSimWrite);
   459 		LOGPARSERR("count",ret,parseIndex,&KOOBPhBkUSimWrite);
   466 		return;
   460 		return;
   467 		}
   461 		}
   468 
   462 
   469 	TPtrC8 phonebookStore,aid, phonebookName,alphaTag,telNum,alphaTag2,emails, groups, additional;
   463 	TPtrC8 phonebookStore,aid, phonebookName,alphaTag,telNum,alphaTag2,emails, groups, additional;
   470 	TInt index;
   464 	TInt index;
   471 	TUint8 npiTon;
   465 	TUint8 npiTon;
   472 	ret=GetPhBkUSimEntry(item,parseIndex,phonebookStore,phonebookName,aid,index,telNum,alphaTag,npiTon,alphaTag2);
   466 	ret=GetPhBkUSimEntry(item,parseIndex,phonebookStore,phonebookName,aid,index,telNum,alphaTag,npiTon,alphaTag2);
   473 	if(ret!=KErrNone)
   467 	if(ret!=KErrNone)
   474 		{
   468 		{
   475 		OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATEOOBWRITE_2, "WARNING - CONFIGURATION FILE PARSING - Reading element PHONEBOOK ENTRY returned %d (element no. %d) from tag %s.",ret,parseIndex,KOOBPhBkUSimWrite);
   469 		LOGPARSERR("Phonebook Entry",ret,parseIndex,&KOOBPhBkUSimWrite);
   476 		return;
   470 		return;
   477 		}
   471 		}
   478 
   472 
   479 	if(phonebookStore.MatchF(iPhBkStore)!=0)// Not this PhBkStore type
   473 	if(phonebookStore.MatchF(iPhBkStore)!=0)// Not this PhBkStore type
   480 		return;
   474 		return;
   489 	iPhBkOOBWrite.iAlphaTag2.Copy(alphaTag2);
   483 	iPhBkOOBWrite.iAlphaTag2.Copy(alphaTag2);
   490 
   484 
   491 	ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,parseIndex++,additional);
   485 	ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,parseIndex++,additional);
   492 	if(ret!=KErrNone)
   486 	if(ret!=KErrNone)
   493 		{
   487 		{
   494 		OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATEOOBWRITE_3, "WARNING - CONFIGURATION FILE PARSING - Reading element ADDITIONAL returned %d (element no. %d) from tag %s.",ret,parseIndex,KOOBPhBkUSimWrite);
   488 		LOGPARSERR("additional",ret,parseIndex,&KOOBPhBkUSimWrite);
   495 		}
   489 		}
   496 	else
   490 	else
   497 	{	
   491 	{	
   498 		TPtrC8 myName,myNum;
   492 		TPtrC8 myName,myNum;
   499 		TUint8 myTon;
   493 		TUint8 myTon;
   516 	}
   510 	}
   517 
   511 
   518 	ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,parseIndex++,groups);
   512 	ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,parseIndex++,groups);
   519 	if(ret!=KErrNone)
   513 	if(ret!=KErrNone)
   520 		{
   514 		{
   521 		OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATEOOBWRITE_4, "WARNING - CONFIGURATION FILE PARSING - Reading element GROUPS returned %d (element no. %d) from tag %s.",ret,parseIndex,KOOBPhBkUSimWrite);
   515 		LOGPARSERR("groups",ret,parseIndex,&KOOBPhBkUSimWrite);
   522 		}
   516 		}
   523 	else
   517 	else
   524 	{	
   518 	{	
   525 		TPtrC8 mygroup;
   519 		TPtrC8 mygroup;
   526 		TInt myindex=0;
   520 		TInt myindex=0;
   539 	}
   533 	}
   540 
   534 
   541 	ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,parseIndex++,emails);
   535 	ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,parseIndex++,emails);
   542 	if(ret!=KErrNone)
   536 	if(ret!=KErrNone)
   543 		{
   537 		{
   544 		OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATEOOBWRITE_5, "WARNING - CONFIGURATION FILE PARSING - Reading element EMAILS returned %d (element no. %d) from tag %s.",ret,parseIndex,KOOBPhBkUSimWrite);
   538 		LOGPARSERR("emails",ret,parseIndex,&KOOBPhBkUSimWrite);
   545 		}
   539 		}
   546 	else
   540 	else
   547 	{	
   541 	{	
   548 		TPtrC8 myemail;
   542 		TPtrC8 myemail;
   549 		TInt myindex=0;
   543 		TInt myindex=0;
   579 
   573 
   580 	TInt count;
   574 	TInt count;
   581 	TInt ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,count);
   575 	TInt ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,count);
   582 	if(ret!=KErrNone)
   576 	if(ret!=KErrNone)
   583 		{
   577 		{
   584 		OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATEOOBDELETE_1, "WARNING - CONFIGURATION FILE PARSING - Reading element COUNT returned %d (element no. %d) from tag %s.",ret,0,KOOBPhBkUSimDelete);
   578 		LOGPARSERR("count",ret,0,&KOOBPhBkUSimDelete);
   585 		return;
   579 		return;
   586 		}
   580 		}
   587 
   581 
   588 	TPtrC8 phonebookName, phonebookStore;
   582 	TPtrC8 phonebookName, phonebookStore;
   589 		
   583 		
   590 	ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,phonebookStore);
   584 	ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,phonebookStore);
   591 	if(ret!=KErrNone)
   585 	if(ret!=KErrNone)
   592 		{
   586 		{
   593 		OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATEOOBDELETE_2, "WARNING - CONFIGURATION FILE PARSING - Reading element PHONEBOOKSTORE returned %d (element no. %d) from tag %s.",ret,1,KOOBPhBkUSimDelete);
   587 		LOGPARSERR("phonebookStore",ret,1,&KOOBPhBkUSimDelete);
   594 		return;
   588 		return;
   595 		}
   589 		}
   596 
   590 
   597 	ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,phonebookName);
   591 	ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,phonebookName);
   598 	if(ret!=KErrNone)
   592 	if(ret!=KErrNone)
   599 		{
   593 		{
   600 		OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATEOOBDELETE_3, "WARNING - CONFIGURATION FILE PARSING - Reading element PHONEBOOKNAME returned %d (element no. %d) from tag %s.",ret,2,KOOBPhBkUSimDelete);
   594 		LOGPARSERR("phonebookName",ret,2,&KOOBPhBkUSimDelete);
   601 		return;
   595 		return;
   602 		}
   596 		}
   603 
   597 
   604 	if(phonebookStore.MatchF(iPhBkStore)!=0)
   598 	if(phonebookStore.MatchF(iPhBkStore)!=0)
   605 		return;						// Not this store
   599 		return;						// Not this store
   608 
   602 
   609 	TInt index;
   603 	TInt index;
   610 	ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,3,index);
   604 	ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,3,index);
   611 	if(ret!=KErrNone)
   605 	if(ret!=KErrNone)
   612 		{
   606 		{
   613 		OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_POPULATEOOBDELETE_4, "WARNING - CONFIGURATION FILE PARSING - Reading element INDEX returned %d (element no. %d) from tag %s.",ret,3,KOOBPhBkUSimDelete);
   607 		LOGPARSERR("index",ret,3,&KOOBPhBkUSimDelete);
   614 		return;
   608 		return;
   615 		}
   609 		}
   616 
   610 
   617 	iPhBkOOBDeleteDuration=count;
   611 	iPhBkOOBDeleteDuration=count;
   618 	iPhBkOOBDeleteIndex=index;
   612 	iPhBkOOBDeleteIndex=index;
  1548 			break;
  1542 			break;
  1549 
  1543 
  1550 		case RMobilePhoneBookStore::ETagPBText:
  1544 		case RMobilePhoneBookStore::ETagPBText:
  1551 			ret=iPhBkRwBuffer->GetValue(alphaTag);
  1545 			ret=iPhBkRwBuffer->GetValue(alphaTag);
  1552 
  1546 
  1553 			OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_WRITE_1, "alphaTag (ETagPBText) Length = (%d)",alphaTag.Length());
  1547 			LOGPHBK2("alphaTag (ETagPBText) Length = (%d)",alphaTag.Length());
  1554 			OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_WRITE_2, "Phonebook Max Text Length = (%d)",iPhBkMaxTextLen);
  1548 			LOGPHBK2("Phonebook Max Text Length = (%d)",iPhBkMaxTextLen);
  1555 
  1549 
  1556 			if(!additional && ret==KErrNone && (alphaTag.Length()<=iPhBkMaxTextLen))
  1550 			if(!additional && ret==KErrNone && (alphaTag.Length()<=iPhBkMaxTextLen))
  1557 				iPhBkUSimStoreEntries[index].iAlphaTag.Copy(alphaTag);
  1551 				iPhBkUSimStoreEntries[index].iAlphaTag.Copy(alphaTag);
  1558 			else if(additional && ret==KErrNone && (alphaTag.Length()<=iPhBkMaxAdditionalTextLen)
  1552 			else if(additional && ret==KErrNone && (alphaTag.Length()<=iPhBkMaxAdditionalTextLen)
  1559 					&& (additionalCount<iPhBkAdditional))
  1553 					&& (additionalCount<iPhBkAdditional))
  1565 			break;
  1559 			break;
  1566 
  1560 
  1567 		case RMobilePhoneBookStore::ETagPBSecondName:
  1561 		case RMobilePhoneBookStore::ETagPBSecondName:
  1568 			ret=iPhBkRwBuffer->GetValue(alphaTag2);
  1562 			ret=iPhBkRwBuffer->GetValue(alphaTag2);
  1569 
  1563 
  1570 			OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_WRITE_3, "alphaTag2 (ETagPBSecondName) Length = (%d)",alphaTag2.Length());
  1564 			LOGPHBK2("alphaTag2 (ETagPBSecondName) Length = (%d)",alphaTag2.Length());
  1571 			OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_WRITE_4, "Phonebook Max Text Length = (%d)",iPhBkMaxTextLen);
  1565 			LOGPHBK2("Phonebook Max Text Length = (%d)",iPhBkMaxTextLen);
  1572 
  1566 
  1573 			if(ret==KErrNone && (alphaTag2.Length()<=iPhBkMaxTextLen))
  1567 			if(ret==KErrNone && (alphaTag2.Length()<=iPhBkMaxTextLen))
  1574 				iPhBkUSimStoreEntries[index].iAlphaTag2.Copy(alphaTag2);
  1568 				iPhBkUSimStoreEntries[index].iAlphaTag2.Copy(alphaTag2);
  1575 			else
  1569 			else
  1576 				ret=EXTENDEDERROR(KErrOverflow, KErrPhonebookSecondNameTextOverflow);
  1570 				ret=EXTENDEDERROR(KErrOverflow, KErrPhonebookSecondNameTextOverflow);
  1577 			break;
  1571 			break;
  1578 
  1572 
  1579 		case RMobilePhoneBookStore::ETagPBNumber:
  1573 		case RMobilePhoneBookStore::ETagPBNumber:
  1580 			ret=iPhBkRwBuffer->GetValue(telNum);
  1574 			ret=iPhBkRwBuffer->GetValue(telNum);
  1581 
  1575 
  1582 			OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_WRITE_5, "telNum (ETagPBNumber) Length = (%d)",telNum.Length());
  1576 			LOGPHBK2("telNum (ETagPBNumber) Length = (%d)",telNum.Length());
  1583 			OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_WRITE_6, "Phonebook Max Text Length = (%d)",iPhBkMaxTelNumLen);
  1577 			LOGPHBK2("Phonebook Max Text Length = (%d)",iPhBkMaxTelNumLen);
  1584 
  1578 
  1585 			if(!additional && ret==KErrNone && (telNum.Length()<=iPhBkMaxTelNumLen))
  1579 			if(!additional && ret==KErrNone && (telNum.Length()<=iPhBkMaxTelNumLen))
  1586 				iPhBkUSimStoreEntries[index].iTelNum.Copy(telNum);
  1580 				iPhBkUSimStoreEntries[index].iTelNum.Copy(telNum);
  1587 			else if(additional && ret==KErrNone && (telNum.Length()<=iPhBkMaxAdditionalTelNumLen)
  1581 			else if(additional && ret==KErrNone && (telNum.Length()<=iPhBkMaxAdditionalTelNumLen)
  1588 					&& (additionalCount<iPhBkAdditional))
  1582 					&& (additionalCount<iPhBkAdditional))
  1617 			break;
  1611 			break;
  1618 
  1612 
  1619 		case RMobilePhoneBookStore::ETagPBGroupName:
  1613 		case RMobilePhoneBookStore::ETagPBGroupName:
  1620 			ret=iPhBkRwBuffer->GetValue(bufPtr);
  1614 			ret=iPhBkRwBuffer->GetValue(bufPtr);
  1621 
  1615 
  1622 			OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_WRITE_7, "bufPtr (ETagPBGroupName) Length = (%d)",bufPtr.Length());
  1616 			LOGPHBK2("bufPtr (ETagPBGroupName) Length = (%d)",bufPtr.Length());
  1623 			OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_WRITE_8, "Phonebook Max Text Length = (%d)",iPhBkMaxTextLen);
  1617 			LOGPHBK2("Phonebook Max Text Length = (%d)",iPhBkMaxTextLen);
  1624 
  1618 
  1625 			if(ret==KErrNone && (bufPtr.Length()<=iPhBkMaxTextLen)
  1619 			if(ret==KErrNone && (bufPtr.Length()<=iPhBkMaxTextLen)
  1626 				&& (iPhBkUSimStoreEntries[index].iGroups->Count() < KMaxGroups))
  1620 				&& (iPhBkUSimStoreEntries[index].iGroups->Count() < KMaxGroups))
  1627 			{
  1621 			{
  1628 				TRAP_IGNORE(iPhBkUSimStoreEntries[index].iGroups->AppendL(bufPtr));
  1622 				TRAP_IGNORE(iPhBkUSimStoreEntries[index].iGroups->AppendL(bufPtr));
  1632 			break;
  1626 			break;
  1633 
  1627 
  1634 		case RMobilePhoneBookStore::ETagPBEmailAddress:
  1628 		case RMobilePhoneBookStore::ETagPBEmailAddress:
  1635 			ret=iPhBkRwBuffer->GetValue(bufPtr);
  1629 			ret=iPhBkRwBuffer->GetValue(bufPtr);
  1636 
  1630 
  1637 			OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_WRITE_9, "bufPtr (ETagPBEmailAddress) Length = (%d)",bufPtr.Length());
  1631 			LOGPHBK2("bufPtr (ETagPBEmailAddress) Length = (%d)",bufPtr.Length());
  1638 			OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_WRITE_10, "Phonebook Max Text Length = (%d)",iPhBkMaxTextLen);
  1632 			LOGPHBK2("Phonebook Max Text Length = (%d)",iPhBkMaxTextLen);
  1639 
  1633 
  1640 			if(ret==KErrNone && (bufPtr.Length()<=iPhBkMaxTextLen)
  1634 			if(ret==KErrNone && (bufPtr.Length()<=iPhBkMaxTextLen)
  1641 				&& (iPhBkUSimStoreEntries[index].iEmails->Count() < iPhBkMaxEmail))
  1635 				&& (iPhBkUSimStoreEntries[index].iEmails->Count() < iPhBkMaxEmail))
  1642 			{
  1636 			{
  1643 				TRAP_IGNORE(iPhBkUSimStoreEntries[index].iEmails->AppendL(bufPtr));
  1637 				TRAP_IGNORE(iPhBkUSimStoreEntries[index].iEmails->AppendL(bufPtr));
  2070 		//bad address 0xdededede (investigating)
  2064 		//bad address 0xdededede (investigating)
  2071 	
  2065 	
  2072 		TRAPD(err,iPhBkUSimStoreEntries[iPhBkOOBWriteIndex].iAdditional=new(ELeave) CArrayFixFlat<TPhBkStoreEntry>(iPhBkAdditional+1));
  2066 		TRAPD(err,iPhBkUSimStoreEntries[iPhBkOOBWriteIndex].iAdditional=new(ELeave) CArrayFixFlat<TPhBkStoreEntry>(iPhBkAdditional+1));
  2073 		if (err!=KErrNone)
  2067 		if (err!=KErrNone)
  2074 			{
  2068 			{
  2075 			OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_TIMERCALLBACK_1, "CSimPhBkUSimStore::TimerCallBack - Memory Allocation Failure");
  2069 			LOGPHBK1("CSimPhBkUSimStore::TimerCallBack - Memory Allocation Failure");
  2076 			return;
  2070 			return;
  2077 			}
  2071 			}
  2078 
  2072 
  2079 		for(idx=0;idx<count;idx++)
  2073 		for(idx=0;idx<count;idx++)
  2080 			{
  2074 			{
  2084 
  2078 
  2085 		
  2079 		
  2086 		TRAP(err,iPhBkUSimStoreEntries[iPhBkOOBWriteIndex].iGroups=new(ELeave) CArrayFixFlat<TPhBkUSimGroup>(KMaxGroups));
  2080 		TRAP(err,iPhBkUSimStoreEntries[iPhBkOOBWriteIndex].iGroups=new(ELeave) CArrayFixFlat<TPhBkUSimGroup>(KMaxGroups));
  2087 		if (err!=KErrNone)
  2081 		if (err!=KErrNone)
  2088 			{
  2082 			{
  2089 			OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_TIMERCALLBACK_2, "CSimPhBkUSimStore::TimerCallBack - Memory Allocation Failure");
  2083 			LOGPHBK1("CSimPhBkUSimStore::TimerCallBack - Memory Allocation Failure");
  2090 			return;
  2084 			return;
  2091 			}
  2085 			}
  2092 
  2086 
  2093 		for(idx=0;idx<count;idx++)
  2087 		for(idx=0;idx<count;idx++)
  2094 			{
  2088 			{
  2098 		
  2092 		
  2099 		count = iPhBkOOBWrite.iEmails->Count();
  2093 		count = iPhBkOOBWrite.iEmails->Count();
  2100 		TRAP(err,iPhBkUSimStoreEntries[iPhBkOOBWriteIndex].iEmails=new(ELeave) CArrayFixFlat<TPhBkUSimEmail>(iPhBkMaxEmail+1));	
  2094 		TRAP(err,iPhBkUSimStoreEntries[iPhBkOOBWriteIndex].iEmails=new(ELeave) CArrayFixFlat<TPhBkUSimEmail>(iPhBkMaxEmail+1));	
  2101 		if (err!=KErrNone)
  2095 		if (err!=KErrNone)
  2102 			{
  2096 			{
  2103 			OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_TIMERCALLBACK_3, "CSimPhBkUSimStore::TimerCallBack - Memory Allocation Failure");
  2097 			LOGPHBK1("CSimPhBkUSimStore::TimerCallBack - Memory Allocation Failure");
  2104 			return;
  2098 			return;
  2105 			}
  2099 			}
  2106 
  2100 
  2107 		for(idx=0;idx<count;idx++)
  2101 		for(idx=0;idx<count;idx++)
  2108 			{
  2102 			{
  2296 * Returns a pointer to the config file section
  2290 * Returns a pointer to the config file section
  2297 *
  2291 *
  2298 * @return CTestConfigSection a pointer to the configuration file data section
  2292 * @return CTestConfigSection a pointer to the configuration file data section
  2299 */
  2293 */
  2300 	{
  2294 	{
  2301 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMPHBKUSIMSTORE_CFGFILE_1, ">>CSimPhBkUSimStore::CfgFile");
  2295 	LOGPHBK1(">>CSimPhBkUSimStore::CfgFile");
  2302 	return iPhone->CfgFile();
  2296 	return iPhone->CfgFile();
  2303 	}
  2297 	}