smsprotocols/smsstack/smsprot/Src/smsprecvmode.cpp
branchRCL_3
changeset 65 630d2f34d719
parent 0 3553901f7fa8
child 66 07a122eea281
equal deleted inserted replaced
61:17af172ffa5f 65:630d2f34d719
     1 // Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 1999-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".
    17 
    17 
    18 /**
    18 /**
    19  @file
    19  @file
    20 */
    20 */
    21 
    21 
       
    22 
       
    23 #include "OstTraceDefinitions.h"
       
    24 #ifdef OST_TRACE_COMPILER_IN_USE
       
    25 #include "smsprecvmodeTraces.h"
       
    26 #endif
       
    27 
    22 #include <commsdattypesv1_1.h>
    28 #include <commsdattypesv1_1.h>
    23 #include <cdbcols.h>
    29 #include <cdbcols.h>
    24 
    30 
    25 #include "smspcdb.h"
    31 #include "smspcdb.h"
    26 #include "smspmain.h"
    32 #include "smspmain.h"
    59 /**
    65 /**
    60  *  Two-phase construction of CSmspReceiveMode
    66  *  Two-phase construction of CSmspReceiveMode
    61  */
    67  */
    62 CSmspReceiveMode* CSmspReceiveMode::NewL(const TSmsSettings& aSmsSettings, RMobileSmsMessaging& aSmsMessaging, const RMobileSmsMessaging::TMobileSmsCapsV1& aSmsCaps, TInt aPriority)
    68 CSmspReceiveMode* CSmspReceiveMode::NewL(const TSmsSettings& aSmsSettings, RMobileSmsMessaging& aSmsMessaging, const RMobileSmsMessaging::TMobileSmsCapsV1& aSmsCaps, TInt aPriority)
    63 	{
    69 	{
    64 	LOGSMSPROT1("CSmspReceiveMode::NewL()");
    70 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPRECEIVEMODE_NEWL_1, "CSmspReceiveMode::NewL()");
    65 
    71 
    66 	CSmspReceiveMode* self = new (ELeave) CSmspReceiveMode(aSmsSettings, aSmsMessaging, aSmsCaps, aPriority);
    72 	CSmspReceiveMode* self = new (ELeave) CSmspReceiveMode(aSmsSettings, aSmsMessaging, aSmsCaps, aPriority);
    67 	CleanupStack::PushL(self);
    73 	CleanupStack::PushL(self);
    68 	self->ConstructL();
    74 	self->ConstructL();
    69 	CleanupStack::Pop(self);
    75 	CleanupStack::Pop(self);
    71 	} // CSmspReceiveMode::NewL
    77 	} // CSmspReceiveMode::NewL
    72 
    78 
    73 
    79 
    74 void CSmspReceiveMode::ConstructL()
    80 void CSmspReceiveMode::ConstructL()
    75 	{
    81 	{
    76 	LOGSMSPROT1("CSmspReceiveMode::ConstructL()");
    82 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPRECEIVEMODE_CONSTRUCTL_1, "CSmspReceiveMode::ConstructL()");
    77 
    83 
    78 	CSmspCommDbEvent::ConstructL();
    84 	CSmspCommDbEvent::ConstructL();
    79 	User::LeaveIfError(iCommDbRetryTimer.CreateLocal());
    85 	User::LeaveIfError(iCommDbRetryTimer.CreateLocal());
    80 	User::LeaveIfError(iProperty.Attach(KUidSystemCategory, KUidCommDbSMSReceiveModeChange.iUid));
    86 	User::LeaveIfError(iProperty.Attach(KUidSystemCategory, KUidCommDbSMSReceiveModeChange.iUid));
    81 	} // CSmspReceiveMode::ConstructL
    87 	} // CSmspReceiveMode::ConstructL
    84 /**
    90 /**
    85  *  Intially sets the SMS Receive Mode on the TSY or waits for notification of the CommDB global setting SMS_RECEIVE_MODE to change
    91  *  Intially sets the SMS Receive Mode on the TSY or waits for notification of the CommDB global setting SMS_RECEIVE_MODE to change
    86  */
    92  */
    87 void CSmspReceiveMode::Start(TRequestStatus& aStatus)
    93 void CSmspReceiveMode::Start(TRequestStatus& aStatus)
    88 	{
    94 	{
    89 	LOGSMSPROT1("CSmspReceiveMode::Start()");
    95 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPRECEIVEMODE_START_1, "CSmspReceiveMode::Start()");
    90 
    96 
    91 	Cancel();
    97 	Cancel();
    92 	Queue(aStatus);
    98 	Queue(aStatus);
    93 
    99 
    94 	RMobileSmsMessaging::TMobileSmsReceiveMode recvMode(SelectReceiveMode());
   100 	RMobileSmsMessaging::TMobileSmsReceiveMode recvMode(SelectReceiveMode());
   119 /**
   125 /**
   120  *  Wait for notification from property for when the CommDB global setting SMS_RECEIVE_MODE changes
   126  *  Wait for notification from property for when the CommDB global setting SMS_RECEIVE_MODE changes
   121  */
   127  */
   122 void CSmspReceiveMode::NotifyOnEvent()
   128 void CSmspReceiveMode::NotifyOnEvent()
   123 	{
   129 	{
   124 	LOGSMSPROT1("CSmspReceiveMode::NotifyOnEvent()");
   130 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPRECEIVEMODE_NOTIFYONEVENT_1, "CSmspReceiveMode::NotifyOnEvent()");
   125 
   131 
   126 	iState = ESmspReceiveModeNotifyOnEvent;
   132 	iState = ESmspReceiveModeNotifyOnEvent;
   127 	CSmspCommDbEvent::NotifyOnEvent();
   133 	CSmspCommDbEvent::NotifyOnEvent();
   128 	} // CSmspReceiveMode::NotifyOnEvent
   134 	} // CSmspReceiveMode::NotifyOnEvent
   129 
   135 
   133  *  
   139  *  
   134  *  @param aReceiveMode SMS Receive Mode to set on the TSY
   140  *  @param aReceiveMode SMS Receive Mode to set on the TSY
   135  */
   141  */
   136 void CSmspReceiveMode::SetReceiveMode(RMobileSmsMessaging::TMobileSmsReceiveMode aReceiveMode)
   142 void CSmspReceiveMode::SetReceiveMode(RMobileSmsMessaging::TMobileSmsReceiveMode aReceiveMode)
   137 	{
   143 	{
   138 	LOGSMSPROT1("CSmspReceiveMode::SetReceiveMode()");
   144 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPRECEIVEMODE_SETRECEIVEMODE_1, "CSmspReceiveMode::SetReceiveMode()");
   139 
   145 
   140 	aReceiveMode = SelectReceiveMode(aReceiveMode);
   146 	aReceiveMode = SelectReceiveMode(aReceiveMode);
   141 	iSmsReceiveModeLastSet = aReceiveMode;
   147 	iSmsReceiveModeLastSet = aReceiveMode;
   142 
   148 
   143 	iState = ESmspReceiveModeSet;
   149 	iState = ESmspReceiveModeSet;
   146 	} // CSmspReceiveMode::SetReceiveMode
   152 	} // CSmspReceiveMode::SetReceiveMode
   147 
   153 
   148 
   154 
   149 void CSmspReceiveMode::DoCancel()
   155 void CSmspReceiveMode::DoCancel()
   150 	{
   156 	{
   151 	LOGSMSPROT1("CSmspReceiveMode::DoCancel()");
   157 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPRECEIVEMODE_DOCANCEL_1, "CSmspReceiveMode::DoCancel()");
   152 
   158 
   153 	TimedSetActiveCancel();
   159 	TimedSetActiveCancel();
   154 	switch (iState)
   160 	switch (iState)
   155 		{
   161 		{
   156 		case ESmspReceiveModeInit:
   162 		case ESmspReceiveModeInit:
   205  *  @param aReceiveMode Will be set to the CommsDat global setting SMS_RECEIVE_MODE
   211  *  @param aReceiveMode Will be set to the CommsDat global setting SMS_RECEIVE_MODE
   206  *  @return Error code if we cannot create the session, or load from the db
   212  *  @return Error code if we cannot create the session, or load from the db
   207  */
   213  */
   208 void CSmspReceiveMode::GetCommDbReceiveModeL(RMobileSmsMessaging::TMobileSmsReceiveMode& aReceiveMode)
   214 void CSmspReceiveMode::GetCommDbReceiveModeL(RMobileSmsMessaging::TMobileSmsReceiveMode& aReceiveMode)
   209 	{
   215 	{
   210 	LOGSMSPROT1("CSmspReceiveMode::GetCommDbReceiveModeL()");
   216 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPRECEIVEMODE_GETCOMMDBRECEIVEMODEL_1, "CSmspReceiveMode::GetCommDbReceiveModeL()");
   211 
   217 
   212 #ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
   218 #ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
   213 	CMDBSession* sess = CMDBSession::NewL(KCDVersion1_2);
   219 	CMDBSession* sess = CMDBSession::NewL(KCDVersion1_2);
   214 #else
   220 #else
   215 	CMDBSession* sess = CMDBSession::NewL(KCDVersion1_1);
   221 	CMDBSession* sess = CMDBSession::NewL(KCDVersion1_1);
   228 	} // CSmspReceiveMode::GetCommDbReceiveModeL
   234 	} // CSmspReceiveMode::GetCommDbReceiveModeL
   229 
   235 
   230 
   236 
   231 void CSmspReceiveMode::DoRunL()
   237 void CSmspReceiveMode::DoRunL()
   232 	{
   238 	{
   233 	LOGSMSPROT1("CSmspReceiveMode::DoRunL()");
   239 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPRECEIVEMODE_DORUNL_1, "CSmspReceiveMode::DoRunL()");
   234 
   240 
   235 	switch (iState)
   241 	switch (iState)
   236 		{
   242 		{
   237 		case ESmspReceiveModeSet:
   243 		case ESmspReceiveModeSet:
   238 			{
   244 			{
   261 					SetActive();
   267 					SetActive();
   262 					}
   268 					}
   263 				else
   269 				else
   264 					{
   270 					{
   265 					// Failed to read CommDB even after retries. Set the receive mode to the last known setting
   271 					// Failed to read CommDB even after retries. Set the receive mode to the last known setting
   266 					LOGSMSPROT2("CSmspReceiveMode::DoRunL in ESmspReceiveModeRetryCommDb state, failed to read CommDb, using mode #%d", iSmsReceiveModeLastSet );
   272 					OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPRECEIVEMODE_DORUNL_2, "CSmspReceiveMode::DoRunL in ESmspReceiveModeRetryCommDb state, failed to read CommDb, using mode #%d", iSmsReceiveModeLastSet );
   267 					SetReceiveMode(iSmsReceiveModeLastSet);
   273 					SetReceiveMode(iSmsReceiveModeLastSet);
   268 					}
   274 					}
   269 				}
   275 				}
   270 			}
   276 			}
   271 			break;
   277 			break;
   306  *  
   312  *  
   307  *  @return An SMS Receive Mode supported by the TSY.
   313  *  @return An SMS Receive Mode supported by the TSY.
   308  */
   314  */
   309 RMobileSmsMessaging::TMobileSmsReceiveMode CSmspReceiveMode::SelectReceiveMode() const
   315 RMobileSmsMessaging::TMobileSmsReceiveMode CSmspReceiveMode::SelectReceiveMode() const
   310 	{
   316 	{
   311 	LOGSMSPROT1("CSmspReceiveMode::SelectReceiveMode()");
   317 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPRECEIVEMODE_SELECTRECEIVEMODE_1, "CSmspReceiveMode::SelectReceiveMode()");
   312 
   318 
   313 	const TUint32 smsControl = iSmsCaps.iSmsControl;
   319 	const TUint32 smsControl = iSmsCaps.iSmsControl;
   314 	RMobileSmsMessaging::TMobileSmsReceiveMode recvMode = RMobileSmsMessaging::EReceiveModeUnspecified;
   320 	RMobileSmsMessaging::TMobileSmsReceiveMode recvMode = RMobileSmsMessaging::EReceiveModeUnspecified;
   315 
   321 
   316 	if (smsControl & RMobileSmsMessaging::KCapsReceiveUnstoredClientAck)
   322 	if (smsControl & RMobileSmsMessaging::KCapsReceiveUnstoredClientAck)
   340  *  @param aPreferredMode SMS Receive Mode that a client would like to use.
   346  *  @param aPreferredMode SMS Receive Mode that a client would like to use.
   341  *  @return aPreferredMode if it is supported by the TSY, otherwise return a receive mode that is supported by the TSY.
   347  *  @return aPreferredMode if it is supported by the TSY, otherwise return a receive mode that is supported by the TSY.
   342  */
   348  */
   343 RMobileSmsMessaging::TMobileSmsReceiveMode CSmspReceiveMode::SelectReceiveMode(RMobileSmsMessaging::TMobileSmsReceiveMode aPreferredMode) const
   349 RMobileSmsMessaging::TMobileSmsReceiveMode CSmspReceiveMode::SelectReceiveMode(RMobileSmsMessaging::TMobileSmsReceiveMode aPreferredMode) const
   344 	{
   350 	{
   345 	LOGSMSPROT1("CSmspReceiveMode::SelectReceiveMode()");
   351 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPRECEIVEMODE_SELECTRECEIVEMODE1_1, "CSmspReceiveMode::SelectReceiveMode()");
   346 
   352 
   347 	const TUint32 smsControl = iSmsCaps.iSmsControl;
   353 	const TUint32 smsControl = iSmsCaps.iSmsControl;
   348 	TBool usePreferred = EFalse;
   354 	TBool usePreferred = EFalse;
   349 
   355 
   350 	switch (aPreferredMode)
   356 	switch (aPreferredMode)