--- a/callcontinuity/vccutils/src/vccspsettings.cpp Thu Aug 19 09:45:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1083 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: SP Settings handler for Vcc settings, handles caching and
- storing data related to Vcc settings.
-*
-*/
-
-
-
-#include <charconv.h>
-#include <in_sock.h>
-#include <spsettings.h>
-#include <spentry.h>
-#include <spproperty.h>
-#include <badesca.h>
-#include <e32cmn.h>
-
-#include "vccspsettings.h"
-#include "vccmiscutils.h"
-#include "rubydebug.h"
-
-/** VCC call provider plugin uid */
-const TInt32 KVccCallProviderPlugId = 0x2000CFAA;
-
-/** Zero ID */
-const TUint KVccZeroId = 0;
-
-/** Service Id string length */
-const TInt KVccServiceIdLength = 8;
-
-/** Names array size */
-const TInt KVccNameArraySize = 10;
-
-// ======== MEMBER FUNCTIONS ========
-// ---------------------------------------------------------------------------
-// C++ constructor
-// ---------------------------------------------------------------------------
-//
-CVccSPSettings::CVccSPSettings()
- {
- }
-
-// ---------------------------------------------------------------------------
-// Symbian 2nd phase Constructor
-// ---------------------------------------------------------------------------
-//
-void CVccSPSettings::ConstructL()
- {
- RUBY_DEBUG_BLOCKL( "CVccSPSettings::ConstructL" );
- iSettings = CSPSettings::NewL();
- }
-
-// ---------------------------------------------------------------------------
-// Constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CVccSPSettings* CVccSPSettings::NewL()
- {
- RUBY_DEBUG_BLOCKL( "CVccSPSettings::NewL" );
-
- CVccSPSettings* self = new ( ELeave ) CVccSPSettings();
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CVccSPSettings::~CVccSPSettings()
- {
- RUBY_DEBUG0( "CVccSPSettings::~CVccSPSettings START" );
-
- delete iProviderId;
- delete iServiceName;
- delete iVdi;
- delete iVdn;
- delete iPreferredDomain;
- delete iImmediateDt;
- delete iDtCsToPsAllowed;
- delete iDtPsToCsAllowed;
- delete iDtHeldWaitingCallsAllowed;
- delete iDtWlanHoTreshold;
- delete iDtWlanHoHysteresis;
- delete iDtWlanHoHysteresisTimerLow;
- delete iDtWlanHoHysteresisTimerHigh;
- delete iDtCsHoTreshold;
- delete iDtCsHoHysteresis;
- delete iDtCsHoHysteresisTimerLow;
- delete iDtCsHoHysteresisTimerHigh;
- delete iVoipServiceIdString;
- delete iDtAllowedWhenCsOriginated;
-
- delete iSettings;
- RUBY_DEBUG0( "CVccSPSettings::~CVccSPSettings EXIT" );
- }
-
-// ---------------------------------------------------------------------------
-// Stores cached Vcc settings.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::StoreL()
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::StoreL" );
- RUBY_DEBUG1( "CVccSPSettings::StoreL instance %x", this );
-
- CSPEntry* entry = CSPEntry::NewLC();
-
- RUBY_DEBUG1( "-service name:[%S]",iServiceName );
-
- TInt error( KErrNone );
- RIdArray serviceids;
- CleanupClosePushL( serviceids );
- iSettings->FindServiceIdsL( serviceids );
-
- TBool foundEntry( EFalse );
-
- //look for VCC service
- for ( TInt i( 0 ); i < serviceids.Count() && !foundEntry; i++ )
- {
- CSPProperty* property = CSPProperty::NewLC();
- error = iSettings->FindPropertyL( serviceids[i], ESubPropertyVccVDI, *property );
-
- if( error == KErrNone )
- {
- RUBY_DEBUG0( "-service found" );
- iSettings->FindEntryL( serviceids[i], *entry );
- foundEntry = ETrue;
- }
- CleanupStack::PopAndDestroy( property );
- }
-
- if ( !foundEntry ) //if service not found then add new
- {
- //add entry fails if name is not set
- RUBY_DEBUG0( "add new service" );
- entry->SetServiceName( *iServiceName );
- User::LeaveIfError( iSettings->AddEntryL( *entry ));
- }
- CleanupStack::PopAndDestroy( &serviceids );
- iServiceId = entry->GetServiceId();
-
- ModifyVoipProfileL();
-
- TInt err = 0;
- /*
-
- CSPProperty* voipProperty = CSPProperty::NewLC();
- TInt err = iSettings->FindPropertyL( iVoipServiceId,
- EPropertyCallProviderPluginId,
- *voipProperty );
-
- if( err == KErrNone)
- {
- voipProperty->SetValue( KVccCallProviderPlugId );
- User::LeaveIfError( iSettings->AddOrUpdatePropertyL( iVoipServiceId,
- *voipProperty ) );
- }
- CleanupStack::PopAndDestroy( voipProperty );
-
- voipProperty = CSPProperty::NewLC();
- err = iSettings->FindPropertyL( iVoipServiceId,
- EPropertyServiceAttributeMask,
- *voipProperty );
-
-
- //Set bootstrap bit on, so that CCE cant unload VCC
- //Should be figured out how do it so that inactive VoIP service
- //is still unloaded, but VCC is not.
- if( err == KErrNone)
- {
- TInt mask;
- voipProperty->GetValue( mask );
-
- mask = mask | EBootstrapCallProvider;
-
- voipProperty->SetValue( mask );
- User::LeaveIfError( iSettings->AddOrUpdatePropertyL( iVoipServiceId,
- *voipProperty ) );
- }
- CleanupStack::PopAndDestroy( voipProperty );
- */
-
-
- //check existing properties from entry
- if( iVdi != NULL )
- AddOrUpdatePropertyL( *entry, ESubPropertyVccVDI, *iVdi );
-
- if( iVdn != NULL )
- AddOrUpdatePropertyL( *entry, ESubPropertyVccVDN, *iVdn );
-
- if( iPreferredDomain != NULL )
- AddOrUpdatePropertyL( *entry, ESubPropertyVccPreferredDomain,
- *iPreferredDomain );
-
- if( iImmediateDt != NULL )
- AddOrUpdatePropertyL( *entry, ESubPropertyVccImmediateDomainTransfer,
- *iImmediateDt );
-
- if( iDtCsToPsAllowed != NULL )
- AddOrUpdatePropertyL( *entry, ESubPropertyVccDtCstoPsAllowed,
- *iDtCsToPsAllowed );
-
- if( iDtPsToCsAllowed != NULL )
- AddOrUpdatePropertyL( *entry, ESubPropertyVccDtPstoCsAllowed,
- *iDtPsToCsAllowed );
-
- if( iDtHeldWaitingCallsAllowed != NULL )
- AddOrUpdatePropertyL( *entry, ESubPropertyVccDtHeldWaitingCallsAllowed,
- *iDtHeldWaitingCallsAllowed );
-
- if( iDtWlanHoTreshold != NULL )
- AddOrUpdatePropertyL( *entry, ESubPropertyVccDtWLANHoTriggerLevel,
- *iDtWlanHoTreshold );
-
- if( iDtWlanHoHysteresis != NULL )
- AddOrUpdatePropertyL( *entry, ESubPropertyVccDtWLANHoHysteresis,
- *iDtWlanHoHysteresis );
-
- if( iDtWlanHoHysteresisTimerLow != NULL )
- AddOrUpdatePropertyL( *entry, ESubPropertyVccDtWLANHoHysteresisTimerLow,
- *iDtWlanHoHysteresisTimerLow );
-
- if( iDtWlanHoHysteresisTimerHigh != NULL )
- AddOrUpdatePropertyL( *entry, ESubPropertyVccDtWLANHoHysteresisTimerHigh,
- *iDtWlanHoHysteresisTimerHigh );
-
- if( iDtCsHoTreshold != NULL )
- AddOrUpdatePropertyL( *entry, ESubPropertyVccDtCSHoTriggerLevel,
- *iDtCsHoTreshold );
-
- if( iDtCsHoHysteresis != NULL )
- AddOrUpdatePropertyL( *entry, ESubPropertyVccDtCSHoHysteresis,
- *iDtCsHoHysteresis );
-
- if( iDtCsHoHysteresisTimerLow != NULL )
- AddOrUpdatePropertyL( *entry, ESubPropertyVccDtCSHoHysteresisTimerLow,
- *iDtCsHoHysteresisTimerLow );
-
- if( iDtCsHoHysteresisTimerHigh != NULL )
- AddOrUpdatePropertyL( *entry, ESubPropertyVccDtCSHoHysteresisTimerHigh,
- *iDtCsHoHysteresisTimerHigh );
-
- if( iVoipServiceIdString != NULL )
- AddOrUpdatePropertyL( *entry, ESubPropertyVccDtVoipServiceId,
- *iVoipServiceIdString );
-
- if( iDtAllowedWhenCsOriginated != NULL )
- AddOrUpdatePropertyL( *entry, ESubPropertyVccDtAllowedWhenCsOriginated,
- *iDtAllowedWhenCsOriginated );
-
- RUBY_DEBUG1( "iVoipServiceId [%d]", iVoipServiceId );
-
- // Initialize HO notification tone value to 0 (off), if not found or invalid
- RBuf val;
- val.CreateL( KSPMaxDesLength );
- err = GetPropertyValue( *entry, ESubPropertyVccHoNotificationToneMode,
- val );
-
- if ( err || !( ConvertToIntL( val ) == 0 || ConvertToIntL( val ) == 1 ) )
- {
- // setting not found, or illegal value, set to default (0=off)TBuf<1>
- // zero = _L( "0" );
- HBufC* tmp;
- TBuf<1> zero(_L("0"));
- tmp = zero.AllocL();
- AddOrUpdatePropertyL( *entry, ESubPropertyVccHoNotificationToneMode,
- *tmp );
- delete tmp;
- }
- val.Close();
-
- //get propertyarray
- RPropertyArray newProperties = entry->GetAllProperties();
- TInt propCount( entry->PropertyCount() );
- RUBY_DEBUG1( "service properties count [%d]", propCount );
-
- //add/update propertyarray to settings
- User::LeaveIfError( iSettings->AddOrUpdatePropertiesL( iServiceId,
- newProperties ));
-
- CleanupStack::PopAndDestroy( entry );
- }
-
-// ---------------------------------------------------------------------------
-// Returns the name of stored settings
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CVccSPSettings::ProviderId()
- {
- if( iProviderId != NULL )
- {
- RUBY_DEBUG0( "- VCC provider id exists" );
- return *iProviderId;
- }
- else
- {
- RUBY_DEBUG0( "-no VCC provider id" );
- return KNullDesC;
- }
- }
-
-// ---------------------------------------------------------------------------
-// Sets name of settings
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::SetProviderIdL( const TDesC& aValue )
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::SetProviderIdL" );
-
- // Delete the setting if already allocated
- delete iProviderId;
- iProviderId = NULL;
- iProviderId = aValue.AllocL();
- }
-
-// ---------------------------------------------------------------------------
-// Sets name of settings
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::SetServiceNameL( const TDesC& aValue )
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::SetNameL" );
- delete iServiceName;
- iServiceName = NULL;
- iServiceName = aValue.AllocL();
- }
-
-// ---------------------------------------------------------------------------
-// Returns name of stored settings
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CVccSPSettings::ServiceName()
- {
- if( iServiceName != NULL )
- {
- RUBY_DEBUG0( "-VCC service name exists" );
- return *iServiceName;
- }
- else
- {
- RUBY_DEBUG0( "-no VCC service name" );
-
- return KNullDesC;
- }
- }
-// ---------------------------------------------------------------------------
-// Sets VDI
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CVccSPSettings::SetVdiL( const TDesC& aValue )
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::SetVdiL" );
-
- TInt err = TVCCMiscUtils::URIValidL( aValue );
- if ( !err )
- {
- if( iVdi )
- {
- delete iVdi;
- iVdi = NULL;
- }
- iVdi = aValue.AllocL();
- }
-
- return err;
- }
-
-// ---------------------------------------------------------------------------
-// Sets VDN
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CVccSPSettings::SetVdnL( const TDesC& aValue )
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::SetVdnL" );
-
- TBool ok = TVCCMiscUtils::VDNValidL( aValue );
-
- if ( ok )
- {
- if( iVdn )
- {
- delete iVdn;
- iVdi = NULL;
- }
-
- iVdn = aValue.AllocL();
- }
-
- return ok;
- }
-
-// ---------------------------------------------------------------------------
-// Sets Preferred Domain
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::SetPreferredDomainL( const TDesC& aValue )
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::SetPreferredDomainL" );
- if ( iPreferredDomain )
- {
- delete iPreferredDomain;
- iPreferredDomain = NULL;
- }
- iPreferredDomain = aValue.AllocL();
- }
-
-// ---------------------------------------------------------------------------
-// Sets Immediate Domain Transfer
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::SetImmediateDtL( const TDesC& aValue )
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::SetImmediateDtL" );
- if ( iImmediateDt )
- {
- delete iImmediateDt;
- iImmediateDt = NULL;
- }
-
- iImmediateDt = aValue.AllocL();
- }
-
-// ---------------------------------------------------------------------------
-// Sets Domain Transfer Cs To Ps Allowed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::SetDtCsToPsAllowedL( const TDesC& aValue )
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::SetDtCsToPsAllowedL" );
- if ( iDtCsToPsAllowed )
- {
- delete iDtCsToPsAllowed;
- iDtCsToPsAllowed = NULL;
- }
- iDtCsToPsAllowed = aValue.AllocL();
- }
-
-// ---------------------------------------------------------------------------
-// Sets Domain Transfer Ps To Cs Allowed
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::SetDtPsToCsAllowedL( const TDesC& aValue )
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::SetDtPsToCsAllowedL" );
- if ( iDtPsToCsAllowed )
- {
- delete iDtPsToCsAllowed;
- iDtPsToCsAllowed = NULL;
- }
- iDtPsToCsAllowed = aValue.AllocL();
- }
-
-// ---------------------------------------------------------------------------
-// Sets Domain Transfer allowed while Held and Waiting Calls
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::SetDtHeldWaitingCallsAllowedL( const TDesC& aValue )
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::SetDtHeldWaitingCallsAllowedVccL" );
- if ( iDtHeldWaitingCallsAllowed )
- {
- delete iDtHeldWaitingCallsAllowed;
- iDtHeldWaitingCallsAllowed = NULL;
- }
- iDtHeldWaitingCallsAllowed = aValue.AllocL();
- }
-
-// ---------------------------------------------------------------------------
-// Sets handover treshold value for WLAN
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::SetDtWlanHoTresholdL( const TDesC& aValue )
- {
- RUBY_DEBUG_BLOCK( "CWPVccItem::SetDtWlanHoTresholdL" );
- if ( iDtWlanHoTreshold )
- {
- delete iDtWlanHoTreshold;
- iDtWlanHoTreshold = NULL;
- }
- iDtWlanHoTreshold = aValue.AllocL();
- }
-
-// ---------------------------------------------------------------------------
-// Sets handover hysteresis value for WLAN
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::SetDtWlanHoHysteresisL( const TDesC& aValue )
- {
- RUBY_DEBUG_BLOCK( "CWPVccItem::SetDtWlanHoHysteresisL" );
- if ( iDtWlanHoHysteresis )
- {
- delete iDtWlanHoHysteresis;
- iDtWlanHoHysteresis = NULL;
- }
- iDtWlanHoHysteresis = aValue.AllocL();
- }
-// ---------------------------------------------------------------------------
-// Sets handover hysteresis timer value for WLAN lower limit
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::SetDtWlanHoHysteresisTimerLowL(
- const TDesC& aValue )
- {
- RUBY_DEBUG_BLOCK( "CWPVccItem::SetDtWlanHoHysteresisTimerLowL" );
- if ( iDtWlanHoHysteresisTimerLow )
- {
- delete iDtWlanHoHysteresisTimerLow;
- iDtWlanHoHysteresisTimerLow = NULL;
- }
- iDtWlanHoHysteresisTimerLow = aValue.AllocL();
- }
-// ---------------------------------------------------------------------------
-// Sets handover hysteresis timer value for WLAN higher limit
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::SetDtWlanHoHysteresisTimerHighL(
- const TDesC& aValue )
- {
- RUBY_DEBUG_BLOCK( "CWPVccItem::SetDtWlanHoHysteresisTimerHighL" );
- if ( iDtWlanHoHysteresisTimerHigh )
- {
- delete iDtWlanHoHysteresisTimerHigh;
- iDtWlanHoHysteresisTimerHigh = NULL;
- }
- iDtWlanHoHysteresisTimerHigh = aValue.AllocL();
- }
-// ---------------------------------------------------------------------------
-// Sets handover treshold value for CS
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::SetDtCsHoTresholdL( const TDesC& aValue )
- {
- RUBY_DEBUG_BLOCK( "CWPVccItem::SetDtCsHoTresholdL" );
- if ( iDtCsHoTreshold )
- {
- delete iDtCsHoTreshold;
- iDtCsHoTreshold = NULL;
- }
- iDtCsHoTreshold = aValue.AllocL();
- }
-
-// ---------------------------------------------------------------------------
-// Sets handover hysteresis value for CS
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::SetDtCsHoHysteresisL( const TDesC& aValue )
- {
- RUBY_DEBUG_BLOCK( "CWPVccItem::SetDtCsHoHysteresisL" );
- if ( iDtCsHoHysteresis )
- {
- delete iDtCsHoHysteresis;
- iDtCsHoHysteresis = NULL;
- }
- iDtCsHoHysteresis = aValue.AllocL();
- }
-
-// ---------------------------------------------------------------------------
-// Sets handover hysteresis timer value for CS lower limit
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::SetDtCsHoHysteresisTimerLowL( const TDesC& aValue )
- {
- RUBY_DEBUG_BLOCK( "CWPVccItem::SetDtCsHoHysteresisTimerLowL" );
- if ( iDtCsHoHysteresisTimerLow )
- {
- delete iDtCsHoHysteresisTimerLow;
- iDtCsHoHysteresisTimerLow = NULL;
- }
- iDtCsHoHysteresisTimerLow = aValue.AllocL();
- }
-
-// ---------------------------------------------------------------------------
-// Sets handover hysteresis timer value for CS higher limit
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::SetDtCsHoHysteresisTimerHighL(
- const TDesC& aValue )
- {
- RUBY_DEBUG_BLOCK( "CWPVccItem::SetDtCsHoHysteresisTimerHighL" );
- if ( iDtCsHoHysteresisTimerHigh )
- {
- delete iDtCsHoHysteresisTimerHigh;
- iDtCsHoHysteresisTimerHigh = NULL;
- }
- iDtCsHoHysteresisTimerHigh = aValue.AllocL();
- }
-
-// ---------------------------------------------------------------------------
-// Converts given value to int.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CVccSPSettings::ConvertToIntL( const TDesC& aValue )
- {
- TInt intValue;
- TLex temp( aValue );
- User::LeaveIfError( temp.Val( intValue ) );
- return intValue;
- }
-
-// ---------------------------------------------------------------------------
-// Finds service provider entry from spsettings
-// if service entry was not found, a new entry is created.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::FindServiceEntryL( const TDesC& aServiceName,
- CSPEntry& aServiceEntry )
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::FindServiceEntryL" );
-
- RUBY_DEBUG1( "-service name:[%S]",&aServiceName );
- TInt error( KErrNone );
- RIdArray serviceids;
- CleanupClosePushL( serviceids );
- iSettings->FindServiceIdsL( serviceids );
-
- TInt count = serviceids.Count();
- RUBY_DEBUG1( "-serviceids count [%d]",count );
-
- TBool foundEntry( EFalse );
-
- for ( TInt i( 0 ); i < serviceids.Count() && !foundEntry; i++ )
- {
- CSPProperty* property = CSPProperty::NewLC();
- error = iSettings->FindPropertyL( serviceids[i], ESubPropertyVccVDI, *property );
-
- if( error == KErrNone )
- {
- RUBY_DEBUG0( "-service found" );
- iSettings->FindEntryL( serviceids[i], aServiceEntry );
- foundEntry = ETrue;
- }
- CleanupStack::PopAndDestroy( property );
- }
-
- if( aServiceEntry.GetServiceId() == KVccZeroId && !foundEntry )
- {
- RUBY_DEBUG0( "-no service found");
- }
-
- CleanupStack::PopAndDestroy( &serviceids );
- }
-
-// ---------------------------------------------------------------------------
-// Sets Voip service Id
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::SetVoipServiceIdL( const TDesC& aValue )
- {
- RUBY_DEBUG1( "CVccSPSettings::SetVoipServiceIdL instance %x", this );
- SetVoipServiceIdL( ConvertToIntL( aValue ) );
- RUBY_DEBUG1( "SetVoipServiceId:[%d]",iVoipServiceId );
- }
-
-// ---------------------------------------------------------------------------
-// Sets Voip service Id
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::SetVoipServiceIdL( TInt aValue )
- {
- TBuf<KVccServiceIdLength> serviceIdString;
- serviceIdString.Num(aValue);
-
- if ( iVoipServiceIdString )
- {
- delete iVoipServiceIdString;
- iVoipServiceIdString = NULL;
- }
-
- iVoipServiceIdString = serviceIdString.AllocL();
- iVoipServiceId = aValue;
-
- RUBY_DEBUG1( "SetVoipServiceId:[%d]",iVoipServiceId );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CVccSPSettings::FindPropertyL( TServiceId aServiceId,
- TServicePropertyName aPropertyName,
- CSPProperty& aProperty )
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::FindPropertyL" );
-
- return iSettings->FindPropertyL( aServiceId, aPropertyName, aProperty );
- }
-
-// ---------------------------------------------------------------------------
-// reads entry from sp settings
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::ReadSettingsL( const TDesC& aServiceName )
- {
- RUBY_DEBUG_BLOCK( "ReadSettingsL" );
- SetServiceNameL( aServiceName );
-
- CSPEntry* entry = CSPEntry::NewLC();
-
- RUBY_DEBUG1( "-service name:[%S]",iServiceName );
-
- FindServiceEntryL( *iServiceName, *entry );
- iServiceId = entry->GetServiceId();
-
- RUBY_DEBUG0( "service found" );
-
- RBuf val;
- val.CreateL( KSPMaxDesLength );
-
- TInt err = GetPropertyValue( *entry, ESubPropertyVccPreferredDomain, val );
- SetPreferredDomainL( val );
- RUBY_DEBUG2( "iPreferredDomain = %S, err %d ", iPreferredDomain, err );
-
- err = GetPropertyValue( *entry, ESubPropertyVccDtCstoPsAllowed, val );
- SetDtCsToPsAllowedL( val );
- RUBY_DEBUG2( "iDtCsToPsAllowed = %S, err %d ", iDtCsToPsAllowed, err );
-
- err = GetPropertyValue( *entry, ESubPropertyVccDtPstoCsAllowed, val );
- SetDtPsToCsAllowedL( val );
- RUBY_DEBUG2( "iDtPsToCsAllowed = %S, err %d ", iDtPsToCsAllowed, err );
-
- err = GetPropertyValue( *entry, ESubPropertyVccImmediateDomainTransfer,
- val );
- SetImmediateDtL( val );
- RUBY_DEBUG2( "iImmediateDt = %S, err %d ", iImmediateDt, err );
-
- err = GetPropertyValue( *entry, ESubPropertyVccDtHeldWaitingCallsAllowed,
- val );
- SetDtHeldWaitingCallsAllowedL( val );
- RUBY_DEBUG2( "iDtHeldWaitingCallsAllowed = %S, err %d ",
- iDtHeldWaitingCallsAllowed, err );
-
- err = GetPropertyValue( *entry, ESubPropertyVccDtCSHoTriggerLevel, val );
- SetDtCsHoTresholdL( val );
- RUBY_DEBUG2( "iDtCsHoTreshold = %S, err %d ", iDtCsHoTreshold, err );
-
- err = GetPropertyValue( *entry, ESubPropertyVccDtCSHoHysteresis,
- val );
- SetDtCsHoHysteresisL( val );
- RUBY_DEBUG2( "iDtCsHoHysteresis = %S, err %d ", iDtCsHoHysteresis, err );
-
- err = GetPropertyValue( *entry, ESubPropertyVccDtCSHoHysteresisTimerLow,
- val );
- SetDtCsHoHysteresisTimerLowL( val );
- RUBY_DEBUG2( "iDtCsHoHysteresisTimerLow = %S, err %d ",
- iDtCsHoHysteresisTimerLow, err );
-
- err = GetPropertyValue( *entry, ESubPropertyVccDtCSHoHysteresisTimerHigh,
- val );
- SetDtCsHoHysteresisTimerHighL( val );
- RUBY_DEBUG2( "iDtCsHoHysteresisTimerHigh = %S, err %d ",
- iDtCsHoHysteresisTimerHigh, err );
-
- err = GetPropertyValue( *entry, ESubPropertyVccDtWLANHoTriggerLevel, val );
- SetDtWlanHoTresholdL( val );
- RUBY_DEBUG2( "iDtWlanHoTreshold = %S, err %d ", iDtWlanHoTreshold, err );
-
- err = GetPropertyValue( *entry, ESubPropertyVccDtWLANHoHysteresis, val );
- SetDtWlanHoHysteresisL( val );
- RUBY_DEBUG2( "iDtWlanHoHysteresis = %S, err %d ", iDtWlanHoHysteresis, err );
-
- err = GetPropertyValue( *entry, ESubPropertyVccDtWLANHoHysteresisTimerLow,
- val );
- SetDtWlanHoHysteresisTimerLowL( val );
- RUBY_DEBUG2( "iDtWlanHoHysteresisTimerLow = %S, err %d ",
- iDtWlanHoHysteresisTimerLow, err );
-
- err = GetPropertyValue( *entry, ESubPropertyVccDtWLANHoHysteresisTimerHigh,
- val );
- SetDtWlanHoHysteresisTimerHighL( val );
- RUBY_DEBUG2( "iDtWlanHoHysteresisTimerHigh = %S, err %d ",
- iDtWlanHoHysteresisTimerHigh, err );
-
- err = GetPropertyValue( *entry, ESubPropertyVccDtVoipServiceId, val );
- SetVoipServiceIdL( val );
- RUBY_DEBUG2( "iVoipServiceId = %d, err0 %d ", iVoipServiceId, err );
-
- err = GetPropertyValue( *entry, ESubPropertyVccDtAllowedWhenCsOriginated, val );
- SetDtAllowedWhenCsOriginated( val );
- RUBY_DEBUG2( "iDtAllowedWhenCsOriginated = %S, err %d ",
- iDtAllowedWhenCsOriginated, err );
-
- val.Close();
- CleanupStack::PopAndDestroy( entry );
- }
-
-// ---------------------------------------------------------------------------
-// Return preferred domain
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CVccSPSettings::PreferredDomainL()
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::PreferredDomainL" );
- return ConvertToIntL( *iPreferredDomain );
- }
-
-// ---------------------------------------------------------------------------
-// Return Immediate Dt
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CVccSPSettings::ImmediateDtL()
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::ImmediateDtL" );
- return ConvertToIntL( *iImmediateDt );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CVccSPSettings::DtCsToPsAllowedL()
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::DtCsToPsAllowedL" );
- return ConvertToIntL( *iDtCsToPsAllowed );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CVccSPSettings::DtPsToCsAllowedL()
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::DtPsToCsAllowedL" );
- return ConvertToIntL( *iDtPsToCsAllowed );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CVccSPSettings::DtHeldWaitingCallsAllowedL()
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::DtHeldWaitingCallsAllowedL" );
- return ConvertToIntL( *iDtHeldWaitingCallsAllowed );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CVccSPSettings::CsHoTresholdL()
- {
- return ConvertToIntL( *iDtCsHoTreshold );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CVccSPSettings::CsHoHysteresisL()
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::CsHoHysteresisL" );
- return ConvertToIntL( *iDtCsHoHysteresis );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CVccSPSettings::CsHoHysteresisTimerLowL()
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::CsHoHysteresisTimerLowL" );
- return ConvertToIntL( *iDtCsHoHysteresisTimerLow );
- }
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CVccSPSettings::CsHoHysteresisTimerHighL()
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::CsHoHysteresisTimerHighL" );
- return ConvertToIntL( *iDtCsHoHysteresisTimerHigh );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CVccSPSettings::PsHoTresholdL()
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::PsHoTresholdL" );
- return ConvertToIntL( *iDtWlanHoTreshold );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CVccSPSettings::PsHoHysteresisL()
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::PsHoHysteresisL" );
- return ConvertToIntL( *iDtWlanHoHysteresis );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CVccSPSettings::PsHoHysteresisTimerLowL()
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::PsHoHysteresisTimerLowL" );
- return ConvertToIntL( *iDtWlanHoHysteresisTimerLow );
- }
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CVccSPSettings::PsHoHysteresisTimerHighL()
- {
- return ConvertToIntL( *iDtWlanHoHysteresisTimerHigh );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CVccSPSettings::VoipServiceId()
- {
- return iVoipServiceId;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CVccSPSettings::DtAllowedWhenCsOriginatedL()
- {
- return ConvertToIntL( *iDtAllowedWhenCsOriginated );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CVccSPSettings::SetDtAllowedWhenCsOriginated( const TDesC& aValue )
- {
- RUBY_DEBUG_BLOCK( "CVccSPSettings::SetDtAllowedWhenCsOriginated" );
- if ( iDtAllowedWhenCsOriginated )
- {
- delete iDtAllowedWhenCsOriginated;
- iDtAllowedWhenCsOriginated = NULL;
- }
- TRAP_IGNORE( iDtAllowedWhenCsOriginated = aValue.AllocL() );
- }
-// ---------------------------------------------------------------------------
-// Update old property or add new property to the service entry
-// ---------------------------------------------------------------------------
-//
-void CVccSPSettings::AddOrUpdatePropertyL( CSPEntry& aServiceEntry,
- const TServicePropertyName aName, TInt aValue )
- {
-
- TInt err = aServiceEntry.UpdateProperty( aName, aValue );
-
- //add new to entry
- if( err == KErrNotFound )
- {
- CSPProperty* property = CSPProperty::NewLC();
- property->SetName( aName );
- property->SetValue( aValue );
- // New property, don't need to check return value
- // coverity[check_return] coverity[unchecked_value]
- aServiceEntry.AddPropertyL( *property );
- CleanupStack::PopAndDestroy( property );
- }
- }
-
-// ---------------------------------------------------------------------------
-// Update old property or add new property to the service entry
-// ---------------------------------------------------------------------------
-//
-void CVccSPSettings::AddOrUpdatePropertyL( CSPEntry& aServiceEntry,
- const TServicePropertyName aName, const TDesC& aValue )
- {
- TInt err = aServiceEntry.UpdateProperty( aName, aValue );
-
- //add new to entry
- if( err == KErrNotFound )
- {
- CSPProperty* property = CSPProperty::NewLC();
- property->SetName( aName );
- property->SetValue( aValue );
- // New property, don't need to check return value
- // coverity[check_return] coverity[unchecked_value]
- aServiceEntry.AddPropertyL( *property );
- CleanupStack::PopAndDestroy( property );
- }
- }
-
-// ---------------------------------------------------------------------------
-// Try to get the value of property as integer
-// ---------------------------------------------------------------------------
-//
-TInt CVccSPSettings::GetPropertyValue( CSPEntry& aServiceEntry,
- const TServicePropertyName& aPropertyName,
- TInt& aValue )
- {
- RUBY_DEBUG_BLOCK( "GetPropertyValue" );
-
- const CSPProperty* property = NULL;
- TInt err = aServiceEntry.GetProperty( property, aPropertyName );
- if( property != NULL )
- err = property->GetValue( aValue ) ;
-
- return err;
- }
-
-// ---------------------------------------------------------------------------
-// Try to get the value of property as integer
-// ---------------------------------------------------------------------------
-//
-TInt CVccSPSettings::GetPropertyValue( CSPEntry& aServiceEntry,
- const TServicePropertyName& aPropertyName,
- TDes& aValue )
- {
- RUBY_DEBUG_BLOCK( "GetPropertyValue" );
-
- const CSPProperty* property = NULL;
- TInt err = aServiceEntry.GetProperty( property, aPropertyName );
-
- if( property != NULL )
- {
- err = property->GetValue( aValue ) ;
- }
- else
- {
- TBuf<1> zero(_L("0"));
- aValue.Copy( zero );
- }
-
- return err;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CVccSPSettings::ModifyVoipProfileL()
- {
- //Change callprovider plugin uid in VoIP setting
- CSPEntry* voipEntry = CSPEntry::NewLC();
- TRAPD( e, iSettings->FindEntryL( iVoipServiceId, *voipEntry ) );
-
- if (e == KErrNone)
- {
- RUBY_DEBUG0( "voip service found" );
-
- const CSPProperty* property = NULL;
- TInt err = voipEntry->GetProperty( property,
- EPropertyServiceAttributeMask );
-
- if( property != NULL )
- {
- TInt mask;
- err = property->GetValue( mask ) ;
- RUBY_DEBUG1( "voip service mask %d", mask );
-
- mask = mask | EBootstrapCallProvider;
- RUBY_DEBUG1( "voip service mask after mod %d", mask );
- voipEntry->UpdateProperty(EPropertyServiceAttributeMask, mask );
- voipEntry->UpdateProperty(EPropertyCallProviderPluginId, KVccCallProviderPlugId );
-
- // Update entry
- iSettings->UpdateEntryL(*voipEntry);
-
- RUBY_DEBUG0( "voip service updated" );
- }
- }
- CleanupStack::PopAndDestroy( voipEntry );
- }