smsprotocols/smsstack/smsprot/Src/smspbear.cpp
branchopencode
changeset 24 6638e7f4bd8f
parent 0 3553901f7fa8
--- a/smsprotocols/smsstack/smsprot/Src/smspbear.cpp	Mon May 03 13:37:20 2010 +0300
+++ b/smsprotocols/smsstack/smsprot/Src/smspbear.cpp	Thu May 06 15:10:38 2010 +0100
@@ -1,366 +1,366 @@
-// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-/**
- @file
-*/
-
-#include <commsdattypesv1_1.h>
-#include <cdbcols.h>
-#include "smspmain.h"
-#include "smsuset.h"
-#include "smspcdb.h"
-#include "SmsuTimer.h"
-
-using namespace CommsDat;
-
-
-/**
- *  2 phase constructor.
- *  
- *  @param aSmsSettings a reference to the global SMS settings.
- *  @param aSmsMessaging a reference to the ETEL SMS messaging subsession.
- *  @param aPriority of the request.
- *  @leave Leaves if ContructL() leaves, or not enough memory is available.
- *  @return a new CSmspSetBearer object
- */
-CSmspSetBearer* CSmspSetBearer::NewL(const TSmsSettings& aSmsSettings,RMobileSmsMessaging& aSmsMessaging, TInt aPriority)
-	{
-	LOGSMSPROT2("CSmspSetBearer::NewL aPriority = %d", aPriority);
-
-	CSmspSetBearer* smsSetBearer=new(ELeave) CSmspSetBearer(aSmsSettings,aSmsMessaging, aPriority);
-	CleanupStack::PushL(smsSetBearer);
-	smsSetBearer->ConstructL();
-	CleanupStack::Pop();
-
-	return smsSetBearer;
-	} // CSmspSetBearer::NewL
-
-
-/**
- *  2-phase constructor, perform construction that can leave
- */
-void CSmspSetBearer::ConstructL()
-	{
-	LOGSMSPROT1("CSmspSetBearer::ConstructL()");
-
-	CSmspCommDbEvent::ConstructL();
-
-	User::LeaveIfError(iProperty.Attach(KUidSystemCategory, KUidCommDbSMSBearerChange.iUid));
-	} // CSmspSetBearer::ConstructL
-
-
-/**
- *  Private constructor used in the first phase of construction.
- *  
- *  @param aSmsSettings a reference to the global SMS settings.
- *  @param aSmsMessaging a reference to the ETEL SMS messaging subsession.
- *  @param aPriority of the request.
- *  
- */
-CSmspSetBearer::CSmspSetBearer(const TSmsSettings& aSmsSettings, RMobileSmsMessaging& aSmsMessaging, TInt aPriority)
-	:CSmspCommDbEvent(aSmsSettings, aSmsMessaging, aPriority)
-	,iState(ESmsSetBearerStateInit)
-	{
-	} // CSmspSetBearer::CSmspSetBearer
-
-
-/**
- *  CSmspSetBearer destructor
- */
-CSmspSetBearer::~CSmspSetBearer()
-	{
-	Cancel();
-	} // CSmspSetBearer::~CSmspSetBearer
-
-
-/**
- *  Notifies if SMS bearer is set to the TSY. Start setting bearer
- *  process if bearer is not set.
- */
-void CSmspSetBearer::NotifyBearerSet(TRequestStatus& aStatus)
-	{
-	LOGSMSPROT2("CSmspSetBearer::NotifyBearerSet, aStatus = %d", aStatus.Int());
-	if (!iBearerSet && IsActive())
-		{
-		Cancel();
-		}
-
-	Queue(aStatus);
-
-	if (iBearerSet)
-		{
-		LOGSMSPROT1("CSmspSetBearer::NotifyBearerSet RequestComplete called");
-		CSmsuActiveBase::Complete(KErrNone);
-		}
-	else
-		{
-		LOGSMSPROT1("CSmspSetBearer::NotifyBearerSet started");
-		Start();
-		}
-	} // CSmspSetBearer::NotifyBearerSet
-
-
-/**
- *  Starts the sequence for configuring the current SMS bearer on the phone/TSY.
- */
-void CSmspSetBearer::Start()
-	{
-	LOGSMSPROT1("CSmspSetBearer::Start");
-	// Cancel any outstanding request
-	TRAPD(err, GetSmsBearerL(iBearer));
-
-	iBearerSet = EFalse;
-
-	if (err == KErrNone)
-		{
-		LOGSMSPROT2("CSmspSetBearer::GetSmsBearerL() left with %d", err);
-
-		// Set the previous bearer to the one that has been read
-		// from CommDB so that iPreviousBearer has an initial value
-		// when the smsstack is first started.
-		iPreviousBearer = iBearer;
-		SetSmsBearer();
-		}
-	else
-		{
-		LOGSMSPROT2("CSmspSetBearer::Start failed to get SMS bearer, error = %d", err);
-		Complete(err);
-		}
-	} // CSmspSetBearer::Start
-
-
-/**
- *  Handles a completed request.
- *  
- *  Makes a state transition based on the result of the request and current state.
- *  
- *  @leave Panic if RunL is called while object is in idle state.
- */
-void CSmspSetBearer::DoRunL()
-	{
-	LOGSMSPROT3("CSmspSetBearer::DoRunL(): iState=%d iStatus=%d", iState, iStatus.Int());
-
-	switch (iState)
-		{
-		case ESmsSetBearerNotifyOnEvent:
-			{
-			if (iStatus.Int() == KErrNone)
-				{
-				TInt tempBearer;
-#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
-				CMDBSession *dbSession = CMDBSession::NewL(KCDVersion1_2);
-#else
-				CMDBSession *dbSession = CMDBSession::NewL(KCDVersion1_1);
-#endif
-				CleanupStack::PushL(dbSession);
-				CMDBRecordSet<CCDGlobalSettingsRecord> globalSettingsRecord(KCDTIdGlobalSettingsRecord);
-				TRAPD(err, globalSettingsRecord.LoadL(*dbSession));
-				if (err != KErrNone)
-					{
-					LOGSMSPROT2("CSmspSetBearer::DoRunL, could not load global settings, leave error code = %d", err);
-					User::Leave(err);
-					}
-
-				iPreviousBearer = iBearer;
-
-				LOGSMSPROT2("CSmspSetBearer::DoRunL Storing previous bearer setting. Previous bearer now = %d", iBearer);
-
-				tempBearer = ((CCDGlobalSettingsRecord*)globalSettingsRecord.iRecords[0])->iSMSBearer;
-				iBearer = static_cast<RMobileSmsMessaging::TMobileSmsBearer>(tempBearer);
-
-				CleanupStack::PopAndDestroy(dbSession);
-
-				SetSmsBearer();
-				}
-			else
-				{
-				NotifyOnEvent();
-				}
-			}
-			break;
-
-		case ESmsSetBearerStateSettingBearer:
-			{
-			if (iStatus.Int() == KErrNone)
-				{
-				iBearerSet = ETrue;
-				}
-			else
-				{
-				// Set bearer to previous value, if status!=KErrNone
-				// (e.g. KErrNotSupported)
-				// Set global setting to previous value,
-				// then complete.
-				LOGSMSPROT3("CSmspSetBearer::DoRunL TSY failed to set MO SMS bearer. status = %d. Bearer = %d", iStatus.Int(), iBearer);
-
-				iBearer = iPreviousBearer;
-				LOGSMSPROT2("CSmspSetBearer::DoRunL Setting bearer back to previous setting. Bearer = %d", iBearer);
-
-#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
-				CMDBSession *dbSession = CMDBSession::NewL(KCDVersion1_2);
-#else
-				CMDBSession *dbSession = CMDBSession::NewL(KCDVersion1_1);
-#endif
-				CleanupStack::PushL(dbSession);
-				CMDBRecordSet<CCDGlobalSettingsRecord> globalSettingsRecord(KCDTIdGlobalSettingsRecord);
-				TRAPD(err, globalSettingsRecord.LoadL(*dbSession));
-				if (err != KErrNone)
-					{
-					LOGSMSPROT2("CSmspSetBearer::DoRunL could not load global settings, error = %d", err);
-					User::Leave(err);
-					}
-
-				((CCDGlobalSettingsRecord*)globalSettingsRecord.iRecords[0])->iSMSBearer = iPreviousBearer;
-				TRAP(err, globalSettingsRecord.ModifyL(*dbSession));
-				if (err != KErrNone)
-					{
-					LOGSMSPROT2("CSmspSetBearer::DoRunL could not modify global settings, error = %d", err);
-					User::Leave(err);
-					}
-
-				CleanupStack::PopAndDestroy(dbSession);
-				}
-			}
-			break;
-
-		default:
-			{
-			SmspPanic(KSmspPanicUnexpectedState);
-			}
-			break;
-		}
-
-	//
-	// DoRunL() will now return to CSmsuActiveBase which if the object
-	// is not active, will call Complete().
-	//
-	} // CSmspSetBearer::DoRunL
-
-
-/**
- *  Handles a request to cancel the state machine.
- *  Cancels any outstanding request and calls Complete().
- */
-void CSmspSetBearer::DoCancel()
-	{
-	LOGSMSPROT1("CSmspSetBearer::DoCancel");
-
-	TimedSetActiveCancel();
-
-	// Explicitly set iBearerSet to false to ensure new bearer is set on each execution
-	iBearerSet = EFalse;
-
-	switch (iState)
-		{
-		case ESmsSetBearerStateInit:
-			{
-			// NOP
-			}
-			break;
-			
-		case ESmsSetBearerStateSettingBearer:
-			{
-			iSmsMessaging.CancelAsyncRequest(EMobileSmsMessagingSetMoSmsBearer);
-			}
-			break;
-
-		case ESmsSetBearerNotifyOnEvent:
-			{
-			iProperty.Cancel();
-			}
-			break;
-
-		default:
-			{
-			SmspPanic(KSmspPanicUnexpectedState);
-			}
-			break;
-		}
-
-	//
-	// Handle completion of this Active Object. Note that the object
-	// may well still be active at this point...
-	//
-	if (TimedOut())
-		{
-		Complete(KErrTimedOut);
-		}
-	else
-		{
-		Complete(KErrCancel);
-		}
-	} // CSmspSetBearer::DoCancel
-
-
-/**
- *  Performs the state transition to CSmspSetBearer::ESmsSetBearerStateQueryingCommDb by
- *  querying CommDB for the current value.
- *  
- *  @param aBearer a reference to the TMobileSmsBearer.
- */
-void CSmspSetBearer::GetSmsBearerL(RMobileSmsMessaging::TMobileSmsBearer& aBearer)
-	{
-	LOGSMSPROT1("CSmspSetBearer::GetSmsBearerL()");
-	
-#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
-	CMDBSession* sess = CMDBSession::NewL(KCDVersion1_2);
-#else
-	CMDBSession* sess = CMDBSession::NewL(KCDVersion1_1);
-#endif
-	CleanupStack::PushL(sess);
-
-	CMDBField<TUint32>* smsBearerField = NULL;
-
-	smsBearerField = new(ELeave) CMDBField<TUint32>(KCDTIdSMSBearer);
-	CleanupStack::PushL(smsBearerField);
-
-	smsBearerField->SetRecordId(1);
-	smsBearerField->LoadL(*sess);
-
-	aBearer = static_cast<RMobileSmsMessaging::TMobileSmsBearer>(static_cast<TUint32>(*smsBearerField));
-	LOGSMSPROT2("CSmspSetBearer::GetSmsBearerL(): aBearer=%d", aBearer);
-
-	CleanupStack::PopAndDestroy(smsBearerField);
-	CleanupStack::PopAndDestroy(sess);
-	} // CSmspSetBearer::GetSmsBearerL
-
-
-/**
- *  Performs the state transition to CSmspSetBearer::ESmsSetBearerStateSettingBearer
- *  by trying to set the sms bearer on the phone/TSY.
- */
-void CSmspSetBearer::SetSmsBearer()
-	{
-	LOGSMSPROT2("CSmspSetBearer::SetSmsBearer, iBearer = %d", iBearer);
-
-	iBearerSet = EFalse;
-	iState = ESmsSetBearerStateSettingBearer;
-
-	iSmsMessaging.SetMoSmsBearer(iStatus, iBearer);
-	TimedSetActive(iSmsSettings.Timeout());
-	} // CSmspSetBearer::SetSmsBearer
-
-
-/**
- *  Wait for notification from property for when the CommDB global setting SMS_BEARER changes
- */
-void CSmspSetBearer::NotifyOnEvent()
-	{
-	LOGSMSPROT1("CSmspSetBearer::NotifyOnEvent");
-
-	iState = ESmsSetBearerNotifyOnEvent;
-	CSmspCommDbEvent::NotifyOnEvent();
-	} // CSmspSetBearer::NotifyOnEvent
+// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+*/
+
+#include <commsdattypesv1_1.h>
+#include <cdbcols.h>
+#include "smspmain.h"
+#include "smsuset.h"
+#include "smspcdb.h"
+#include "SmsuTimer.h"
+
+using namespace CommsDat;
+
+
+/**
+ *  2 phase constructor.
+ *  
+ *  @param aSmsSettings a reference to the global SMS settings.
+ *  @param aSmsMessaging a reference to the ETEL SMS messaging subsession.
+ *  @param aPriority of the request.
+ *  @leave Leaves if ContructL() leaves, or not enough memory is available.
+ *  @return a new CSmspSetBearer object
+ */
+CSmspSetBearer* CSmspSetBearer::NewL(const TSmsSettings& aSmsSettings,RMobileSmsMessaging& aSmsMessaging, TInt aPriority)
+	{
+	LOGSMSPROT2("CSmspSetBearer::NewL aPriority = %d", aPriority);
+
+	CSmspSetBearer* smsSetBearer=new(ELeave) CSmspSetBearer(aSmsSettings,aSmsMessaging, aPriority);
+	CleanupStack::PushL(smsSetBearer);
+	smsSetBearer->ConstructL();
+	CleanupStack::Pop();
+
+	return smsSetBearer;
+	} // CSmspSetBearer::NewL
+
+
+/**
+ *  2-phase constructor, perform construction that can leave
+ */
+void CSmspSetBearer::ConstructL()
+	{
+	LOGSMSPROT1("CSmspSetBearer::ConstructL()");
+
+	CSmspCommDbEvent::ConstructL();
+
+	User::LeaveIfError(iProperty.Attach(KUidSystemCategory, KUidCommDbSMSBearerChange.iUid));
+	} // CSmspSetBearer::ConstructL
+
+
+/**
+ *  Private constructor used in the first phase of construction.
+ *  
+ *  @param aSmsSettings a reference to the global SMS settings.
+ *  @param aSmsMessaging a reference to the ETEL SMS messaging subsession.
+ *  @param aPriority of the request.
+ *  
+ */
+CSmspSetBearer::CSmspSetBearer(const TSmsSettings& aSmsSettings, RMobileSmsMessaging& aSmsMessaging, TInt aPriority)
+	:CSmspCommDbEvent(aSmsSettings, aSmsMessaging, aPriority)
+	,iState(ESmsSetBearerStateInit)
+	{
+	} // CSmspSetBearer::CSmspSetBearer
+
+
+/**
+ *  CSmspSetBearer destructor
+ */
+CSmspSetBearer::~CSmspSetBearer()
+	{
+	Cancel();
+	} // CSmspSetBearer::~CSmspSetBearer
+
+
+/**
+ *  Notifies if SMS bearer is set to the TSY. Start setting bearer
+ *  process if bearer is not set.
+ */
+void CSmspSetBearer::NotifyBearerSet(TRequestStatus& aStatus)
+	{
+	LOGSMSPROT2("CSmspSetBearer::NotifyBearerSet, aStatus = %d", aStatus.Int());
+	if (!iBearerSet && IsActive())
+		{
+		Cancel();
+		}
+
+	Queue(aStatus);
+
+	if (iBearerSet)
+		{
+		LOGSMSPROT1("CSmspSetBearer::NotifyBearerSet RequestComplete called");
+		CSmsuActiveBase::Complete(KErrNone);
+		}
+	else
+		{
+		LOGSMSPROT1("CSmspSetBearer::NotifyBearerSet started");
+		Start();
+		}
+	} // CSmspSetBearer::NotifyBearerSet
+
+
+/**
+ *  Starts the sequence for configuring the current SMS bearer on the phone/TSY.
+ */
+void CSmspSetBearer::Start()
+	{
+	LOGSMSPROT1("CSmspSetBearer::Start");
+	// Cancel any outstanding request
+	TRAPD(err, GetSmsBearerL(iBearer));
+
+	iBearerSet = EFalse;
+
+	if (err == KErrNone)
+		{
+		LOGSMSPROT2("CSmspSetBearer::GetSmsBearerL() left with %d", err);
+
+		// Set the previous bearer to the one that has been read
+		// from CommDB so that iPreviousBearer has an initial value
+		// when the smsstack is first started.
+		iPreviousBearer = iBearer;
+		SetSmsBearer();
+		}
+	else
+		{
+		LOGSMSPROT2("CSmspSetBearer::Start failed to get SMS bearer, error = %d", err);
+		Complete(err);
+		}
+	} // CSmspSetBearer::Start
+
+
+/**
+ *  Handles a completed request.
+ *  
+ *  Makes a state transition based on the result of the request and current state.
+ *  
+ *  @leave Panic if RunL is called while object is in idle state.
+ */
+void CSmspSetBearer::DoRunL()
+	{
+	LOGSMSPROT3("CSmspSetBearer::DoRunL(): iState=%d iStatus=%d", iState, iStatus.Int());
+
+	switch (iState)
+		{
+		case ESmsSetBearerNotifyOnEvent:
+			{
+			if (iStatus.Int() == KErrNone)
+				{
+				TInt tempBearer;
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+				CMDBSession *dbSession = CMDBSession::NewL(KCDVersion1_2);
+#else
+				CMDBSession *dbSession = CMDBSession::NewL(KCDVersion1_1);
+#endif
+				CleanupStack::PushL(dbSession);
+				CMDBRecordSet<CCDGlobalSettingsRecord> globalSettingsRecord(KCDTIdGlobalSettingsRecord);
+				TRAPD(err, globalSettingsRecord.LoadL(*dbSession));
+				if (err != KErrNone)
+					{
+					LOGSMSPROT2("CSmspSetBearer::DoRunL, could not load global settings, leave error code = %d", err);
+					User::Leave(err);
+					}
+
+				iPreviousBearer = iBearer;
+
+				LOGSMSPROT2("CSmspSetBearer::DoRunL Storing previous bearer setting. Previous bearer now = %d", iBearer);
+
+				tempBearer = ((CCDGlobalSettingsRecord*)globalSettingsRecord.iRecords[0])->iSMSBearer;
+				iBearer = static_cast<RMobileSmsMessaging::TMobileSmsBearer>(tempBearer);
+
+				CleanupStack::PopAndDestroy(dbSession);
+
+				SetSmsBearer();
+				}
+			else
+				{
+				NotifyOnEvent();
+				}
+			}
+			break;
+
+		case ESmsSetBearerStateSettingBearer:
+			{
+			if (iStatus.Int() == KErrNone)
+				{
+				iBearerSet = ETrue;
+				}
+			else
+				{
+				// Set bearer to previous value, if status!=KErrNone
+				// (e.g. KErrNotSupported)
+				// Set global setting to previous value,
+				// then complete.
+				LOGSMSPROT3("CSmspSetBearer::DoRunL TSY failed to set MO SMS bearer. status = %d. Bearer = %d", iStatus.Int(), iBearer);
+
+				iBearer = iPreviousBearer;
+				LOGSMSPROT2("CSmspSetBearer::DoRunL Setting bearer back to previous setting. Bearer = %d", iBearer);
+
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+				CMDBSession *dbSession = CMDBSession::NewL(KCDVersion1_2);
+#else
+				CMDBSession *dbSession = CMDBSession::NewL(KCDVersion1_1);
+#endif
+				CleanupStack::PushL(dbSession);
+				CMDBRecordSet<CCDGlobalSettingsRecord> globalSettingsRecord(KCDTIdGlobalSettingsRecord);
+				TRAPD(err, globalSettingsRecord.LoadL(*dbSession));
+				if (err != KErrNone)
+					{
+					LOGSMSPROT2("CSmspSetBearer::DoRunL could not load global settings, error = %d", err);
+					User::Leave(err);
+					}
+
+				((CCDGlobalSettingsRecord*)globalSettingsRecord.iRecords[0])->iSMSBearer = iPreviousBearer;
+				TRAP(err, globalSettingsRecord.ModifyL(*dbSession));
+				if (err != KErrNone)
+					{
+					LOGSMSPROT2("CSmspSetBearer::DoRunL could not modify global settings, error = %d", err);
+					User::Leave(err);
+					}
+
+				CleanupStack::PopAndDestroy(dbSession);
+				}
+			}
+			break;
+
+		default:
+			{
+			SmspPanic(KSmspPanicUnexpectedState);
+			}
+			break;
+		}
+
+	//
+	// DoRunL() will now return to CSmsuActiveBase which if the object
+	// is not active, will call Complete().
+	//
+	} // CSmspSetBearer::DoRunL
+
+
+/**
+ *  Handles a request to cancel the state machine.
+ *  Cancels any outstanding request and calls Complete().
+ */
+void CSmspSetBearer::DoCancel()
+	{
+	LOGSMSPROT1("CSmspSetBearer::DoCancel");
+
+	TimedSetActiveCancel();
+
+	// Explicitly set iBearerSet to false to ensure new bearer is set on each execution
+	iBearerSet = EFalse;
+
+	switch (iState)
+		{
+		case ESmsSetBearerStateInit:
+			{
+			// NOP
+			}
+			break;
+			
+		case ESmsSetBearerStateSettingBearer:
+			{
+			iSmsMessaging.CancelAsyncRequest(EMobileSmsMessagingSetMoSmsBearer);
+			}
+			break;
+
+		case ESmsSetBearerNotifyOnEvent:
+			{
+			iProperty.Cancel();
+			}
+			break;
+
+		default:
+			{
+			SmspPanic(KSmspPanicUnexpectedState);
+			}
+			break;
+		}
+
+	//
+	// Handle completion of this Active Object. Note that the object
+	// may well still be active at this point...
+	//
+	if (TimedOut())
+		{
+		Complete(KErrTimedOut);
+		}
+	else
+		{
+		Complete(KErrCancel);
+		}
+	} // CSmspSetBearer::DoCancel
+
+
+/**
+ *  Performs the state transition to CSmspSetBearer::ESmsSetBearerStateQueryingCommDb by
+ *  querying CommDB for the current value.
+ *  
+ *  @param aBearer a reference to the TMobileSmsBearer.
+ */
+void CSmspSetBearer::GetSmsBearerL(RMobileSmsMessaging::TMobileSmsBearer& aBearer)
+	{
+	LOGSMSPROT1("CSmspSetBearer::GetSmsBearerL()");
+	
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+	CMDBSession* sess = CMDBSession::NewL(KCDVersion1_2);
+#else
+	CMDBSession* sess = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	CleanupStack::PushL(sess);
+
+	CMDBField<TUint32>* smsBearerField = NULL;
+
+	smsBearerField = new(ELeave) CMDBField<TUint32>(KCDTIdSMSBearer);
+	CleanupStack::PushL(smsBearerField);
+
+	smsBearerField->SetRecordId(1);
+	smsBearerField->LoadL(*sess);
+
+	aBearer = static_cast<RMobileSmsMessaging::TMobileSmsBearer>(static_cast<TUint32>(*smsBearerField));
+	LOGSMSPROT2("CSmspSetBearer::GetSmsBearerL(): aBearer=%d", aBearer);
+
+	CleanupStack::PopAndDestroy(smsBearerField);
+	CleanupStack::PopAndDestroy(sess);
+	} // CSmspSetBearer::GetSmsBearerL
+
+
+/**
+ *  Performs the state transition to CSmspSetBearer::ESmsSetBearerStateSettingBearer
+ *  by trying to set the sms bearer on the phone/TSY.
+ */
+void CSmspSetBearer::SetSmsBearer()
+	{
+	LOGSMSPROT2("CSmspSetBearer::SetSmsBearer, iBearer = %d", iBearer);
+
+	iBearerSet = EFalse;
+	iState = ESmsSetBearerStateSettingBearer;
+
+	iSmsMessaging.SetMoSmsBearer(iStatus, iBearer);
+	TimedSetActive(iSmsSettings.Timeout());
+	} // CSmspSetBearer::SetSmsBearer
+
+
+/**
+ *  Wait for notification from property for when the CommDB global setting SMS_BEARER changes
+ */
+void CSmspSetBearer::NotifyOnEvent()
+	{
+	LOGSMSPROT1("CSmspSetBearer::NotifyOnEvent");
+
+	iState = ESmsSetBearerNotifyOnEvent;
+	CSmspCommDbEvent::NotifyOnEvent();
+	} // CSmspSetBearer::NotifyOnEvent