# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1282202185 -10800 # Node ID f54bfd820e044f694e436a79e7185921da8149ff # Parent 654ed625511dda77675bcc5819ef433b3a0954c8 Revision: 201031 Kit: 201033 diff -r 654ed625511d -r f54bfd820e04 group/bld.inf --- a/group/bld.inf Thu Jul 15 19:02:22 2010 +0300 +++ b/group/bld.inf Thu Aug 19 10:16:25 2010 +0300 @@ -20,7 +20,9 @@ #include "../ipappprotocols_plat/group/bld.inf" #include "../rtp/group/bld.inf" +#include "../realtimenetprots/rtp/group/bld.inf" #include "../realtimenetprots/sipfw/Group/bld.inf" #include "../sipplugins/group/bld.inf" +#include "../sipproviderplugins/sipprovider/group/bld.inf" diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/ProfileAgent/AlrMonitor/inc/sipalrmonitor.h --- a/realtimenetprots/sipfw/ProfileAgent/AlrMonitor/inc/sipalrmonitor.h Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/AlrMonitor/inc/sipalrmonitor.h Thu Aug 19 10:16:25 2010 +0300 @@ -64,48 +64,48 @@ * Starts to monitor IAP availability for the SNAP. * The observer will be informed asynchronouysly * when any IAP is available for the monitored SNAP. - * @param aSnapId SNAP id + * @param aConfigData SNAP Data to identify the correct SNAP Monitor. * @param aObserver observer to be informed when an IAP becomes available */ - void MonitorSnapL( TUint32 aSnapId, - MSipAlrObserver& aObserver ); + void MonitorSnapL( TSipSNAPConfigurationData & aConfigData, + MSipAlrObserver& aObserver); /** * Refreshes the IAP availability for the SNAP. * Scans the available IAPs for the SNAP and informs all the observers * if a better IAP than the current one is available. - * @param aSnapId SNAP id + * @param aConfigData SNAP Data to identify the correct SNAP Monitor. */ - void RefreshIapAvailabilityL( TUint32 aSnapId ); + void RefreshIapAvailabilityL( TSipSNAPConfigurationData & aConfigData ); /** * Allows migration to a new IAP for the SNAP. - * @param aSnapId SNAP id + * @param aConfigData SNAP Data to identify the correct SNAP Monitor. * @return KErrNone on success, otherwise a system wide error code. */ - TInt AllowMigration( TUint32 aSnapId ); + TInt AllowMigration( TSipSNAPConfigurationData & aConfigData ); /** * Disallows migration to a new IAP for the SNAP. - * @param aSnapId SNAP id + * @param aConfigData SNAP Data to identify the correct SNAP Monitor. * @return KErrNone on success, otherwise a system wide error code. */ - TInt DisallowMigration( TUint32 aSnapId ); + TInt DisallowMigration( TSipSNAPConfigurationData & aConfigData ); /** * The migration has succeeded and the new IAP has been taken into use. - * @param aSnapId SNAP id + * @param aConfigData SNAP Data to identify the correct SNAP Monitor. * @return KErrNone on success, otherwise a system wide error code. */ - TInt NewIapAccepted( TUint32 aSnapId ); + TInt NewIapAccepted( TSipSNAPConfigurationData & aConfigData ); /** * The migration has failed and the new IAP was not taken into use. - * @param aSnapId SNAP id + * @param aConfigData SNAP Data to identify the correct SNAP Monitor. * @return KErrNone on success, otherwise a system wide error code. */ - TInt NewIapRejected( TUint32 aSnapId ); + TInt NewIapRejected( TSipSNAPConfigurationData & aConfigData ); /** * Frees all the resources reserved for the observer. @@ -122,8 +122,9 @@ private: // New functions - CSipAlrSnapMonitor* FindSnapMonitor( TUint32 aSnapId ); - + CSipAlrSnapMonitor* FindSnapMonitor( TSipSNAPConfigurationData & aConfigData); + + private: // Data // Used for monitoring SNAP availability diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/ProfileAgent/AlrMonitor/inc/sipalrobserver.h --- a/realtimenetprots/sipfw/ProfileAgent/AlrMonitor/inc/sipalrobserver.h Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/AlrMonitor/inc/sipalrobserver.h Thu Aug 19 10:16:25 2010 +0300 @@ -82,4 +82,22 @@ }; +// CLASS DECLARATION +/** +* This is the class that encapsulates all snap specific data. +*/ + +class TSipSNAPConfigurationData + { +public: + + TSipSNAPConfigurationData(TUint32 aSnapId , TUint32 aBearerId) + { + iSnapId = aSnapId; + iBearerId = aBearerId; + }; + + TUint32 iSnapId; + TBool iBearerId; + }; #endif // MSIPALROBSERVER_H diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/ProfileAgent/AlrMonitor/inc/sipalrsnapmonitor.h --- a/realtimenetprots/sipfw/ProfileAgent/AlrMonitor/inc/sipalrsnapmonitor.h Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/AlrMonitor/inc/sipalrsnapmonitor.h Thu Aug 19 10:16:25 2010 +0300 @@ -34,6 +34,7 @@ #include #include #include +#include #ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY #include @@ -56,10 +57,10 @@ public: // Constructors and destructor static CSipAlrSnapMonitor* NewLC( - TUint32 aSnapId, + TSipSNAPConfigurationData aSnapData, MSipAlrObserver& aObserver, RSocketServ& aSocketServer, - CSipSystemStateMonitor& aSystemStateMonitor ); + CSipSystemStateMonitor& aSystemStateMonitor); ~CSipAlrSnapMonitor(); @@ -108,7 +109,9 @@ void NewIapAccepted(); - void NewIapRejected(); + void NewIapRejected(); + + TBool BearerId(); private: // New functions @@ -134,9 +137,9 @@ private: // Constructors CSipAlrSnapMonitor( - TUint32 aSnapId, + TSipSNAPConfigurationData aSnapData, RSocketServ& aSocketServer, - CSipSystemStateMonitor& aSystemStateMonitor ); + CSipSystemStateMonitor& aSystemStateMonitor); void ConstructL( MSipAlrObserver& aObserver ); @@ -152,7 +155,7 @@ private: // Data - TUint32 iSnapId; + TSipSNAPConfigurationData iSnapData; RSocketServ& iSocketServer; CSipSystemStateMonitor& iSystemStateMonitor; RConnection iConnection; @@ -164,6 +167,8 @@ TBool iFirstStartHasSucceeded; TBool iConnectionActive; TBool iDying; + TConnPrefList iPrefList; + TExtendedConnPref iExtPrefs; private: // For testing purposes @@ -173,4 +178,4 @@ #endif }; -#endif //CSIPALRSNAPMONITOR_H \ No newline at end of file +#endif //CSIPALRSNAPMONITOR_H diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/ProfileAgent/AlrMonitor/src/sipalrmonitor.cpp --- a/realtimenetprots/sipfw/ProfileAgent/AlrMonitor/src/sipalrmonitor.cpp Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/AlrMonitor/src/sipalrmonitor.cpp Thu Aug 19 10:16:25 2010 +0300 @@ -71,12 +71,12 @@ // CSipAlrMonitor::RefreshIapAvailabilityL // ----------------------------------------------------------------------------- // -void CSipAlrMonitor::RefreshIapAvailabilityL ( TUint32 aSnapId ) +void CSipAlrMonitor::RefreshIapAvailabilityL ( TSipSNAPConfigurationData & aConfigData ) { PROFILE_DEBUG3( "CSipAlrMonitorImplementation::RefreshIapAvailabilityL", - aSnapId ) + aConfigData.iSnapId ) - CSipAlrSnapMonitor* monitor = FindSnapMonitor( aSnapId ); + CSipAlrSnapMonitor* monitor = FindSnapMonitor( aConfigData ); if ( monitor ) { monitor->RefreshL(); @@ -87,11 +87,11 @@ // CSipAlrMonitor::AllowMigration // ----------------------------------------------------------------------------- // -TInt CSipAlrMonitor::AllowMigration( TUint32 aSnapId ) +TInt CSipAlrMonitor::AllowMigration( TSipSNAPConfigurationData & aConfigData ) { - PROFILE_DEBUG3("CSipAlrMonitor::AllowMigration, SnapId",aSnapId) - - CSipAlrSnapMonitor* monitor = FindSnapMonitor( aSnapId ); + PROFILE_DEBUG3("CSipAlrMonitor::AllowMigration, SnapId",aConfigData.iSnapId) + PROFILE_DEBUG3("CSipAlrMonitor::AllowMigration, BearerFiltering",aConfigData.iBearerId) + CSipAlrSnapMonitor* monitor = FindSnapMonitor( aConfigData ); if ( monitor ) { monitor->AllowMigration(); @@ -103,11 +103,11 @@ // CSipAlrMonitor::DisallowMigration // ----------------------------------------------------------------------------- // -TInt CSipAlrMonitor::DisallowMigration( TUint32 aSnapId ) +TInt CSipAlrMonitor::DisallowMigration( TSipSNAPConfigurationData& aConfigData ) { - PROFILE_DEBUG3("CSipAlrMonitor::DisallowMigration, SnapId",aSnapId) - - CSipAlrSnapMonitor* monitor = FindSnapMonitor( aSnapId ); + PROFILE_DEBUG3("CSipAlrMonitor::DisallowMigration, SnapId",aConfigData.iSnapId) + PROFILE_DEBUG3("CSipAlrMonitor::DisallowMigration, BearerFiltering",aConfigData.iBearerId) + CSipAlrSnapMonitor* monitor = FindSnapMonitor( aConfigData ); if ( monitor ) { monitor->DisallowMigration(); @@ -120,11 +120,11 @@ // CSipAlrMonitor::NewIapAccepted // ----------------------------------------------------------------------------- // -TInt CSipAlrMonitor::NewIapAccepted( TUint32 aSnapId ) +TInt CSipAlrMonitor::NewIapAccepted( TSipSNAPConfigurationData & aConfigData) { - PROFILE_DEBUG3("CSipAlrMonitor::NewIapAccepted, SnapId",aSnapId) + PROFILE_DEBUG3("CSipAlrMonitor::NewIapAccepted, SnapId",aConfigData.iSnapId) - CSipAlrSnapMonitor* monitor = FindSnapMonitor( aSnapId ); + CSipAlrSnapMonitor* monitor = FindSnapMonitor( aConfigData ); if ( monitor ) { monitor->NewIapAccepted(); @@ -137,11 +137,11 @@ // CSipAlrMonitor::NewIapRejected // ----------------------------------------------------------------------------- // -TInt CSipAlrMonitor::NewIapRejected( TUint32 aSnapId ) +TInt CSipAlrMonitor::NewIapRejected( TSipSNAPConfigurationData & aConfigData ) { - PROFILE_DEBUG3( "CSipAlrMonitor::NewIapRejected, SnapId",aSnapId ) + PROFILE_DEBUG3( "CSipAlrMonitor::NewIapRejected, SnapId",aConfigData.iSnapId ) - CSipAlrSnapMonitor* monitor = FindSnapMonitor( aSnapId ); + CSipAlrSnapMonitor* monitor = FindSnapMonitor( aConfigData ); if ( monitor ) { monitor->NewIapRejected(); @@ -155,13 +155,14 @@ // ----------------------------------------------------------------------------- // void CSipAlrMonitor::MonitorSnapL( - TUint32 aSnapId, - MSipAlrObserver& aObserver ) + TSipSNAPConfigurationData& aConfigData, + MSipAlrObserver& aObserver) { PROFILE_DEBUG4( "CSipAlrMonitor::MonitorSnapL", - aSnapId, reinterpret_cast< TUint >( &aObserver ) ) - - CSipAlrSnapMonitor* monitor = FindSnapMonitor( aSnapId ); + aConfigData.iSnapId, reinterpret_cast< TUint >( &aObserver ) ) + + + CSipAlrSnapMonitor* monitor = FindSnapMonitor( aConfigData); if ( monitor ) { // Monitor exists, add observer and get current IAP availability @@ -173,7 +174,7 @@ else { monitor = CSipAlrSnapMonitor::NewLC( - aSnapId, aObserver, iSocketServer, iSystemStateMonitor ); + aConfigData, aObserver, iSocketServer, iSystemStateMonitor); iSnapMonitors.AppendL( monitor ); CleanupStack::Pop( monitor ); @@ -203,15 +204,18 @@ // CSipAlrMonitor::FindSnapMonitor // ----------------------------------------------------------------------------- // -CSipAlrSnapMonitor* CSipAlrMonitor::FindSnapMonitor( TUint32 aSnapId ) +CSipAlrSnapMonitor* CSipAlrMonitor::FindSnapMonitor( TSipSNAPConfigurationData & aConfigData) { CSipAlrSnapMonitor* monitor = NULL; for ( TInt i = 0; i < iSnapMonitors.Count() && !monitor; i++ ) { - if ( iSnapMonitors[i]->SnapId() == aSnapId ) - { - monitor = iSnapMonitors[i]; + if ( iSnapMonitors[i]->SnapId() == aConfigData.iSnapId && iSnapMonitors[i]->BearerId() == aConfigData.iBearerId ) //mtr found + { + monitor = iSnapMonitors[i]; } } return monitor; } + + + diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/ProfileAgent/AlrMonitor/src/sipalrsnapmonitor.cpp --- a/realtimenetprots/sipfw/ProfileAgent/AlrMonitor/src/sipalrsnapmonitor.cpp Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/AlrMonitor/src/sipalrsnapmonitor.cpp Thu Aug 19 10:16:25 2010 +0300 @@ -28,14 +28,14 @@ // ----------------------------------------------------------------------------- // CSipAlrSnapMonitor* CSipAlrSnapMonitor::NewLC( - TUint32 aSnapId, + TSipSNAPConfigurationData aSnapData, MSipAlrObserver& aObserver, RSocketServ& aSocketServer, - CSipSystemStateMonitor& aSystemStateMonitor ) + CSipSystemStateMonitor& aSystemStateMonitor) { CSipAlrSnapMonitor* self = new ( ELeave ) CSipAlrSnapMonitor( - aSnapId, aSocketServer, aSystemStateMonitor ); + aSnapData, aSocketServer, aSystemStateMonitor); CleanupStack::PushL( self ); self->ConstructL( aObserver ); return self; @@ -46,15 +46,15 @@ // ----------------------------------------------------------------------------- // CSipAlrSnapMonitor::CSipAlrSnapMonitor( - TUint32 aSnapId, + TSipSNAPConfigurationData aSnapData, RSocketServ& aSocketServer, - CSipSystemStateMonitor& aSystemStateMonitor ) : + CSipSystemStateMonitor& aSystemStateMonitor) : CActive ( CActive::EPriorityStandard ), - iSnapId( aSnapId ), + iSnapData( aSnapData ), iSocketServer( aSocketServer ), - iSystemStateMonitor( aSystemStateMonitor ) + iSystemStateMonitor( aSystemStateMonitor ) { - iPrefs.SetSnap( iSnapId ); + iPrefs.SetSnap( aSnapData.iSnapId ); CActiveScheduler::Add( this ); } @@ -67,9 +67,16 @@ PROFILE_DEBUG1( "CSipAlrSnapMonitor::ConstructL entered" ) iSystemStateMonitor.StartMonitoringL( - CSipSystemStateMonitor::ESnapAvailability, iSnapId, *this ); + CSipSystemStateMonitor::ESnapAvailability, SnapId(), *this ); AddObserverL( aObserver ); + + if(IsSnapAvailable()) + { + // SNAP is already Available to be started. + // No Need to wait for Notification from System State Monitor. + StartSnap(); + } PROFILE_DEBUG1( "CSipAlrSnapMonitor::ConstructL returns" ) } @@ -91,7 +98,7 @@ iObservers.Close(); iSystemStateMonitor.StopMonitoring( - CSipSystemStateMonitor::ESnapAvailability, iSnapId, *this ); + CSipSystemStateMonitor::ESnapAvailability, SnapId(), *this ); PROFILE_DEBUG1( "CSipAlrSnapMonitor::~CSipAlrSnapMonitor returns" ) } @@ -129,7 +136,7 @@ for ( TInt i = iObservers.Count() - 1; i >= 0; --i ) { iObservers[i].iObserver->AlrEvent( - MSipAlrObserver::EOfferedIapRejected, iSnapId, KNoIap ); + MSipAlrObserver::EOfferedIapRejected, SnapId(), KNoIap ); } } else @@ -188,7 +195,7 @@ TAccessPointInfo aNewAP, TBool /*aIsSeamless*/ ) { - PROFILE_DEBUG3( "CSipSnapAlrMonitor::NewCarrierActive", iSnapId ) + PROFILE_DEBUG3( "CSipSnapAlrMonitor::NewCarrierActive", SnapId() ) NotifyInitializedObservers( aNewAP.AccessPoint(), MSipAlrObserver::EIapActive ); @@ -206,7 +213,7 @@ PROFILE_DEBUG1( "CSipSnapAlrMonitor::Error iCommsMobilityAO==NULL") return; } - if ( aError == KErrNotFound) + if ( aError == KErrNotFound && !BearerId()) { NotifyInitializedObservers( KNoIap, MSipAlrObserver::ENoNewIapAvailable ); @@ -217,8 +224,12 @@ if ( !iDying ) { ResetState(); + if(!BearerId()) + { + PROFILE_DEBUG3( "CSipSnapAlrMonitor::Error, Start Snap as Bearer Id is ", BearerId() ) StartSnap(); } + } } // ----------------------------------------------------------------------------- @@ -235,7 +246,7 @@ if ( !IsActive() && aVariable == CSipSystemStateMonitor::ESnapAvailability && - aObjectId == iSnapId ) + aObjectId == SnapId() ) { if ( aValue == CSipSystemStateMonitor::ESnapAvailable ) { @@ -257,7 +268,7 @@ // TUint32 CSipAlrSnapMonitor::SnapId() const { - return iSnapId; + return iSnapData.iSnapId; } // ----------------------------------------------------------------------------- @@ -324,7 +335,7 @@ for ( TInt i = iObservers.Count() - 1; i >= 0; --i ) { iObservers[i].iObserver->AlrEvent( - MSipAlrObserver::ERefreshError, iSnapId, KNoIap ); + MSipAlrObserver::ERefreshError, SnapId(), KNoIap ); } } } @@ -402,7 +413,6 @@ TInt CSipAlrSnapMonitor::StartSnap() { PROFILE_DEBUG1( "CSipAlrSnapMonitor::StartSnap entered" ) - TInt err = KErrNone; if ( !IsActive() && IsSnapAvailable() ) { @@ -413,14 +423,40 @@ if ( err == KErrNone ) { - iConnection.Start( iPrefs, iStatus ); - SetActive(); + if(BearerId()) + { + if(BearerId()== 1) + { + iExtPrefs.SetBearerSet(TExtendedConnPref::EExtendedConnBearerWLAN); + } + else if(BearerId() == 2) + { + iExtPrefs.SetBearerSet(TExtendedConnPref::EExtendedConnBearerCellular); + } + PROFILE_DEBUG1( "CSipAlrSnapMonitor::Starting Bearer Filtered connection" ) + iExtPrefs.SetSnapId( SnapId()); + + TRAPD(error, iPrefList.AppendL(&iExtPrefs)); + if(error) + { + return error; + } + // Start connecting + iConnection.Start( iPrefList, iStatus ); + SetActive(); + } + else + { + PROFILE_DEBUG1( "CSipAlrSnapMonitor::Starting Normal Connection" ) + iConnection.Start( iPrefs, iStatus ); + SetActive(); + } } } PROFILE_DEBUG3( "CSipAlrSnapMonitor::StartSnap returns", err ) return err; - } + } // ----------------------------------------------------------------------------- // CSipAlrSnapMonitor::CreateMobilityAoL @@ -476,7 +512,7 @@ void CSipAlrSnapMonitor::NotifyObservers( TUint aIapId ) { PROFILE_DEBUG4( "CSipSnapAlrMonitor::NotifyObservers SNAP, IAP", - iSnapId, aIapId ) + SnapId(), aIapId ) NotifyInitializedObservers( aIapId, MSipAlrObserver::EIapAvailable ); NotifyNewObservers( aIapId ); @@ -495,9 +531,9 @@ if ( iObservers[i].iInitialEventDone ) { PROFILE_DEBUG3( "CSipAlrSnapMonitor::NotifyIntitializedObservers", - iSnapId ) + SnapId() ) - iObservers[i].iObserver->AlrEvent( aEvent, iSnapId, aIapId ); + iObservers[i].iObserver->AlrEvent( aEvent, SnapId(), aIapId ); } } } @@ -512,10 +548,10 @@ { if ( !iObservers[i].iInitialEventDone ) { - PROFILE_DEBUG3( "CSipAlrSnapMonitor::NotifyNewObservers", iSnapId ) + PROFILE_DEBUG3( "CSipAlrSnapMonitor::NotifyNewObservers", SnapId() ) iObservers[i].iObserver->AlrEvent( - MSipAlrObserver::EIapAvailable, iSnapId, aIapId ); + MSipAlrObserver::EIapAvailable, SnapId(), aIapId ); iObservers[i].iInitialEventDone = ETrue; } @@ -529,6 +565,15 @@ TBool CSipAlrSnapMonitor::IsSnapAvailable() const { return ( iSystemStateMonitor.CurrentValue( - CSipSystemStateMonitor::ESnapAvailability, iSnapId ) == + CSipSystemStateMonitor::ESnapAvailability, SnapId() ) == CSipSystemStateMonitor::ESnapAvailable ); } + +// ----------------------------------------------------------------------------- +// CSipAlrSnapMonitor::BearerId +// ----------------------------------------------------------------------------- +// +TBool CSipAlrSnapMonitor::BearerId() + { + return iSnapData.iBearerId; + } diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/ProfileAgent/Client/Api/sipprofile.h --- a/realtimenetprots/sipfw/ProfileAgent/Client/Api/sipprofile.h Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Client/Api/sipprofile.h Thu Aug 19 10:16:25 2010 +0300 @@ -195,6 +195,15 @@ */ const TUint32 KSecondaryAPN = 21; +/** +* BearerType is of type TUint32. +* Possible Values and its purpose. +* 0 --> Not Specified. +* 1 --> WLAN Bearer Only. +* 2 --> Cellular Data Bearer Only. +**/ +const TUint32 KBearerType = 22; + // CLASS DECLARATION /** diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/ProfileAgent/Client/Src/sipmanagedprofile.cpp --- a/realtimenetprots/sipfw/ProfileAgent/Client/Src/sipmanagedprofile.cpp Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Client/Src/sipmanagedprofile.cpp Thu Aug 19 10:16:25 2010 +0300 @@ -185,6 +185,7 @@ case KSIPDigestPassword: case KSIPHeaders: case KSIPSoIpTOS: + case KBearerType: User::Leave(KErrNotFound); case KSIPContactHeaderUser: User::Leave(KErrAccessDenied); @@ -276,6 +277,7 @@ case KSIPSnapId: case KPrimaryAPN: case KSecondaryAPN: + case KBearerType: User::Leave(KErrNotFound); default: iSIPProfile->SetExtensionParameterL(aParam, aVal); diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/ProfileAgent/Group/sipprofileserver.mmp --- a/realtimenetprots/sipfw/ProfileAgent/Group/sipprofileserver.mmp Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Group/sipprofileserver.mmp Thu Aug 19 10:16:25 2010 +0300 @@ -94,6 +94,8 @@ LIBRARY commsdat.lib LIBRARY featmgr.lib LIBRARY commdb.lib +LIBRARY extendedconnpref.lib +LIBRARY netmeta.lib VENDORID 0x70000001 diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/ProfileAgent/IETF_Agent/src/Sipietfprofilecontext.cpp --- a/realtimenetprots/sipfw/ProfileAgent/IETF_Agent/src/Sipietfprofilecontext.cpp Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/IETF_Agent/src/Sipietfprofilecontext.cpp Thu Aug 19 10:16:25 2010 +0300 @@ -442,12 +442,12 @@ CurrentState() == MSIPProfileContext::ERegistered) && (aError == K408TimeOut || aError == K500ServerInternalError || - aError == KErrSIPOutboundProxyNotResponding || + aError == KErrTimedOut || + (( aError == KErrSIPOutboundProxyNotResponding || aError == KErrSIPResolvingFailure || - aError == KErrTimedOut || aError == KErrSIPTransportFailure || - aError == KErrSIPICMPFailure && - iConnection.State() != CSIPConnection::ESuspended)) + aError == KErrSIPICMPFailure ) && + iConnection.State() != CSIPConnection::ESuspended))) { if ( iRetryCounterSum + 1 < KMaxRetryForOneAddress && iRetryCounter < KMaxRetryForOneAddress ) diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/ProfileAgent/IMS_Agent/Src/Sipimsprofilecontext.cpp --- a/realtimenetprots/sipfw/ProfileAgent/IMS_Agent/Src/Sipimsprofilecontext.cpp Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/IMS_Agent/Src/Sipimsprofilecontext.cpp Thu Aug 19 10:16:25 2010 +0300 @@ -749,11 +749,11 @@ aError == K500ServerInternalError || aError == K504ServerTimeOut || aError == KErrTimedOut || - aError == KErrSIPOutboundProxyNotResponding || + ((aError == KErrSIPOutboundProxyNotResponding || aError == KErrSIPResolvingFailure || aError == KErrSIPTransportFailure || - aError == KErrSIPICMPFailure && - iConnection.State() != CSIPConnection::ESuspended) + aError == KErrSIPICMPFailure )&& + iConnection.State() != CSIPConnection::ESuspended)) { SetRetryPossible(ETrue); iRetriedRegister = ETrue; diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/ProfileAgent/Profile/Src/sipconcreteprofile.cpp --- a/realtimenetprots/sipfw/ProfileAgent/Profile/Src/sipconcreteprofile.cpp Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Profile/Src/sipconcreteprofile.cpp Thu Aug 19 10:16:25 2010 +0300 @@ -14,7 +14,7 @@ // Name : sipconcreteprofile.cpp // Part of : SIP / SIP Profile Agent / SIP Concrete Profile // Implementation -// Version : %version: 3.1.2 % +// Version : %version: 3.1.2.1.2 % // @@ -2256,5 +2256,12 @@ PROFILE_DEBUG3("Exceptional SNAP Entry verifier :", KDefaultSNAPIdentifier) SetExtensionParameterL(KSIPSnapId,KDefaultSNAPIdentifier); } + +if ( ExtensionParameter(KBearerType,iVal) == KErrNotFound) + { +PROFILE_DEBUG3("CSIPConcreteProfile::ValidateProfileParamsL.. Setting bearer Id to 0", 0) + TUint32 defaultId=0; + SetExtensionParameterL(KBearerType,defaultId); + } return res; } diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/ProfileAgent/Server/Inc/SipProfileCacheItem.h --- a/realtimenetprots/sipfw/ProfileAgent/Server/Inc/SipProfileCacheItem.h Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Server/Inc/SipProfileCacheItem.h Thu Aug 19 10:16:25 2010 +0300 @@ -567,7 +567,10 @@ */ void HandleProfileError(TInt aError, CSIPConcreteProfile& aProfile); - +/** + * Function returns the Bearer ID for the Profile. + */ + TUint32 BearerID(); private: /** diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/ProfileAgent/Server/Inc/SipProfileServerCore.h --- a/realtimenetprots/sipfw/ProfileAgent/Server/Inc/SipProfileServerCore.h Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Server/Inc/SipProfileServerCore.h Thu Aug 19 10:16:25 2010 +0300 @@ -36,6 +36,7 @@ #include "sipprofileerrorhandler.h" #include #include "sipapnmanager.h" +#include "sipalrobserver.h" #include // FORWARD DECLARATIONS @@ -466,10 +467,10 @@ /** * Gets the migration controller of the given SNAP id. If a controller * does not exists, creates a new one. - * @param aSnapId SNAP id + * @param aSnapData * @return Migration controller, ownership is not transferred. */ - CSipAlrMigrationController& MigrationControllerL(TUint32 aSnapId); + CSipAlrMigrationController& MigrationControllerL(TSipSNAPConfigurationData aSnapData); CSIPProfileState& UnregisteredState(); diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileCacheItem.cpp --- a/realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileCacheItem.cpp Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileCacheItem.cpp Thu Aug 19 10:16:25 2010 +0300 @@ -969,9 +969,12 @@ StopSnapMonitoring(); } - if (!iMigrationController) + if (!iMigrationController) { - iMigrationController = &iServerCore.MigrationControllerL(aSnapId); + TUint32 bearerId = BearerID(); + TSipSNAPConfigurationData aSnapData(aSnapId,bearerId); + iMigrationController = &iServerCore.MigrationControllerL(aSnapData); + PROFILE_DEBUG3("ProfileCacheItem::BearerFilter value is", bearerId) TUint32 iapId = iMigrationController->AttachProfileL(*this); if (iapId) { @@ -1403,3 +1406,13 @@ return iIsOfflineInitiated; } +// ----------------------------------------------------------------------------- +// CSIPProfileCacheItem::BearerID +// This function will return the Bearer ID of the Profile. +// ----------------------------------------------------------------------------- +// +TUint32 CSIPProfileCacheItem::BearerID() +{ TUint32 bearerId(0); + LatestProfile().ExtensionParameter(KBearerType , bearerId); + return bearerId; +} diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileServerCore.cpp --- a/realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileServerCore.cpp Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileServerCore.cpp Thu Aug 19 10:16:25 2010 +0300 @@ -507,27 +507,7 @@ { ConfirmSystemstateMonitor(CSipSystemStateMonitor::ESystemState); } - } //end if Offline - - //If the System receives Online event - if(aValue == CSipSystemStateMonitor::ESystemOnline) - { - for (TInt i = 0; i < iProfileCache.Count(); i++) - { - CSIPProfileCacheItem* item = iProfileCache[i]; - item->OfflineInitiated(EFalse); - CSIPConcreteProfile::TStatus status; - iPluginDirector->State(status, item->UsedProfile()); - if (item->IsReferred() && status == CSIPConcreteProfile::EUnregistered) - { - TRAPD(err, item->StartRegisterL(*iWaitForIAP, *iRegInProg, ETrue)); - if (err != KErrNone) - { - HandleAsyncError(*item,CSIPConcreteProfile::ERegistrationInProgress,err); - } - } - } - } //end if Online + } //end if Offline } //end if SystemState else if(aVariable == CSipSystemStateMonitor::ERfsState) { @@ -1906,20 +1886,22 @@ // ----------------------------------------------------------------------------- // CSipAlrMigrationController& -CSIPProfileServerCore::MigrationControllerL(TUint32 aSnapId) +CSIPProfileServerCore::MigrationControllerL(TSipSNAPConfigurationData aSnapData) { - RemoveUnusedMigrationControllers(aSnapId); + RemoveUnusedMigrationControllers(aSnapData.iSnapId); for (TInt i = 0; i < iMigrationControllers.Count(); ++i) { - if (iMigrationControllers[i]->SnapId() == aSnapId) + // Migration controller is unique based on the SNAP ID and Bearer ID. + if (iMigrationControllers[i]->SnapId() == aSnapData.iSnapId + && iMigrationControllers[i]->BearerId() == aSnapData.iBearerId) { return *iMigrationControllers[i]; } } CSipAlrMigrationController* ctrl = - CSipAlrMigrationController::NewLC(iAlrHandler->AlrMonitorL(), aSnapId); + CSipAlrMigrationController::NewLC(iAlrHandler->AlrMonitorL(),aSnapData); iMigrationControllers.AppendL(ctrl); CleanupStack::Pop(ctrl); return *ctrl; @@ -2210,8 +2192,7 @@ CSIPConcreteProfile::TStatus status; self->iPluginDirector->State( status, self->iProfileCache[i]->UsedProfile() ); item->OfflineInitiated(EFalse); - if (item->IsReferred() && (!self->iApnManager->IsIapGPRSL(item->Profile().IapId())) - && status == CSIPConcreteProfile::EUnregistered) + if (item->IsReferred() && (status == CSIPConcreteProfile::EUnregistered) ) { TRAPD(err, item->StartRegisterL(*(self->iWaitForIAP), *(self->iRegInProg), ETrue)); if (err != KErrNone) diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/ProfileAgent/Server/Src/sipalrhandler.cpp --- a/realtimenetprots/sipfw/ProfileAgent/Server/Src/sipalrhandler.cpp Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Server/Src/sipalrhandler.cpp Thu Aug 19 10:16:25 2010 +0300 @@ -134,8 +134,8 @@ TUint32 snapId(0); __ASSERT_ALWAYS(aProfile.IsSNAPConfigured(snapId), User::Leave(KErrArgument)); - - AlrMonitorL().RefreshIapAvailabilityL(snapId); + TSipSNAPConfigurationData aSnapData(snapId ,aProfile.BearerID()); + AlrMonitorL().RefreshIapAvailabilityL(aSnapData); } // ----------------------------------------------------------------------------- diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/ProfileAgent/Server/Src/sipalrmigrationcontroller.cpp --- a/realtimenetprots/sipfw/ProfileAgent/Server/Src/sipalrmigrationcontroller.cpp Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Server/Src/sipalrmigrationcontroller.cpp Thu Aug 19 10:16:25 2010 +0300 @@ -30,10 +30,10 @@ // ----------------------------------------------------------------------------- // CSipAlrMigrationController* -CSipAlrMigrationController::NewLC(CSipAlrMonitor& aAlrMonitor, TUint32 aSnapId) +CSipAlrMigrationController::NewLC(CSipAlrMonitor& aAlrMonitor, TSipSNAPConfigurationData aSnapData) { CSipAlrMigrationController* self = - new (ELeave) CSipAlrMigrationController(aAlrMonitor, aSnapId); + new (ELeave) CSipAlrMigrationController(aAlrMonitor, aSnapData); CleanupStack::PushL(self); return self; } @@ -44,9 +44,9 @@ // CSipAlrMigrationController::CSipAlrMigrationController( CSipAlrMonitor& aAlrMonitor, - TUint32 aSnapId) : + TSipSNAPConfigurationData aSnapData) : iAlrMonitor(aAlrMonitor), - iSnapId(aSnapId) + iSnapData(aSnapData) #ifdef CPPUNIT_TEST // Set the array granularity to 1, so it allocates memory in each append , iObservers(1) @@ -125,9 +125,14 @@ // TUint32 CSipAlrMigrationController::SnapId() const { - return iSnapId; + return iSnapData.iSnapId; } +TUint32 CSipAlrMigrationController::BearerId() const + { + return iSnapData.iBearerId; + } + // ----------------------------------------------------------------------------- // CSipAlrMigrationController::IsUsed // ----------------------------------------------------------------------------- @@ -148,12 +153,13 @@ { TSipAlrMigrationObserverInfo observerInfo(aObserver); iObservers.AppendL(observerInfo); - + const TInt KFirstObserverExists = 1; if (iObservers.Count() == KFirstObserverExists) { - PROFILE_DEBUG3("CSipAlrMigrCtrl::AttachProfileL snapId", iSnapId) - iAlrMonitor.MonitorSnapL(iSnapId, *this); + PROFILE_DEBUG3("CSipAlrMigrCtrl::AttachProfileL snapId", SnapId()) + PROFILE_DEBUG3("CSipAlrMigrCtrl::AttachProfileL BearerFiltered.. ", BearerId()) + iAlrMonitor.MonitorSnapL(iSnapData, *this); return KNoIap; } @@ -251,11 +257,11 @@ TInt err(KErrNone); if (iMigrationDisallowed) { - err = iAlrMonitor.DisallowMigration(iSnapId); + err = iAlrMonitor.DisallowMigration(iSnapData); } else { - err = iAlrMonitor.AllowMigration(iSnapId); + err = iAlrMonitor.AllowMigration(iSnapData); } if (err != KErrNone) { @@ -274,9 +280,10 @@ // void CSipAlrMigrationController::RefreshIapAvailabilityL(TUint32 aSnapId) { - if (!iRefreshIssued && aSnapId == iSnapId) + if (!iRefreshIssued && aSnapId == SnapId()) { - iAlrMonitor.RefreshIapAvailabilityL(aSnapId); + + iAlrMonitor.RefreshIapAvailabilityL(iSnapData); iRefreshIssued = ETrue; } } @@ -293,7 +300,7 @@ PROFILE_DEBUG4("CSipAlrMigrCtrl::SetIapAcceptance, iap,works=", iAllowedIapId, aIapWorks) - + TInt index = FindIndex(aObserver); if (index != KErrNotFound && iObservers[index].iIsWaitingForAcceptance) { @@ -306,14 +313,14 @@ iObservers[i].iIsWaitingForAcceptance = EFalse; } PROFILE_DEBUG1("CSipAlrMigrCtrl::SetIapAcceptance accepted") - return iAlrMonitor.NewIapAccepted(iSnapId); + return iAlrMonitor.NewIapAccepted(iSnapData); } if (!ObserversWaitingAcceptance()) { // Nobody got IAP to work PROFILE_DEBUG1("CSipAlrMigrCtrl::SetIapAcceptance rejected") - return iAlrMonitor.NewIapRejected(iSnapId); + return iAlrMonitor.NewIapRejected(iSnapData); } } return KErrNone; diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/ProfileAgent/Server/Src/sipalrmigrationcontroller.h --- a/realtimenetprots/sipfw/ProfileAgent/Server/Src/sipalrmigrationcontroller.h Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Server/Src/sipalrmigrationcontroller.h Thu Aug 19 10:16:25 2010 +0300 @@ -58,7 +58,7 @@ public: static CSipAlrMigrationController* NewLC(CSipAlrMonitor& aAlrMonitor, - TUint32 aSnapId); + TSipSNAPConfigurationData aSnapData); ~CSipAlrMigrationController(); @@ -71,6 +71,8 @@ public: // New functions TUint32 SnapId() const; + + TUint32 BearerId() const; /** * Check if any profile is using this instance. @@ -116,11 +118,13 @@ TBool aIapWorks); void ResetFlags(); + + private: // Constructors CSipAlrMigrationController(CSipAlrMonitor& aAlrMonitor, - TUint32 aSnapId); + TSipSNAPConfigurationData aSnapData); private: // New functions @@ -143,9 +147,6 @@ RArray iObservers; - // SNAP id that is monitored. Does not change. - const TUint32 iSnapId; - // The IAP id, that was most recently offered to observers with // MSipAlrMigrationObserver::IapAvailableL. TUint32 iOfferedIapId; @@ -163,6 +164,9 @@ // Will be set to EFalse, when ALR monitor notifies about IAP, using // MSipAlrObserver::IapAvailable. TBool iRefreshIssued; + + // This contains the SNAP ID and the Bearer ID configured for the SNAP. + TSipSNAPConfigurationData iSnapData; private: // For testing purposes #ifdef CPPUNIT_TEST diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/SIP/Codec/src/CSIPAcceptEncodingHeader.cpp --- a/realtimenetprots/sipfw/SIP/Codec/src/CSIPAcceptEncodingHeader.cpp Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/SIP/Codec/src/CSIPAcceptEncodingHeader.cpp Thu Aug 19 10:16:25 2010 +0300 @@ -164,7 +164,7 @@ tmp->Des().Trim(); //Allowing '/' token for interoperability issues RArray array; - if(CFeatureDiscovery::IsFeatureSupportedL(TUid::Uid(KFeatureIdFfSipApnSwitching))) + if(CFeatureDiscovery::IsFeatureSupportedL(TUid::Uid(KFeatureIdFfSipNonstandardInteropfix))) { array.Append('/'); } diff -r 654ed625511d -r f54bfd820e04 realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTransport.cpp --- a/realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTransport.cpp Thu Jul 15 19:02:22 2010 +0300 +++ b/realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTransport.cpp Thu Aug 19 10:16:25 2010 +0300 @@ -1489,7 +1489,15 @@ { uri.SIPURI()->SetSIPS( EFalse ); } - } //end if (aMessage->IsRequest) + //set the port information as per sip scheme and if there is no + //port information set in the contact header.= + if(uri.SIPURI()->IsSIPSURI() && (0 == uri.SIPURI()->HostPort().Port())) + uri.SIPURI()->HostPort().SetPort(KDefaultSipsPort); + else if ((EFalse == uri.SIPURI()->IsSIPSURI()) && (0 == uri.SIPURI()->HostPort().Port())) + uri.SIPURI()->HostPort().SetPort(KDefaultSipPort); + else + {} + } //end if (aMessage->IsRequest) } //end if (uri.IsSIPURI()) } //end if(sipaddr) } //end while diff -r 654ed625511d -r f54bfd820e04 sipplugins/sippdevmgmtsipadapter/inc/smldmsipadapterconstants.h --- a/sipplugins/sippdevmgmtsipadapter/inc/smldmsipadapterconstants.h Thu Jul 15 19:02:22 2010 +0300 +++ b/sipplugins/sippdevmgmtsipadapter/inc/smldmsipadapterconstants.h Thu Aug 19 10:16:25 2010 +0300 @@ -77,6 +77,8 @@ "DestinationNetwork" ); _LIT8( KNSmlDMSIPSigQos, "SignalingQoS" ); +_LIT8( KNSmlDMSIPBearerID, + "BearerID" ); // Explanations of parameters _LIT8( KNSmlDMSIPNodeNameExp, @@ -127,6 +129,8 @@ "Reference to Destination Network" ); _LIT8( KNSmlDMSIPSigQosExp, "Signaling QoS" ); +_LIT8( KNSmlDMSIPBearerIDExp, + "Bearer ID" ); // For SIP URI. // References: OMA DM MO for Nokia SIP and IETF RFC3261. diff -r 654ed625511d -r f54bfd820e04 sipplugins/sippdevmgmtsipadapter/src/nsmldmsipadapter.cpp --- a/sipplugins/sippdevmgmtsipadapter/src/nsmldmsipadapter.cpp Thu Jul 15 19:02:22 2010 +0300 +++ b/sipplugins/sippdevmgmtsipadapter/src/nsmldmsipadapter.cpp Thu Aug 19 10:16:25 2010 +0300 @@ -499,6 +499,16 @@ sigQos.SetDFFormatL( MSmlDmDDFObject::EInt ); sigQos.AddDFTypeMimeTypeL( KNSmlDMSIPTextPlain ); sigQos.SetDescriptionL( KNSmlDMSIPSigQosExp ); + + //Bearer ID + MSmlDmDDFObject& bearerid = idNode.AddChildObjectL( KNSmlDMSIPBearerID ); + bearerid.SetAccessTypesL( accessTypesGetReplaceAdd ); + bearerid.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne ); + bearerid.SetScopeL( MSmlDmDDFObject::EDynamic ); + bearerid.SetDFFormatL( MSmlDmDDFObject::EInt ); + bearerid.AddDFTypeMimeTypeL( KNSmlDMSIPTextPlain ); + bearerid.SetDescriptionL( KNSmlDMSIPBearerIDExp ); + DBG_PRINT("CNSmlDmSIPAdapter::DDFStructureL(): end"); } @@ -856,6 +866,22 @@ } } + // SIP/x/BearerId + if ( KNSmlDMSIPBearerID() == lastUriSeg ) + { + TUint32 bearerid = DesToInt( aObject ); + if ( bearerid ) + { + err = iProfiles->At( profileID )->SetParameter( + KBearerType, bearerid ); + } + else + { + status = CSmlDmAdapter::EInvalidObject; + } + } + + // ============================== // OutboundProxy settings node // ============================== @@ -1260,6 +1286,16 @@ sigQos >>= 2; segmentResult.Num( sigQos ); } + + // SIP/x/BearerId + if ( KNSmlDMSIPBearerID() == lastUriSeg ) + { + TUint32 bearerid; + err = iProfiles->At( profileID )->GetParameter( + KBearerType, bearerid ); + segmentResult.Num( bearerid ); + } + // Set error if fetch failed. if ( -1 > err ) @@ -1520,6 +1556,12 @@ segmentName ); currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDMSIPSeparator8 ); + + segmentName.Copy( KNSmlDMSIPBearerID ); + currentURISegmentList->InsertL( currentURISegmentList->Size(), + segmentName ); + currentURISegmentList->InsertL( currentURISegmentList->Size(), + KNSmlDMSIPSeparator8 ); } // SIP/x/OutboundProxy @@ -1821,7 +1863,11 @@ } } } - return aURI.Left( i ); + + if(i < 0) + return aURI.Left(i+1); + else + return aURI.Left( i ); } // --------------------------------------------------------------------------- diff -r 654ed625511d -r f54bfd820e04 sipplugins/sippsipadapter/inc/CWPSIPItem.h --- a/sipplugins/sippsipadapter/inc/CWPSIPItem.h Thu Jul 15 19:02:22 2010 +0300 +++ b/sipplugins/sippsipadapter/inc/CWPSIPItem.h Thu Aug 19 10:16:25 2010 +0300 @@ -488,6 +488,9 @@ * @param aSigQos Signalling QoS value. */ void SetSigQos( TUint32 aSigQos ); + + void SetBearerID(TUint32 aBearerId); + TUint32 GetBearerID(); private: @@ -686,6 +689,8 @@ * Signalling QoS value. */ TUint32 iSigQos; + + TUint32 iBearerId; private: //friend class UT_CWPSIPItem; // For testing purposes. diff -r 654ed625511d -r f54bfd820e04 sipplugins/sippsipadapter/src/CWPSIPAdapter.cpp --- a/sipplugins/sippsipadapter/src/CWPSIPAdapter.cpp Thu Jul 15 19:02:22 2010 +0300 +++ b/sipplugins/sippsipadapter/src/CWPSIPAdapter.cpp Thu Aug 19 10:16:25 2010 +0300 @@ -52,6 +52,7 @@ _LIT( KParmLOCK, "LOCK" ); _LIT( KParmAUTOREG, "AUTOREG" ); _LIT( KParmSIGQOS, "SIGQOS" ); +_LIT( KParmBearerID, "PBEARERID" ); // For other purposes. const TUint32 KNotSet = 0xffffffff; @@ -501,6 +502,14 @@ iCurrentSIPItem->SetSigQos( parmVal ); } } + + else if(aParameter.Name() == KParmBearerID ) + { + TInt bearerid; + TLex8 lex( tmpValue->Des() ); + User::LeaveIfError( lex.Val( bearerid ) ); + iCurrentSIPItem->SetBearerID((TUint32) bearerid ); + } break; } case EWPParameterAppRef: diff -r 654ed625511d -r f54bfd820e04 sipplugins/sippsipadapter/src/CWPSIPItem.cpp --- a/sipplugins/sippsipadapter/src/CWPSIPItem.cpp Thu Jul 15 19:02:22 2010 +0300 +++ b/sipplugins/sippsipadapter/src/CWPSIPItem.cpp Thu Aug 19 10:16:25 2010 +0300 @@ -146,6 +146,7 @@ iToAppRef = HBufC8::NewL( 0 ); iNetwork = HBufC::NewL( 0 ); iSnapId = KErrNotFound; + iBearerId = 0; SetSigQos( 40 ); DBG_PRINT( "CWPSIPItem::ConstructL - end" ); } @@ -1007,7 +1008,9 @@ // Signalling QoS parameter. cSIPManagedProfile->SetParameter( KSIPSoIpTOS, iSigQos ); - + + cSIPManagedProfile->SetParameter( KBearerType, iBearerId ); + // Stores SIP profile to permanent storage cSIPManagedProfileRegistry->SaveL( *cSIPManagedProfile ); @@ -1259,4 +1262,14 @@ iSigQos = tosBits; } + +void CWPSIPItem::SetBearerID(TUint32 aBearerId) +{ +iBearerId = aBearerId; +} + +TUint32 CWPSIPItem:: GetBearerID() +{ +return iBearerId; +} // End of file.