diff -r bfb1de3eac8e -r 7b872347d83b voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlparamhandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlparamhandler.cpp Tue Feb 02 00:05:57 2010 +0200 @@ -0,0 +1,619 @@ +/* +* Copyright (c) 2009-2010 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: VoIP settings XML parameter handler. +* +*/ + + +#include "voipxmlparamhandler.h" +#include "voipxmlsiphandler.h" +#include "voipxmlvoiphandler.h" +#include "voipxmlxdmhandler.h" +#include "voipxmlpresencehandler.h" +#include "voipxmlnatfwhandler.h" +#include "voipxmliaphandler.h" +#include "voipxmlprocessordefaults.h" + +// --------------------------------------------------------------------------- +// Default constructor. +// --------------------------------------------------------------------------- +// +CVoipXmlParamHandler::CVoipXmlParamHandler() + { + } + +// --------------------------------------------------------------------------- +// ConstructL +// --------------------------------------------------------------------------- +// +void CVoipXmlParamHandler::ConstructL() + { + iSettingsType = EUnknown; + iPreviousSettingsType = EUnknown; + iSipHandler = CVoipXmlSipHandler::NewL(); + iVoipHandler = CVoipXmlVoipHandler::NewL(); + iXdmHandler = CVoipXmlXdmHandler::NewL(); + iPresenceHandler = CVoipXmlPresenceHandler::NewL(); + iNatFwHandler = CVoipXmlNatFwHandler::NewL(); + iIapHandler = CVoipXmlIapHandler::NewL(); + } + +// --------------------------------------------------------------------------- +// NewL +// --------------------------------------------------------------------------- +// +CVoipXmlParamHandler* CVoipXmlParamHandler::NewL() + { + CVoipXmlParamHandler* self = CVoipXmlParamHandler::NewLC(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// NewLC +// --------------------------------------------------------------------------- +// +CVoipXmlParamHandler* CVoipXmlParamHandler::NewLC() + { + CVoipXmlParamHandler* self = new( ELeave ) CVoipXmlParamHandler; + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// --------------------------------------------------------------------------- +// Destructor. +// --------------------------------------------------------------------------- +// +CVoipXmlParamHandler::~CVoipXmlParamHandler() + { + delete iSipHandler; + delete iVoipHandler; + delete iXdmHandler; + delete iPresenceHandler; + delete iNatFwHandler; + delete iIapHandler; + } + +// --------------------------------------------------------------------------- +// Marks the currently deployed settings. +// --------------------------------------------------------------------------- +// +void CVoipXmlParamHandler::SettingsStart( const TDesC& aType ) + { + TBuf type( KNullDesC ); + type.Copy( aType ); + type.LowerCase(); + iPreviousSettingsType = iSettingsType; + if ( KSettingsTypeVoip() == type ) + { + iSettingsType = EVoip; + } + else if ( KSettingsTypeSip() == type ) + { + iSettingsType = ESip; + } + else if ( KSettingsTypePresence() == type ) + { + iSettingsType = EPresence; + } + else if ( KSettingsTypeXdm() == type ) + { + iSettingsType = EXdm; + } + else if ( KSettingsTypeNatFw() == type ) + { + iSettingsType = ENatFw; + } + else if ( KSettingsTypeCodec() == type ) + { + iSettingsType = ECodec; + } + else if ( KSettingsTypeVmbx() == type ) + { + iSettingsType = EVmbx; + } + else if ( KSettingsTypeProxy() == type ) + { + iSettingsType = EProxy; + } + else if ( KSettingsTypeRegistrar() == type ) + { + iSettingsType = ERegistrar; + } + else if ( KSettingsTypeAdditionalStun() == type ) + { + iSettingsType = EAdditionalStun; + } + else if ( KSettingsTypeWlan() == type ) + { + iSettingsType = EWlan; + } + else if ( KSettingsTypeWepKey() == type ) + { + iSettingsType = EWepKey; + } + else if ( KSettingsTypeDestination() == type ) + { + iSettingsType = EDestination; + } + else + { + iSettingsType = EUnknown; + } + } + +// --------------------------------------------------------------------------- +// Marks the currently deployed settings as 'ready', i.e. sets current +// settings type to previous one and informs settings handlers. +// --------------------------------------------------------------------------- +// +void CVoipXmlParamHandler::SettingsEnd() + { + iVoipHandler->SettingsEnd( iSettingsType ); + iNatFwHandler->SettingsEnd( iSettingsType ); + iIapHandler->SettingsEnd( iSettingsType ); + iSettingsType = iPreviousSettingsType; + iPreviousSettingsType = EUnknown; + } + +// --------------------------------------------------------------------------- +// Handles XML parameters, i.e. converts parameter names to enum and sets +// the values to setting handlers. +// --------------------------------------------------------------------------- +// +void CVoipXmlParamHandler::HandleParameter( const TDesC& aParam, + const TDesC& aValue ) + { + switch ( iSettingsType ) + { + case EVoip: + case EVmbx: + case ECodec: + { + TInt param = ConvertParameter( aParam ); + iVoipHandler->SetSetting( iSettingsType, param, aValue ); + } + break; + case ESip: + case EProxy: + case ERegistrar: + { + TInt param = ConvertParameter( aParam ); + TBuf8 value; + value.Copy( aValue ); + iSipHandler->SetSetting( iSettingsType, param, value ); + } + break; + case EPresence: + { + TInt param = ConvertParameter( aParam ); + iPresenceHandler->SetSetting( param, aValue ); + } + break; + case EXdm: + { + TInt param = ConvertParameter( aParam ); + iXdmHandler->SetSetting( param, aValue ); + } + break; + case ENatFw: + case EAdditionalStun: + { + TInt param = ConvertParameter( aParam ); + TBuf8 value; + value.Copy( aValue ); + iNatFwHandler->SetSetting( iSettingsType, param, value ); + } + break; + case EWlan: + case EWepKey: + case EDestination: + { + TInt param = ConvertParameter( aParam ); + iIapHandler->SetSetting( iSettingsType, param, aValue ); + } + break; + default: + break; + } + } + +// --------------------------------------------------------------------------- +// Stores settings, i.e. sends store commands to settings handlers. +// --------------------------------------------------------------------------- +// +TInt CVoipXmlParamHandler::StoreSettings() + { + // First send 'basic' store commands. + TInt err( KErrNone ); + err = iSipHandler->StoreSettings(); + if ( KErrNone != err ) + { + return err; + } + err = iVoipHandler->StoreSettings(); + if ( KErrNone != err ) + { + return err; + } + err = iXdmHandler->StoreSettings(); + // If there were no settings, ignore error code. + if ( KErrNotSupported == err ) + { + err = KErrNone; + } + err = iPresenceHandler->StoreSettings(); + // If there were no settings, ignore error code. + if ( KErrNotSupported == err ) + { + err = KErrNone; + } + + err = iNatFwHandler->StoreSettings(); + // If there were no settings, ignore error code. + if ( KErrNotSupported == err ) + { + err = KErrNone; + } + + err = iIapHandler->StoreSettings(); + // If there were no settings, ignore error code. + if ( KErrNotSupported == err ) + { + err = KErrNone; + } + + // Send linkage information. + iSipHandler->LinkSettings( EDestination, iIapHandler->SettingsId() ); + iVoipHandler->LinkSettings( ESip, iSipHandler->SettingsId() ); + iVoipHandler->LinkSettings( EPresence, iPresenceHandler->SettingsId() ); + iVoipHandler->LinkSettings( EDestination, iIapHandler->SettingsId() ); + iPresenceHandler->LinkSettings( ESip, iSipHandler->SettingsId() ); + iPresenceHandler->LinkSettings( EXdm, iXdmHandler->SettingsId() ); + + // Send finalizing commands. + iSipHandler->FinalizeSettings(); // Ignore error code. + err = iVoipHandler->FinalizeSettings(); + iPresenceHandler->FinalizeSettings(); // Ignore error code. + return err; + } + +// --------------------------------------------------------------------------- +// Returns the VoIP service ID. +// --------------------------------------------------------------------------- +// +TUint32 CVoipXmlParamHandler::ServiceTabId() + { + TUint32 tabId( KErrNone ); + TRAP_IGNORE( tabId = iVoipHandler->ServiceTabIdL() ); + return tabId; + } + +// --------------------------------------------------------------------------- +// Converts parameter name to enumerated parameter. +// --------------------------------------------------------------------------- +// +TInt CVoipXmlParamHandler::ConvertParameter( const TDesC& aParam ) + { + TBuf name( KNullDesC ); + name.Copy( aParam ); + name.LowerCase(); + // ============================== + // Generic parameters. + // ============================== + // + if ( KParamValueName() == name ) + { + return EName; + } + else if ( KParamValueUri() == name ) + { + return EUri; + } + else if ( KParamValueTransport() == name ) + { + return ETransport; + } + else if ( KParamValuePort() == name ) + { + return EPort; + } + else if ( KParamValueUsername() == name ) + { + return EUsername; + } + else if ( KParamValuePassword() == name ) + { + return EPassword; + } + else if ( KParamValueType() == name ) + { + return EType; + } + else if ( KParamValueDomain() == name ) + { + return EDomain; + } + else if ( KParamValueStartPort() == name ) + { + return EStartPort; + } + else if ( KParamValueEndPort() == name ) + { + return EEndPort; + } + // ============================== + // VoIP 'core' parametes. + // ============================== + // + else if ( KParamValueMediaQos() == name ) + { + return EMediaQos; + } + else if ( KParamValueDtmfInband() == name ) + { + return EDtmfInband; + } + else if ( KParamValueDtmfOutband() == name ) + { + return EDtmfOutband; + } + else if ( KParamValueSecureCallPref() == name ) + { + return ESecureCallPreference; + } + else if ( KParamValueVoipOverWcdma() == name ) + { + return EAllowVoipOverWcdma; + } + else if ( KParamValueRtcp() == name ) + { + return ERtcp; + } + else if ( KParamValueUserAgentTerminalType() == name ) + { + return EUserAgentHeaderTerminalType; + } + else if ( KParamValueUserAgentWlanMac() == name ) + { + return EUserAgentHeaderWlanMac; + } + else if ( KParamValueUserAgentFreeString() == name ) + { + return EUserAgentHeaderFreeString; + } + else if ( KParamValueCallerIdDigits() == name ) + { + return ECallerIdDigits; + } + else if ( KParamValueIgnoreDomainPart() == name ) + { + return EIgnoreDomainPart; + } + else if ( KParamValueAutoAcceptBuddyRequests() == name ) + { + return EAutoAcceptBuddyRequests; + } + else if ( KParamValueAddUserPhone() == name ) + { + return EAddUserPhone; + } + else if ( KParamValueProviderUrl() == name ) + { + return EProviderUrl; + } + else if ( KParamValueMinSessionInterval() == name ) + { + return EMinSessionInterval; + } + else if ( KParamValueSessionInterval() == name ) + { + return ESessionInterval; + } + else if ( KParamValueBrandingUri() == name ) + { + return EBrandingUri; + } + else if ( KParamValueAutoEnable() == name ) + { + return EAutoEnable; + } + else if ( KParamValueEnableSipIm() == name ) + { + return EEnableSipIm; + } + else if ( KParamValueBrandId() == name ) + { + return EBrandId; + } + // ============================== + // VoIP voicemailbox parameters. + // ============================== + // + else if ( KParamValueMwiUri() == name ) + { + return EMwiUri; + } + else if ( KParamValueListeningUri() == name ) + { + return EListeningUri; + } + else if ( KParamValueReSubscribeInterval() == name ) + { + return EReSubscribeInterval; + } + // ============================== + // VoIP codec parameters. + // ============================== + // + else if ( KParamValueJitterBuffer() == name ) + { + return EJitterBuffer; + } + else if ( KParamValueOctetAlign() == name ) + { + return EOctetAlign; + } + else if ( KParamValuePTime() == name ) + { + return EPTime; + } + else if ( KParamValueMaxPTime() == name ) + { + return EMaxPTime; + } + else if ( KParamValueModeSet() == name ) + { + return EModeSet; + } + else if ( KParamValueModeChangePeriod() == name ) + { + return EModeChangePeriod; + } + else if ( KParamValueModeChangeNeighbor() == name ) + { + return EModeChangeNeighbor; + } + else if ( KParamValueMaxRed() == name ) + { + return EMaxRed; + } + else if ( KParamValueVad() == name ) + { + return EVad; + } + else if ( KParamValueAnnexB() == name ) + { + return EAnnexb; + } + // ============================== + // SIP parameters. + // ============================== + // + else if ( KParamValueSignalingQos() == name ) + { + return ESignalingQos; + } + else if ( KParamValuePublicUserId() == name ) + { + return EPublicUserId; + } + else if ( KParamValueSignalCompression() == name ) + { + return ESignalCompression; + } + else if ( KParamValueSecurityNegotiation() == name ) + { + return ESecurityNegotiation; + } + else if ( KParamValueProfileLock() == name ) + { + return EProfileLock; + } + else if ( KParamValueAutoRegistration() == name ) + { + return EAutoRegistration; + } + else if ( KParamValueLooseRouting() == name ) + { + return ELooseRouting; + } + // ============================== + // Presence parameters. + // ============================== + // + else if ( KParamValueMaxObjectSize() == name ) + { + return EMaxObjectSize; + } + else if ( KParamValuePublishInterval() == name ) + { + return EPublishInterval; + } + else if ( KParamValueMaxSubscriptions() == name ) + { + return EMaxSubscriptions; + } + else if ( KParamValueMaxContacts() == name ) + { + return EMaxContacts; + } + else if ( KParamValueDomainSyntax() == name ) + { + return EDomainSyntax; + } + // ============================== + // NAT/Firewall parameters. + // ============================== + // + else if ( KParamValueTcpRefreshInterval() == name ) + { + return ETcpRefreshInterval; + } + else if ( KParamValueUdpRefreshInterval() == name ) + { + return EUdpRefreshInterval; + } + else if ( KParamValueCrlfRefresh() == name ) + { + return ECrlfRefresh; + } + else if ( KParamValueStunSharedSecret() == name ) + { + return EStunSharedSecret; + } + // ============================== + // WLAN IAP parameters. + // ============================== + // + else if ( KParamSsid() == name ) + { + return ESsid; + } + else if ( KParamHidden() == name ) + { + return EHidden; + } + else if ( KParamNetworkMode() == name ) + { + return ENetworkMode; + } + else if ( KParamPreSharedKey() == name ) + { + return EPreSharedKey; + } + else if ( KParamWepAuthMode() == name ) + { + return EWepAuthMode; + } + else if ( KParamLength() == name ) + { + return ELength; + } + else if ( KParamData() == name ) + { + return EData; + } + // ============================== + // Not supported. + // ============================== + // + else + { + return EUnSupported; + } + } + +// End of file.