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