smsprotocols/smsstack/smsprot/Src/smspfacadestor.cpp
branchRCL_3
changeset 65 630d2f34d719
parent 0 3553901f7fa8
child 66 07a122eea281
equal deleted inserted replaced
61:17af172ffa5f 65:630d2f34d719
     1 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 2007-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".
    11 // Contributors:
    11 // Contributors:
    12 //
    12 //
    13 // Description:
    13 // Description:
    14 //
    14 //
    15 
    15 
       
    16 
       
    17 #include "OstTraceDefinitions.h"
       
    18 #ifdef OST_TRACE_COMPILER_IN_USE
       
    19 #include "smspfacadestorTraces.h"
       
    20 #endif
       
    21 
    16 #include "gsmubuf.h"
    22 #include "gsmubuf.h"
    17 #include "smspfacadestor.h"
    23 #include "smspfacadestor.h"
    18 
    24 
    19 /**
    25 /**
    20 Static factory constructor. Uses two phase 
    26 Static factory constructor. Uses two phase 
    30 @pre A connected file server session must be passed as parameter.
    36 @pre A connected file server session must be passed as parameter.
    31 @post CFacadeSmsReassemblyStore object is now fully initialised
    37 @post CFacadeSmsReassemblyStore object is now fully initialised
    32 */
    38 */
    33 CFacadeSmsReassemblyStore* CFacadeSmsReassemblyStore::NewL(RFs& aFs, MSmsComm& aSmsComm)
    39 CFacadeSmsReassemblyStore* CFacadeSmsReassemblyStore::NewL(RFs& aFs, MSmsComm& aSmsComm)
    34 	{
    40 	{
    35 	LOGSMSPROT1("CFacadeSmsReassemblyStore::NewL()");
    41 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_NEWL_1, "CFacadeSmsReassemblyStore::NewL()");
    36 
    42 
    37 	CFacadeSmsReassemblyStore*  self = new (ELeave) CFacadeSmsReassemblyStore(aFs, aSmsComm);
    43 	CFacadeSmsReassemblyStore*  self = new (ELeave) CFacadeSmsReassemblyStore(aFs, aSmsComm);
    38 	CleanupStack::PushL(self);
    44 	CleanupStack::PushL(self);
    39 	self->ConstructL();
    45 	self->ConstructL();
    40 	CleanupStack::Pop(self);
    46 	CleanupStack::Pop(self);
    54 /**
    60 /**
    55  *  Destructor. It destroys all the member variables.
    61  *  Destructor. It destroys all the member variables.
    56 */
    62 */
    57 CFacadeSmsReassemblyStore::~CFacadeSmsReassemblyStore()
    63 CFacadeSmsReassemblyStore::~CFacadeSmsReassemblyStore()
    58 	{
    64 	{
    59 	LOGSMSPROT1("~CFacadeSmsReassemblyStore()");
    65 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_DTOR_1, "~CFacadeSmsReassemblyStore()");
    60 	iReassemblyStore->Close();
    66 	iReassemblyStore->Close();
    61 	delete iReassemblyStore;
    67 	delete iReassemblyStore;
    62 
    68 
    63 	if (iClass0ReassemblyStore)
    69 	if (iClass0ReassemblyStore)
    64 		{
    70 		{
    80 @pre A connected file server session must be passed as parameter.
    86 @pre A connected file server session must be passed as parameter.
    81 @post CFacadeSmsReassemblyStore object is now fully constructed.
    87 @post CFacadeSmsReassemblyStore object is now fully constructed.
    82 */
    88 */
    83 void CFacadeSmsReassemblyStore::ConstructL()
    89 void CFacadeSmsReassemblyStore::ConstructL()
    84 	{
    90 	{
    85 	LOGSMSPROT1("CFacadeSmsReassemblyStore::ConstructL()");
    91 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_CONSTRUCTL_1, "CFacadeSmsReassemblyStore::ConstructL()");
    86 
    92 
    87 	iReassemblyStore = CSmsReassemblyStore::NewL(iFs);
    93 	iReassemblyStore = CSmsReassemblyStore::NewL(iFs);
    88 	/*
    94 	/*
    89 	Read [ReassemblyStore] section from smswap.sms.esk file. If section is absent then there is
    95 	Read [ReassemblyStore] section from smswap.sms.esk file. If section is absent then there is
    90 	no need to create class 0 re-assembly store. This sms stack is configured to work
    96 	no need to create class 0 re-assembly store. This sms stack is configured to work
   131 
   137 
   132 @internalComponent
   138 @internalComponent
   133 */
   139 */
   134 void CFacadeSmsReassemblyStore::OpenStoreL()
   140 void CFacadeSmsReassemblyStore::OpenStoreL()
   135 	{
   141 	{
   136 	LOGSMSPROT1("CFacadeSmsReassemblyStore::OpenStoreL()");
   142 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_OPENSTOREL_1, "CFacadeSmsReassemblyStore::OpenStoreL()");
   137 	iReassemblyStore->OpenStoreL();
   143 	iReassemblyStore->OpenStoreL();
   138 	if (iClass0ReassemblyStore)
   144 	if (iClass0ReassemblyStore)
   139 		{
   145 		{
   140 		iClass0ReassemblyStore->OpenStoreL();
   146 		iClass0ReassemblyStore->OpenStoreL();
   141 		}
   147 		}
   146 
   152 
   147 @internalComponent
   153 @internalComponent
   148 */
   154 */
   149 void CFacadeSmsReassemblyStore::Close()
   155 void CFacadeSmsReassemblyStore::Close()
   150 	{
   156 	{
   151 	LOGSMSPROT1("CFacadeSmsReassemblyStore::Close()");
   157 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_CLOSE_1, "CFacadeSmsReassemblyStore::Close()");
   152 	// Close general Re-assembly store.
   158 	// Close general Re-assembly store.
   153 	iReassemblyStore->Close();
   159 	iReassemblyStore->Close();
   154 	// Close Class0 re-assembly store.
   160 	// Close Class0 re-assembly store.
   155 	if (iClass0ReassemblyStore)
   161 	if (iClass0ReassemblyStore)
   156 		{
   162 		{
   180 
   186 
   181 @internalComponent
   187 @internalComponent
   182 */
   188 */
   183 void CFacadeSmsReassemblyStore::InitL()
   189 void CFacadeSmsReassemblyStore::InitL()
   184 	{
   190 	{
   185 	LOGSMSPROT1("CFacadeSmsReassemblyStore::InitL()");
   191 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_INITL_1, "CFacadeSmsReassemblyStore::InitL()");
   186 	// Initialize Non-class 0 Re-assembly store.
   192 	// Initialize Non-class 0 Re-assembly store.
   187 	InitializeNonClass0StoreL();
   193 	InitializeNonClass0StoreL();
   188 	// Initialize Class0 re-assembly store.
   194 	// Initialize Class0 re-assembly store.
   189 	if (iClass0ReassemblyStore)
   195 	if (iClass0ReassemblyStore)
   190 		{
   196 		{
   200 
   206 
   201 @internalComponent
   207 @internalComponent
   202 */
   208 */
   203 void CFacadeSmsReassemblyStore::PurgeL(const TTimeIntervalMinutes& aTimeIntervalMinutes,TBool aPurgeIncompleteOnly)
   209 void CFacadeSmsReassemblyStore::PurgeL(const TTimeIntervalMinutes& aTimeIntervalMinutes,TBool aPurgeIncompleteOnly)
   204 	{
   210 	{
   205 	LOGSMSPROT1("CFacadeSmsReassemblyStore::PurgeL()");
   211 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_PURGEL_1, "CFacadeSmsReassemblyStore::PurgeL()");
   206 	iReassemblyStore->PurgeL(aTimeIntervalMinutes, aPurgeIncompleteOnly);
   212 	iReassemblyStore->PurgeL(aTimeIntervalMinutes, aPurgeIncompleteOnly);
   207 	if (iClass0ReassemblyStore)
   213 	if (iClass0ReassemblyStore)
   208 		{
   214 		{
   209 		iClass0ReassemblyStore->PurgeL(aTimeIntervalMinutes, aPurgeIncompleteOnly);
   215 		iClass0ReassemblyStore->PurgeL(aTimeIntervalMinutes, aPurgeIncompleteOnly);
   210 		}
   216 		}
   217 
   223 
   218 @internalComponent
   224 @internalComponent
   219 */
   225 */
   220 TBool CFacadeSmsReassemblyStore::IsFull()
   226 TBool CFacadeSmsReassemblyStore::IsFull()
   221 	{
   227 	{
   222 	LOGSMSPROT1("CFacadeSmsReassemblyStore::IsFull()");
   228 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_ISFULL_1, "CFacadeSmsReassemblyStore::IsFull()");
   223 
   229 
   224 	//local variable for complete entries
   230 	//local variable for complete entries
   225 	TInt count( 0 );
   231 	TInt count( 0 );
   226 	count = NumberOfCompleteNonClass0Messages();
   232 	count = NumberOfCompleteNonClass0Messages();
   227 	if (iClass0ReassemblyStore)
   233 	if (iClass0ReassemblyStore)
   244 
   250 
   245 @internalComponent
   251 @internalComponent
   246 */
   252 */
   247 void CFacadeSmsReassemblyStore::DeleteEnumeratedSIMEntries()
   253 void CFacadeSmsReassemblyStore::DeleteEnumeratedSIMEntries()
   248 	{
   254 	{
   249 	LOGSMSPROT1("CFacadeSmsReassemblyStore::DeleteEnumeratedSIMEntries()");
   255 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_DELETEENUMERATEDSIMENTRIES_1, "CFacadeSmsReassemblyStore::DeleteEnumeratedSIMEntries()");
   250 	DeleteNonClass0EnumeratedSIMEntries();
   256 	DeleteNonClass0EnumeratedSIMEntries();
   251 	if (iClass0ReassemblyStore)
   257 	if (iClass0ReassemblyStore)
   252 		{
   258 		{
   253 		iClass0ReassemblyStore->DeleteEnumeratedSIMEntries();
   259 		iClass0ReassemblyStore->DeleteEnumeratedSIMEntries();
   254 		}
   260 		}
   265 
   271 
   266 @internalComponent
   272 @internalComponent
   267 */
   273 */
   268 TInt CFacadeSmsReassemblyStore::ExternalizeEnumeratedMessagesL(CSmsProvider& aProvider,TInt& aCount)
   274 TInt CFacadeSmsReassemblyStore::ExternalizeEnumeratedMessagesL(CSmsProvider& aProvider,TInt& aCount)
   269 	{
   275 	{
   270 	LOGSMSPROT1("CFacadeSmsReassemblyStore::ExternalizeEnumeratedMessagesL()");
   276 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_EXTERNALIZEENUMERATEDMESSAGESL_1, "CFacadeSmsReassemblyStore::ExternalizeEnumeratedMessagesL()");
   271 	TInt numNewSegments(0);
   277 	TInt numNewSegments(0);
   272 	numNewSegments = ExternalizeEnumeratedNonClass0SmsMessagesL(aProvider, aCount);
   278 	numNewSegments = ExternalizeEnumeratedNonClass0SmsMessagesL(aProvider, aCount);
   273 	if (iClass0ReassemblyStore)
   279 	if (iClass0ReassemblyStore)
   274 		{
   280 		{
   275 		numNewSegments += ExternalizeEnumeratedClass0SmsMessagesL(aProvider, aCount);
   281 		numNewSegments += ExternalizeEnumeratedClass0SmsMessagesL(aProvider, aCount);
   287 
   293 
   288 @internalComponent
   294 @internalComponent
   289 */
   295 */
   290 void CFacadeSmsReassemblyStore::ProcessCompleteSmsMessagesL(MSmsComm& aSmsComm, const CSmsMessage* aCurrentSmsMessage)
   296 void CFacadeSmsReassemblyStore::ProcessCompleteSmsMessagesL(MSmsComm& aSmsComm, const CSmsMessage* aCurrentSmsMessage)
   291 	{
   297 	{
   292 	LOGSMSPROT1("CFacadeSmsReassemblyStore::ProcessCompleteSmsMessagesL");
   298 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_PROCESSCOMPLETESMSMESSAGESL_1, "CFacadeSmsReassemblyStore::ProcessCompleteSmsMessagesL");
   293 
   299 
   294 	ProcessCompleteNonClass0SmsMessagesL(aSmsComm, aCurrentSmsMessage);
   300 	ProcessCompleteNonClass0SmsMessagesL(aSmsComm, aCurrentSmsMessage);
   295 	if (iClass0ReassemblyStore)
   301 	if (iClass0ReassemblyStore)
   296 		{
   302 		{
   297 		ProcessCompleteClass0SmsMessagesL(aSmsComm, aCurrentSmsMessage);
   303 		ProcessCompleteClass0SmsMessagesL(aSmsComm, aCurrentSmsMessage);
   338 	might receive all the constituent PDU of that message but aSmsMesssage will contain partial complete message.
   344 	might receive all the constituent PDU of that message but aSmsMesssage will contain partial complete message.
   339 	To find out complete/incompletness of the message, CSmsMessage::IsComplete() message function has to be called.
   345 	To find out complete/incompletness of the message, CSmsMessage::IsComplete() message function has to be called.
   340 */
   346 */
   341 void CFacadeSmsReassemblyStore::AddSegmentToReassemblyStoreL(CSmsMessage& aSmsMessage,const TGsmSms& aGsmSms, TInt& aIndex, TBool& aIsComplete, TBool aIsEnumeration, TInt& aCount, TInt& aTotal)
   347 void CFacadeSmsReassemblyStore::AddSegmentToReassemblyStoreL(CSmsMessage& aSmsMessage,const TGsmSms& aGsmSms, TInt& aIndex, TBool& aIsComplete, TBool aIsEnumeration, TInt& aCount, TInt& aTotal)
   342 	{
   348 	{
   343 	LOGSMSPROT2("CFacadeSmsReassemblyStore::AddSegmentToReassemblyStoreL(): isComplete Message=%d",
   349 	OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_ADDSEGMENTTOREASSEMBLYSTOREL_1, "CFacadeSmsReassemblyStore::AddSegmentToReassemblyStoreL(): isComplete Message=%d",aSmsMessage.IsComplete());
   344 				aSmsMessage.IsComplete());
       
   345 
   350 
   346 	TBool toBeStoredInClass0ReassemblyStore = IsForClass0ReassemblyStore(aSmsMessage);
   351 	TBool toBeStoredInClass0ReassemblyStore = IsForClass0ReassemblyStore(aSmsMessage);
   347 
   352 
   348 	if (toBeStoredInClass0ReassemblyStore)
   353 	if (toBeStoredInClass0ReassemblyStore)
   349 		{
   354 		{
   374 
   379 
   375 @internalComponent
   380 @internalComponent
   376 */
   381 */
   377 void CFacadeSmsReassemblyStore::ForwardCompleteClass0SmsMessagesL(MSmsComm& aSmsComm, const CSmsMessage& aSmsMessage,const TSmsAddr* aOriginalSmsAddr,const CSmsMessage* aOriginalSmsMessage,TDes& aDes)
   382 void CFacadeSmsReassemblyStore::ForwardCompleteClass0SmsMessagesL(MSmsComm& aSmsComm, const CSmsMessage& aSmsMessage,const TSmsAddr* aOriginalSmsAddr,const CSmsMessage* aOriginalSmsMessage,TDes& aDes)
   378 	{
   383 	{
   379 	LOGSMSPROT1("CFacadeSmsReassemblyStore::ForwardCompleteClass0SmsMessagesL");
   384 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_FORWARDCOMPLETECLASS0SMSMESSAGESL_1, "CFacadeSmsReassemblyStore::ForwardCompleteClass0SmsMessagesL");
   380 	if (iClass0ReassemblyStore)
   385 	if (iClass0ReassemblyStore)
   381 		{
   386 		{
   382 		iClass0ReassemblyStore->ForwardCompleteClass0SmsMessagesL(aSmsComm, aSmsMessage, aOriginalSmsAddr, aOriginalSmsMessage, aDes);
   387 		iClass0ReassemblyStore->ForwardCompleteClass0SmsMessagesL(aSmsComm, aSmsMessage, aOriginalSmsAddr, aOriginalSmsMessage, aDes);
   383 		}
   388 		}
   384 	}
   389 	}
   393 
   398 
   394 @internalComponent
   399 @internalComponent
   395 */
   400 */
   396 void CFacadeSmsReassemblyStore::ProcessMessageIfExceedLimitationL(MSmsComm& aSmsComm)
   401 void CFacadeSmsReassemblyStore::ProcessMessageIfExceedLimitationL(MSmsComm& aSmsComm)
   397 	{
   402 	{
   398 	LOGSMSPROT1("CFacadeSmsReassemblyStore::ProcessMessageIfExceedLimitationL");
   403 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_PROCESSMESSAGEIFEXCEEDLIMITATIONL_1, "CFacadeSmsReassemblyStore::ProcessMessageIfExceedLimitationL");
   399 	if (iClass0ReassemblyStore)
   404 	if (iClass0ReassemblyStore)
   400 		{
   405 		{
   401 		iClass0ReassemblyStore->ProcessMessageIfExceedLimitationL(aSmsComm);
   406 		iClass0ReassemblyStore->ProcessMessageIfExceedLimitationL(aSmsComm);
   402 		}
   407 		}
   403 	}
   408 	}
   413 
   418 
   414 @internalComponent
   419 @internalComponent
   415 */
   420 */
   416 void CFacadeSmsReassemblyStore::SetIncompleteMessageForwardedToClientL(const CSmsMessage& aSmsMessage)
   421 void CFacadeSmsReassemblyStore::SetIncompleteMessageForwardedToClientL(const CSmsMessage& aSmsMessage)
   417 	{
   422 	{
   418 	LOGSMSPROT1("CFacadeSmsReassemblyStore::SetIncompleteMessageForwardedToClientL()");
   423 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_SETINCOMPLETEMESSAGEFORWARDEDTOCLIENTL_1, "CFacadeSmsReassemblyStore::SetIncompleteMessageForwardedToClientL()");
   419 	if (iClass0ReassemblyStore)
   424 	if (iClass0ReassemblyStore)
   420 		{
   425 		{
   421 		iClass0ReassemblyStore->SetIncompleteMessageForwardedToClientL(aSmsMessage);
   426 		iClass0ReassemblyStore->SetIncompleteMessageForwardedToClientL(aSmsMessage);
   422 		}
   427 		}
   423 	}
   428 	}
   427 If disk space is full, then class 0 re-assembly store stores the incoming message in
   432 If disk space is full, then class 0 re-assembly store stores the incoming message in
   428 pre-allocated file. Otherwise it stores the message in permanent store file.
   433 pre-allocated file. Otherwise it stores the message in permanent store file.
   429 */
   434 */
   430 void CFacadeSmsReassemblyStore::SetDiskSpaceState(TSmsDiskSpaceMonitorStatus aDiskSpaceStatus)
   435 void CFacadeSmsReassemblyStore::SetDiskSpaceState(TSmsDiskSpaceMonitorStatus aDiskSpaceStatus)
   431 	{
   436 	{
   432 	LOGSMSPROT1("CFacadeSmsReassemblyStore::SetDiskSpaceState()");
   437 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_SETDISKSPACESTATE_1, "CFacadeSmsReassemblyStore::SetDiskSpaceState()");
   433 	if (iClass0ReassemblyStore)
   438 	if (iClass0ReassemblyStore)
   434 		{
   439 		{
   435 		iClass0ReassemblyStore->SetDiskSpaceState(aDiskSpaceStatus);
   440 		iClass0ReassemblyStore->SetDiskSpaceState(aDiskSpaceStatus);
   436 		}
   441 		}
   437 	}
   442 	}
   445 
   450 
   446 @internalComponent
   451 @internalComponent
   447 */
   452 */
   448 void CFacadeSmsReassemblyStore::DeleteMessageL(const CSmsMessage& aSmsMessage, TBool aPassed)
   453 void CFacadeSmsReassemblyStore::DeleteMessageL(const CSmsMessage& aSmsMessage, TBool aPassed)
   449 	{
   454 	{
   450 	LOGSMSPROT1("CFacadeSmsReassemblyStore::DeleteEntryL()");
   455 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_DELETEMESSAGEL_1, "CFacadeSmsReassemblyStore::DeleteEntryL()");
   451 
   456 
   452 	TBool toBeStoredInClass0ReassemblyStore = IsForClass0ReassemblyStore(aSmsMessage);
   457 	TBool toBeStoredInClass0ReassemblyStore = IsForClass0ReassemblyStore(aSmsMessage);
   453 
   458 
   454 	if (toBeStoredInClass0ReassemblyStore)
   459 	if (toBeStoredInClass0ReassemblyStore)
   455 		{
   460 		{
   469 
   474 
   470 @internalComponent
   475 @internalComponent
   471 */
   476 */
   472 void CFacadeSmsReassemblyStore::UpdateLogServerIdL(const CSmsMessage& aSmsMessage, TInt aIndex)
   477 void CFacadeSmsReassemblyStore::UpdateLogServerIdL(const CSmsMessage& aSmsMessage, TInt aIndex)
   473 	{
   478 	{
   474 	LOGSMSPROT1("CFacadeSmsReassemblyStore::UpdateLogServerIdL()");
   479 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_UPDATELOGSERVERIDL_1, "CFacadeSmsReassemblyStore::UpdateLogServerIdL()");
   475 
   480 
   476 	TBool toBeStoredInClass0ReassemblyStore = IsForClass0ReassemblyStore(aSmsMessage);
   481 	TBool toBeStoredInClass0ReassemblyStore = IsForClass0ReassemblyStore(aSmsMessage);
   477 
   482 
   478 	if (toBeStoredInClass0ReassemblyStore)
   483 	if (toBeStoredInClass0ReassemblyStore)
   479 		{
   484 		{
   492 
   497 
   493 @internalComponent
   498 @internalComponent
   494 */
   499 */
   495 void CFacadeSmsReassemblyStore::SetMessagePassedToClientL(const CSmsMessage& aSmsMessage, TBool aPassed)
   500 void CFacadeSmsReassemblyStore::SetMessagePassedToClientL(const CSmsMessage& aSmsMessage, TBool aPassed)
   496 	{
   501 	{
   497 	LOGSMSPROT1("CFacadeSmsReassemblyStore::SetMessagePassedToClientL()");
   502 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_SETMESSAGEPASSEDTOCLIENTL_1, "CFacadeSmsReassemblyStore::SetMessagePassedToClientL()");
   498 
   503 
   499 	TBool toBeStoredInClass0ReassemblyStore = IsForClass0ReassemblyStore(aSmsMessage);
   504 	TBool toBeStoredInClass0ReassemblyStore = IsForClass0ReassemblyStore(aSmsMessage);
   500 
   505 
   501 	if (toBeStoredInClass0ReassemblyStore)
   506 	if (toBeStoredInClass0ReassemblyStore)
   502 		{
   507 		{
   567 
   572 
   568 @internalComponent
   573 @internalComponent
   569 */
   574 */
   570 void CFacadeSmsReassemblyStore::InitializeNonClass0StoreL()
   575 void CFacadeSmsReassemblyStore::InitializeNonClass0StoreL()
   571 	{
   576 	{
   572 	LOGSMSPROT1("CFacadeSmsReassemblyStore::InitializeNonClass0StoreL()");
   577 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_INITIALIZENONCLASS0STOREL_1, "CFacadeSmsReassemblyStore::InitializeNonClass0StoreL()");
   573 	// Initialize Re-assembly store.
   578 	// Initialize Re-assembly store.
   574 	iReassemblyStore->OpenStoreL();
   579 	iReassemblyStore->OpenStoreL();
   575 	iReassemblyStore->BeginTransactionLC();
   580 	iReassemblyStore->BeginTransactionLC();
   576 	TInt count = iReassemblyStore->Entries().Count();
   581 	TInt count = iReassemblyStore->Entries().Count();
   577 	while (count--)
   582 	while (count--)
   604 */
   609 */
   605 void CFacadeSmsReassemblyStore::DeleteNonClass0EnumeratedSIMEntries()
   610 void CFacadeSmsReassemblyStore::DeleteNonClass0EnumeratedSIMEntries()
   606 	{
   611 	{
   607 	const TInt count = iReassemblyStore->Entries().Count();
   612 	const TInt count = iReassemblyStore->Entries().Count();
   608 
   613 
   609 	LOGSMSPROT2("CFacadeSmsReassemblyStore::DeleteNonClass0EnumeratedSIMEntries(): %d messages in RAS", count);
   614 	OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_DELETENONCLASS0ENUMERATEDSIMENTRIES_1, "CFacadeSmsReassemblyStore::DeleteNonClass0EnumeratedSIMEntries(): %d messages in RAS", count);
   610 
   615 
   611 	TInt index;
   616 	TInt index;
   612 
   617 
   613 	for (index = count-1;  index >= 0;  --index)
   618 	for (index = count-1;  index >= 0;  --index)
   614 		{
   619 		{
   632 
   637 
   633 @internalComponent
   638 @internalComponent
   634 */
   639 */
   635 void CFacadeSmsReassemblyStore::DeleteNonClass0MessageL(const CSmsMessage& aSmsMessage, TBool aPassed)
   640 void CFacadeSmsReassemblyStore::DeleteNonClass0MessageL(const CSmsMessage& aSmsMessage, TBool aPassed)
   636 	{
   641 	{
   637 	LOGSMSPROT1("CFacadeSmsReassemblyStore::DeleteNonClass0MessageL()");
   642 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_DELETENONCLASS0MESSAGEL_1, "CFacadeSmsReassemblyStore::DeleteNonClass0MessageL()");
   638 	TInt index(0);
   643 	TInt index(0);
   639 
   644 
   640 	if(!iReassemblyStore->InTransaction())
   645 	if(!iReassemblyStore->InTransaction())
   641 		{
   646 		{
   642 		iReassemblyStore->BeginTransactionLC();
   647 		iReassemblyStore->BeginTransactionLC();
   659 
   664 
   660 @internalComponent
   665 @internalComponent
   661 */
   666 */
   662 void CFacadeSmsReassemblyStore::SetNonClass0MessagePassedToClientL(const CSmsMessage& aSmsMessage, TBool aPassed)
   667 void CFacadeSmsReassemblyStore::SetNonClass0MessagePassedToClientL(const CSmsMessage& aSmsMessage, TBool aPassed)
   663 	{
   668 	{
   664 	LOGSMSPROT1("CFacadeSmsReassemblyStore::SetNonClass0MessagePassedToClientL()");
   669 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_SETNONCLASS0MESSAGEPASSEDTOCLIENTL_1, "CFacadeSmsReassemblyStore::SetNonClass0MessagePassedToClientL()");
   665 	TInt index(0);
   670 	TInt index(0);
   666 
   671 
   667 	iReassemblyStore->BeginTransactionLC();
   672 	iReassemblyStore->BeginTransactionLC();
   668 	if (iReassemblyStore->FindMessageL(aSmsMessage , !aPassed, index))
   673 	if (iReassemblyStore->FindMessageL(aSmsMessage , !aPassed, index))
   669 		{
   674 		{
   675 /**
   680 /**
   676 It returns the number of complete messages stored in general re-assembly store.
   681 It returns the number of complete messages stored in general re-assembly store.
   677 */
   682 */
   678 TInt CFacadeSmsReassemblyStore::NumberOfCompleteNonClass0Messages()
   683 TInt CFacadeSmsReassemblyStore::NumberOfCompleteNonClass0Messages()
   679 	{
   684 	{
   680 	LOGSMSPROT2("CFacadeSmsReassemblyStore::NumberOfCompleteMessages(): Entries().Count()=%d",
   685 	OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_NUMBEROFCOMPLETENONCLASS0MESSAGES_1, "CFacadeSmsReassemblyStore::NumberOfCompleteMessages(): Entries().Count()=%d",iReassemblyStore->Entries().Count());
   681 				iReassemblyStore->Entries().Count());
       
   682 
   686 
   683 	//local variable for complete entries
   687 	//local variable for complete entries
   684 	TInt count( 0 );
   688 	TInt count( 0 );
   685 	// checks all entrys in the reassembly store
   689 	// checks all entrys in the reassembly store
   686 	for ( TInt i = iReassemblyStore->Entries().Count()-1; i >= 0; i-- )
   690 	for ( TInt i = iReassemblyStore->Entries().Count()-1; i >= 0; i-- )
   704 
   708 
   705 @internalComponent
   709 @internalComponent
   706 */
   710 */
   707 void CFacadeSmsReassemblyStore::ProcessCompleteNonClass0SmsMessagesL(MSmsComm& aSmsComm, const CSmsMessage* aCurrentSmsMessage)
   711 void CFacadeSmsReassemblyStore::ProcessCompleteNonClass0SmsMessagesL(MSmsComm& aSmsComm, const CSmsMessage* aCurrentSmsMessage)
   708 	{
   712 	{
   709 	LOGSMSPROT2("CFacadeSmsReassemblyStore::ProcessCompleteNonClass0SmsMessagesL [from %d to 0]", iReassemblyStore->Entries().Count()-1);
   713 	OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_PROCESSCOMPLETENONCLASS0SMSMESSAGESL_1, "CFacadeSmsReassemblyStore::ProcessCompleteNonClass0SmsMessagesL [from %d to 0]", iReassemblyStore->Entries().Count()-1);
   710 
   714 
   711 	iReassemblyStore->BeginTransactionLC();
   715 	iReassemblyStore->BeginTransactionLC();
   712 	TInt count = iReassemblyStore->Entries().Count();
   716 	TInt count = iReassemblyStore->Entries().Count();
   713 
   717 
   714 	CSmsBuffer* buffer = CSmsBuffer::NewL();
   718 	CSmsBuffer* buffer = CSmsBuffer::NewL();
   750 
   754 
   751 @internalComponent
   755 @internalComponent
   752 */
   756 */
   753 void CFacadeSmsReassemblyStore::ProcessCompleteClass0SmsMessagesL(MSmsComm& aSmsComm, const CSmsMessage* aCurrentSmsMessage)
   757 void CFacadeSmsReassemblyStore::ProcessCompleteClass0SmsMessagesL(MSmsComm& aSmsComm, const CSmsMessage* aCurrentSmsMessage)
   754 	{
   758 	{
   755 	LOGSMSPROT2("CFacadeSmsReassemblyStore::ProcessCompleteClass0SmsMessagesL [from %d to 0]", iClass0ReassemblyStore->Entries().Count()-1);
   759 	OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_PROCESSCOMPLETECLASS0SMSMESSAGESL_1, "CFacadeSmsReassemblyStore::ProcessCompleteClass0SmsMessagesL [from %d to 0]", iClass0ReassemblyStore->Entries().Count()-1);
   756 
   760 
   757 	iClass0ReassemblyStore->BeginTransactionLC();
   761 	iClass0ReassemblyStore->BeginTransactionLC();
   758 	TInt count = iClass0ReassemblyStore->Entries().Count();
   762 	TInt count = iClass0ReassemblyStore->Entries().Count();
   759 
   763 
   760 	CSmsBuffer* buffer = CSmsBuffer::NewL();
   764 	CSmsBuffer* buffer = CSmsBuffer::NewL();
   800 
   804 
   801 @internalComponent
   805 @internalComponent
   802 */
   806 */
   803 TInt CFacadeSmsReassemblyStore::ExternalizeEnumeratedNonClass0SmsMessagesL(CSmsProvider& aProvider,TInt& aCount)
   807 TInt CFacadeSmsReassemblyStore::ExternalizeEnumeratedNonClass0SmsMessagesL(CSmsProvider& aProvider,TInt& aCount)
   804 	{
   808 	{
   805 	LOGSMSPROT1("CFacadeSmsReassemblyStore::ExternalizeEnumeratedNonClass0SmsMessagesL()");
   809 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_EXTERNALIZEENUMERATEDNONCLASS0SMSMESSAGESL_1, "CFacadeSmsReassemblyStore::ExternalizeEnumeratedNonClass0SmsMessagesL()");
   806 	TInt count = iReassemblyStore->Entries().Count();
   810 	TInt count = iReassemblyStore->Entries().Count();
   807 	TInt index,numNewSegments(0);
   811 	TInt index,numNewSegments(0);
   808 	for(index = count-1; index >=0; --index)
   812 	for(index = count-1; index >=0; --index)
   809 		{
   813 		{
   810 		TSmsReassemblyEntry entry= (TSmsReassemblyEntry&) iReassemblyStore->Entries()[index];
   814 		TSmsReassemblyEntry entry= (TSmsReassemblyEntry&) iReassemblyStore->Entries()[index];
   819                 ( (smsMessage->DecodedOnSim()) && (smsMessage->ForwardToClient())  ) )
   823                 ( (smsMessage->DecodedOnSim()) && (smsMessage->ForwardToClient())  ) )
   820 				{
   824 				{
   821 				numNewSegments+=aProvider.ExternalizeMessageL(*smsMessage,EFalse);
   825 				numNewSegments+=aProvider.ExternalizeMessageL(*smsMessage,EFalse);
   822 				for(TInt i=0; i< smsMessage->iSlotArray.Count() ;i++)
   826 				for(TInt i=0; i< smsMessage->iSlotArray.Count() ;i++)
   823 					{
   827 					{
   824 					LOGSMSPROT2("CFacadeSmsReassemblyStore::ExternalizeEnumeratedNonClass0SmsMessagesL %d", smsMessage->iSlotArray[i].iIndex);
   828 					OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_EXTERNALIZEENUMERATEDNONCLASS0SMSMESSAGESL_2, "CFacadeSmsReassemblyStore::ExternalizeEnumeratedNonClass0SmsMessagesL %d", smsMessage->iSlotArray[i].iIndex);
   825 					}
   829 					}
   826 				++aCount;
   830 				++aCount;
   827 				iReassemblyStore->BeginTransactionLC();
   831 				iReassemblyStore->BeginTransactionLC();
   828 				iReassemblyStore->SetPassedToClientL(index,ETrue);
   832 				iReassemblyStore->SetPassedToClientL(index,ETrue);
   829 				iReassemblyStore->CommitTransactionL();
   833 				iReassemblyStore->CommitTransactionL();
   845 
   849 
   846 @internalComponent
   850 @internalComponent
   847 */
   851 */
   848 TInt CFacadeSmsReassemblyStore::ExternalizeEnumeratedClass0SmsMessagesL(CSmsProvider& aProvider,TInt& aCount)
   852 TInt CFacadeSmsReassemblyStore::ExternalizeEnumeratedClass0SmsMessagesL(CSmsProvider& aProvider,TInt& aCount)
   849 	{
   853 	{
   850 	LOGSMSPROT1("CFacadeSmsReassemblyStore::ExternalizeEnumeratedClass0SmsMessagesL()");
   854 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_EXTERNALIZEENUMERATEDCLASS0SMSMESSAGESL_1, "CFacadeSmsReassemblyStore::ExternalizeEnumeratedClass0SmsMessagesL()");
   851 	TInt count = iClass0ReassemblyStore->Entries().Count();
   855 	TInt count = iClass0ReassemblyStore->Entries().Count();
   852 	TInt index,numNewSegments(0);
   856 	TInt index,numNewSegments(0);
   853 	for(index = count-1; index >=0; --index)
   857 	for(index = count-1; index >=0; --index)
   854 		{
   858 		{
   855 		TReassemblyEntry entry= (TReassemblyEntry&) iClass0ReassemblyStore->Entries()[index];
   859 		TReassemblyEntry entry= (TReassemblyEntry&) iClass0ReassemblyStore->Entries()[index];
   864                 ( (smsMessage->DecodedOnSim()) && (smsMessage->ForwardToClient())  ) )
   868                 ( (smsMessage->DecodedOnSim()) && (smsMessage->ForwardToClient())  ) )
   865 				{
   869 				{
   866 				numNewSegments+=aProvider.ExternalizeMessageL(*smsMessage,EFalse);
   870 				numNewSegments+=aProvider.ExternalizeMessageL(*smsMessage,EFalse);
   867 				for(TInt i=0; i< smsMessage->iSlotArray.Count() ;i++)
   871 				for(TInt i=0; i< smsMessage->iSlotArray.Count() ;i++)
   868 					{
   872 					{
   869 					LOGSMSPROT2("CFacadeSmsReassemblyStore::ExternalizeEnumeratedClass0SmsMessagesL() %d", smsMessage->iSlotArray[i].iIndex);
   873 					OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_EXTERNALIZEENUMERATEDCLASS0SMSMESSAGESL_2, "CFacadeSmsReassemblyStore::ExternalizeEnumeratedClass0SmsMessagesL() %d", smsMessage->iSlotArray[i].iIndex);
   870 					}
   874 					}
   871 				++aCount;
   875 				++aCount;
   872 				iClass0ReassemblyStore->BeginTransactionLC();
   876 				iClass0ReassemblyStore->BeginTransactionLC();
   873 				iClass0ReassemblyStore->SetPassedToClientL(entry, ETrue);
   877 				iClass0ReassemblyStore->SetPassedToClientL(entry, ETrue);
   874 				iClass0ReassemblyStore->CommitTransactionL();
   878 				iClass0ReassemblyStore->CommitTransactionL();
   911 	When function returns, if the value of aIsComplete is True, then aSmsMesssage will contain the
   915 	When function returns, if the value of aIsComplete is True, then aSmsMesssage will contain the
   912 	complete decoded SMS message.
   916 	complete decoded SMS message.
   913 */
   917 */
   914 void CFacadeSmsReassemblyStore::AddSegmentToNonClass0ReassemblyStoreL(CSmsMessage& aSmsMessage,const TGsmSms& aGsmSms, TInt& aIndex, TBool& aIsComplete, TBool aIsEnumeration, TInt& aCount, TInt& aTotal)
   918 void CFacadeSmsReassemblyStore::AddSegmentToNonClass0ReassemblyStoreL(CSmsMessage& aSmsMessage,const TGsmSms& aGsmSms, TInt& aIndex, TBool& aIsComplete, TBool aIsEnumeration, TInt& aCount, TInt& aTotal)
   915 	{
   919 	{
   916 	LOGSMSPROT2("CFacadeSmsReassemblyStore::AddSegmentToNonClass0ReassemblyStoreL(): isComplete Message=%d",
   920 	OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_ADDSEGMENTTONONCLASS0REASSEMBLYSTOREL_1, "CFacadeSmsReassemblyStore::AddSegmentToNonClass0ReassemblyStoreL(): isComplete Message=%d",aSmsMessage.IsComplete());
   917 				aSmsMessage.IsComplete());
       
   918 
   921 
   919 	if (aIsComplete ||  aSmsMessage.Type() == CSmsPDU::ESmsStatusReport)
   922 	if (aIsComplete ||  aSmsMessage.Type() == CSmsPDU::ESmsStatusReport)
   920 		{
   923 		{
   921 		//
   924 		//
   922 		// 1) This is the complete message (e.g. a single-segment message).
   925 		// 1) This is the complete message (e.g. a single-segment message).
   936 		// Search the reassembly store for existing parts of the message.
   939 		// Search the reassembly store for existing parts of the message.
   937 		//
   940 		//
   938 		TInt  segStoreIndex(KErrNotFound);
   941 		TInt  segStoreIndex(KErrNotFound);
   939 
   942 
   940 		iReassemblyStore->MatchPDUToExistingMessage(aSmsMessage, segStoreIndex);
   943 		iReassemblyStore->MatchPDUToExistingMessage(aSmsMessage, segStoreIndex);
   941 		LOGSMSPROT2("CFacadeSmsReassemblyStore::AddSegmentToNonClass0ReassemblyStoreL(): "
   944 		OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_ADDSEGMENTTONONCLASS0REASSEMBLYSTOREL_2, "CFacadeSmsReassemblyStore::AddSegmentToNonClass0ReassemblyStoreL(): ""segStoreIndex=%d", segStoreIndex);
   942 					"segStoreIndex=%d", segStoreIndex);
       
   943 
   945 
   944 		//
   946 		//
   945 		// If not yet complete, then we must be part of a multiple PDU message.
   947 		// If not yet complete, then we must be part of a multiple PDU message.
   946 		// Search the reassembly store for existing parts of the message. This
   948 		// Search the reassembly store for existing parts of the message. This
   947 		// may set iIsComplete to true if all segments are then found.
   949 		// may set iIsComplete to true if all segments are then found.
   956 		 	//
   958 		 	//
   957 		 	aIndex = segStoreIndex;
   959 		 	aIndex = segStoreIndex;
   958 			iReassemblyStore->UpdateExistingMessageL(aSmsMessage, aGsmSms, aIndex,
   960 			iReassemblyStore->UpdateExistingMessageL(aSmsMessage, aGsmSms, aIndex,
   959 													aIsComplete, isDuplicateMsgRef,
   961 													aIsComplete, isDuplicateMsgRef,
   960 													isDuplicateSlot);
   962 													isDuplicateSlot);
   961 			LOGSMSPROT5("CFacadeSmsReassemblyStore::AddSegmentToNonClass0ReassemblyStoreL(): "
   963 			OstTraceDefExt4(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_ADDSEGMENTTONONCLASS0REASSEMBLYSTOREL_3, "CFacadeSmsReassemblyStore::AddSegmentToNonClass0ReassemblyStoreL(): ""aIndex=%d, isComplete=%d, isDuplicateMsgRef=%d, isDuplicateSlot=%d",aIndex, aIsComplete, isDuplicateMsgRef, isDuplicateSlot);
   962 						"aIndex=%d, isComplete=%d, isDuplicateMsgRef=%d, isDuplicateSlot=%d",
       
   963 						aIndex, aIsComplete, isDuplicateMsgRef, isDuplicateSlot);
       
   964 
   964 
   965 			if (isDuplicateMsgRef)
   965 			if (isDuplicateMsgRef)
   966 				{
   966 				{
   967 				//
   967 				//
   968 				// In most cases discard it, unless we are doing an enumeration???
   968 				// In most cases discard it, unless we are doing an enumeration???
  1048 		iReassemblyStore->BeginTransactionLC();
  1048 		iReassemblyStore->BeginTransactionLC();
  1049 		found = iReassemblyStore->FindMessageL(aSmsMessage, EFalse, foundIndex);
  1049 		found = iReassemblyStore->FindMessageL(aSmsMessage, EFalse, foundIndex);
  1050 		iReassemblyStore->CommitTransactionL();
  1050 		iReassemblyStore->CommitTransactionL();
  1051 		}
  1051 		}
  1052 
  1052 
  1053 	LOGSMSPROT3("CFacadeSmsReassemblyStore::UpdateLogServerIdOfNonClass0MessageL(): found=%d, foundIndex=%d",
  1053 	OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_UPDATELOGSERVERIDOFNONCLASS0MESSAGEL_1, "CFacadeSmsReassemblyStore::UpdateLogServerIdOfNonClass0MessageL(): found=%d, foundIndex=%d",found, foundIndex);
  1054 				found, foundIndex);
       
  1055 
  1054 
  1056 	//
  1055 	//
  1057 	// If found and the index is valid, then update the Log Server ID...
  1056 	// If found and the index is valid, then update the Log Server ID...
  1058 	//
  1057 	//
  1059 	if (found  &&  aIndex == foundIndex)
  1058 	if (found  &&  aIndex == foundIndex)
  1067  *  Checks whether a message is a WAP message.
  1066  *  Checks whether a message is a WAP message.
  1068  *  
  1067  *  
  1069  */
  1068  */
  1070 TBool CFacadeSmsReassemblyStore::IsWapSMS(const CSmsMessage& aSmsMessage)
  1069 TBool CFacadeSmsReassemblyStore::IsWapSMS(const CSmsMessage& aSmsMessage)
  1071 	{
  1070 	{
  1072 	LOGSMSPROT1("CFacadeSmsReassemblyStore::IsWapSMS()");
  1071 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CFACADESMSREASSEMBLYSTORE_ISWAPSMS_1, "CFacadeSmsReassemblyStore::IsWapSMS()");
  1073 
  1072 
  1074 	return CSmsProtocol::IsAppPortSMS(aSmsMessage);
  1073 	return CSmsProtocol::IsAppPortSMS(aSmsMessage);
  1075 	}
  1074 	}