--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/voipplugins/voipadapters/cpvoipadapter/inc/CWPVoIPItem.h Wed Sep 01 12:29:57 2010 +0100
@@ -0,0 +1,864 @@
+/*
+* Copyright (c) 2002-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: Holds and stores one VoIP item.
+*
+*/
+
+
+#ifndef CWPVOIPITEM_H
+#define CWPVOIPITEM_H
+
+// INCLUDES
+#include <e32base.h> // CBase.
+#include <crcseprofileentry.h> // TOnOff, RCSE entry
+#include "CWPVoIPCodec.h" // VoIP codecs.
+
+// CONSTANTS
+const TUint KMaxTerminalTypeLength = 64;
+const TUint KWlanMacAddressLength = 50;
+const TUint KPhoneModelLength = 20;
+const TUint KUAHLength = 200;
+
+// MACROS
+
+// DATA TYPES
+typedef CRCSEProfileEntry VoIPProfileEntry;
+
+// FORWARD DECLARATIONS
+class CWPCharacteristic;
+class CWPVoIPCodec;
+class CCoeEnv;
+
+// CLASS DECLARATION
+/**
+ * This class keeps transiently the VoIP setting values and stores the
+ * values via interface provided by RCSE and SPS.
+ *
+ * @lib CWPVoIPAdapter.lib
+ * @since S60 3.0
+ */
+class CWPVoIPItem : public CBase
+ {
+ #ifdef _DEBUG
+ /**
+ * Friend class for unit testing.
+ */
+ friend class UT_CWPVoIPItem;
+ friend class UT_CWPVoIPAdapter;
+ #endif
+
+ public: // Data types
+
+ /** For setting telephony preference */
+ enum TTelephonyPreference
+ {
+ ECSPreferred,
+ EPSPreferred
+ };
+
+ /** For telling which settings storage ID is related to. */
+ enum TSettingsType
+ {
+ ESIP,
+ ESCCP,
+ ENATFW,
+ EPresence,
+ ESNAP
+ };
+
+ public: // Constructor and destructor
+
+ static CWPVoIPItem* NewL();
+ virtual ~CWPVoIPItem();
+
+ public: // New functions
+
+ /**
+ * Setter for AppRef.
+ *
+ * @since S60 3.2
+ * @param aAppRef.
+ */
+ void SetAppRefL( const TDesC8& aAppRef );
+
+ /**
+ * Getter for AppRef.
+ *
+ * @since S60 3.2
+ * @return AppRef.
+ */
+ HBufC8* AppRef();
+
+ /**
+ * Setter for provider.
+ *
+ * @since S60 3.0
+ * @param aPROVIDERID.
+ */
+ void SetProviderIdL( const TDesC& aPROVIDERID );
+
+ /**
+ * Setter for user viewable name of the setting.
+ *
+ * @since S60 3.0
+ * @param aNAME - value is TCP or UDP.
+ */
+ void SetNameL( const TDesC& aNAME );
+
+ /**
+ * Setter for TO-APPREF parameter values.
+ *
+ * @since S60 3.0
+ * @param aTOAPPREF (i.e.actual CP parameter TO-APPREF).
+ */
+ void AddToAppRefL( const TDesC8& aTOAPPREF );
+
+ /**
+ * Setter for start media port.
+ *
+ * @since S60 3.0
+ * @param aSMPORT.
+ */
+ void SetStartMediaPort( TInt aSMPORT );
+
+ /**
+ * Setter for end media port.
+ *
+ * @since S60 3.0
+ * @param aEMPORT.
+ */
+ void SetEndMediaPort( TInt aEMPORT );
+
+ /**
+ * Setter for media QoS.
+ *
+ * @since S60 3.0
+ * @param aMediaQoSValue.
+ */
+ void SetMediaQoS( TInt aMEDIAQOS );
+
+ /**
+ * Setter for switching DTMF in-band on/off.
+ *
+ * @since S60 3.0
+ * @param aDTMFInBand (derived from CP parameter NODTMFIB, where
+ * "NO" means negation).
+ */
+ void SetDTMFInBand( TInt aDTMFInBand );
+
+ /**
+ * Setter for DTMF out-of-band parameter.
+ *
+ * @since S60 3.0
+ * @param aDTMFOutBandValue (derived from CP parameter
+ * NODTMFOOB, where "NO" means negation).
+ */
+ void SetDTMFOutBand( TInt aDTMFOutBandValue );
+
+ /**
+ * Setter for VoIP codecs.
+ * Takes ownership of aVoIPCodec.
+ *
+ * @since S60 3.0
+ * @param aVoIPCodec.
+ */
+ void AddCodecL( const CWPVoIPCodec* aVoIPCodec );
+
+ /**
+ * Setter for iSecureCallPreference.
+ *
+ * @since S60 3.0
+ * @return aSecureCallPreference.
+ */
+ void SetSecureCallPref( TInt aSecureCallPref );
+
+ /**
+ * Setter for iRTCP.
+ *
+ * @since S60 3.0
+ * @param aRTCP.
+ */
+ void SetRTCP( TInt aRTCP );
+
+ /**
+ * Setter for iUAHTerminalType.
+ *
+ * @since S60 3.0
+ * @param aUAHTerminalType SIP User Agent Header:
+ * terminal type display.
+ */
+ void SetUAHTerminalType( TInt aUAHTerminalType );
+
+ /**
+ * Setter for iUAHWLANMAC.
+ *
+ * @since S60 3.0
+ * @param aUAHWLANMAC SIP User Agent Header: WLAN MAC address display.
+ */
+ void SetUAHWLANMAC( TInt aUAHWLANMAC );
+
+ /**
+ * Setter for iUAHString.
+ *
+ * @since S60 3.0
+ * @param aUAHString SIP User Agent Header: free string.
+ */
+ void SetUAHStringL( const TDesC& aUAHString );
+
+ /**
+ * Setter for iProfileLockedToIAP.
+ *
+ * @since S60 3.0
+ * @param aProfileLockedToIAP Is profile locked to a pre-defined IAP.
+ */
+ void SetProfileLockedToIAP( TInt aProfileLockedToIAP );
+
+ /**
+ * Setter for iVoIPPluginUid.
+ *
+ * @since S60 3.0
+ * @param aVoIPPluginUid VoIP plugin UID.
+ */
+ void SetVoIPPluginUid( TInt aVoIPPluginUid );
+
+ /**
+ * Setter for iAllowVoIPOverWCDMA.
+ *
+ * @since S60 3.0
+ * @param aAllowVoIPOverWCDMA Allow VoIP over WCDMA.
+ */
+ void SetAllowVoIPOverWCDMA( TInt aAllowVoIPOverWCDMA );
+
+ /**
+ * Setter for iVoIPDigits.
+ *
+ * @since S60 3.0
+ * @param aVoIPDigits Number of meaningful VoIP digits for call
+ * identification.
+ */
+ void SetVoIPDigits( TInt aVoIPDigits );
+
+ /**
+ * Setter for iDomainPartIgnoreRule.
+ *
+ * @since S60 3.0
+ * @param aDomainPartIgnoreRule Rule for ignoring domain part of URI
+ * for VoIP calls.
+ */
+ void SetDomainPartIgnoreRule( TInt aDomainPartIgnoreRule );
+
+ /**
+ * Setter for iAddUserPhoneToAllNumbers.
+ *
+ * @since S60 3.2
+ * @param aAddUserPhone The indication whether or not to add
+ * user=phone to all numbers.
+ */
+ void SetAddUserPhone( TInt32 aAddUserPhone );
+
+ /**
+ * Setter for iSIPConnTestAddress.
+ *
+ * @since S60 3.2
+ * @param aSIPConnTestAddress Connectivity test call address
+ * in registering.
+ */
+ void SetSipConnTestAddressL( const TDesC& aSIPConnTestAddress );
+
+ /**
+ * Setter for iServiceProviderBookmark.
+ *
+ * @since S60 3.2
+ * @param aServiceProviderBookmark Absolute URI for service
+ * provider bookmark.
+ */
+ void SetServiceProviderBookmarkL(
+ const TDesC& aServiceProviderBookmark );
+
+ /**
+ * Setter for iSIPMinSE.
+ *
+ * @since S60 3.2
+ * @param aSIPMinSE The minimum allowed value for the session timer.
+ */
+ void SetSipMinSe( TInt32 aSIPMinSE );
+
+ /**
+ * Setter for iSIPSessionExpires.
+ *
+ * @since S60 3.2
+ * @param aSIPMinSE The session interval for a SIP session.
+ */
+ void SetSipSessionExpires( TInt32 aSIPSessionExpires );
+
+ /**
+ * Setter for iIPVoiceMailBoxURI.
+ *
+ * @since S60 3.
+ * @param aIPVoiceMailBoxURI IP Voice Mail Box address.
+ */
+ void SetIPVoiceMailBoxURIL( const TDesC& aIPVoiceMailBoxURI );
+
+ /**
+ * Setter for iVmbxListenAddress.
+ *
+ * @since S60 3.2
+ * @param aVmbxListenAddress VoiceMailBox listening address.
+ */
+ void SetVoiceMailBoxListenURIL( const TDesC& aVmbxListenAddress );
+
+ /**
+ * Setter for iReSubscribeInterval.
+ *
+ * @since S60 3.2
+ * @param aReSubscribeInterval Interval for sending re-SUBSCRIBE.
+ */
+ void SetReSubscribeInterval( TInt32 aReSubscribeInterval );
+
+ /**
+ * Setter for iBrandingDataAddress.
+ *
+ * @since S60 3.2
+ * @param aBrandingDataAddress URI to branding data xml.
+ */
+ void SetBrandingDataAddressL( const TDesC& aVmbxListenAddress );
+
+ /**
+ * Setter for iAutoAcceptBuddy.
+ *
+ * @since S60 3.2
+ * @param aAutoAcceptBuddy for defining auto accept buddy presence
+ * subscription request.
+ */
+ void SetAutoAcceptBuddyRequest( TInt32 aAutoAcceptBuddyRequest );
+
+ /**
+ * Setter for iAutoEnableService.
+ *
+ * @since S60 3.2
+ * @param aAutoEnableService for defining
+ * auto enable state of service.
+ */
+ void SetAutoEnableService( TInt32 aAutoEnableService );
+
+ /**
+ * Setter for NAPDEF (IAP settings).
+ *
+ * @since S60 3.2
+ * @param aNapDef NAPDEF (IAP settings) characteristic.
+ */
+ void SetNapDef( CWPCharacteristic* aNapDef );
+
+ /**
+ * Setter for TO-NAPID parameter.
+ *
+ * @since S60 3.2
+ * @param aNapDefName TO-NAPID value.
+ */
+ void SetToNapIdL( const TDesC8& ToNapId );
+
+ /**
+ * Setter for IAP ID.
+ *
+ * @since S60 3.2
+ * @param aIapId IAP ID.
+ */
+ void SetIapId( TUint32 aIapId );
+
+ /**
+ * Setter for storage ID's (APPREF/TO-APPREF linkage).
+ *
+ * @since S60 3.2
+ * @param aAppId APPID value.
+ * @param aStorageId Storage ID.
+ * @return ETrue if storage ID was set,
+ EFalse if storage ID was not set.
+ */
+ TBool SetStorageId( TSettingsType aProfileType, TUint32 aStorageId,
+ const TDesC8& aAppRef );
+
+ /**
+ * Sets TO-APPREF value to internal variable.
+ *
+ * @since S60 3.2
+ * @param aToAppRef TO-APPREF value.
+ */
+ void SetVoipUrisToAppRefL( const TDesC8& aToAppRef );
+
+ /**
+ * Setter for iUsedNatProtocol.
+ *
+ * @since S60 3.2
+ * @param aUsedNatProtocol for indicating which NAT protocol should
+ * be used.
+ */
+ void SetUsedNatProtocol( TInt32 aUsedNatProtocol);
+
+ /**
+ * Getter for user viewable name of VoIP settings item.
+ *
+ * @since S60 3.0
+ * @return Settings name.
+ */
+ const TDesC& Name() const;
+
+ /**
+ * Getter for iUAHString.
+ *
+ * @since S60 3.0
+ * @return SIP VoIP User Agent header: free string.
+ */
+ const TDesC& UAHString() const;
+
+ /**
+ * Getter for NAPDEF (IAP settings).
+ *
+ * @since S60 3.2
+ * @return NAPDEF characteristic.
+ */
+ CWPCharacteristic* NapDef();
+
+ /**
+ * Getter for TO-NAPID value.
+ *
+ * @since S60 3.2.
+ * @return TO-NAPID value.
+ */
+ const TDesC8& ToNapId() const;
+
+ /**
+ * Returns TO-APPREF value.
+ *
+ * @since S60 3.2
+ * @return TO-APPREF value.
+ */
+ const TDesC8& VoipUrisToAppRef() const;
+
+ /**
+ * Saves the VoIP settings and returns the uid of the stored new VoIP
+ * profile.
+ *
+ * @since S60 3.0
+ * @return VoIP profile ID.
+ */
+ TUint StoreL();
+
+ /**
+ * Return profile ID as a descriptor.
+ *
+ * @since 3.0
+ * @return ID of the VoIP item (VoIP profile ID).
+ */
+ const TDesC8& SaveData() const;
+
+ /**
+ * Make update for data that is received after the actual StoreL save
+ * method call. Data received after that can be: SIP profile ids in
+ * VoIP profile settings and in the SIP specific VoIP settings items
+ * and SCCP profile ids. SIP and SCCP ids are always received from the
+ * other adapters via CWPAdapter::SettingsSaved mehod that can be
+ * called after call to StoreL.
+ *
+ * @since S60 3.0
+ */
+ void SavingFinalizedL();
+
+ /**
+ * Sets CS/PS telephony preference.
+ *
+ * @since S60 3.0
+ * @param aTelephonyPreference state to set
+ */
+ void SetTelephonyPreferenceL( const TTelephonyPreference&
+ aTelephonyPreference ) const;
+
+ /**
+ * Gather SIP User-Agent header.
+ *
+ * @since S60 3.0
+ * @param aUserAgentHeader User Agent Header.
+ */
+ void GetUserAgentHeaderL( TBuf8<KUAHLength>& aUserAgentHeader ) const;
+
+ /**
+ * Getter for RCSE storage ID.
+ *
+ * @since S60 3.2
+ * @return RCSE storage ID.
+ */
+ TUint32 ItemId();
+
+ /**
+ * Sets IM enabled flag to true.
+ *
+ * @since S60 3.2
+ */
+ void EnableIm();
+
+ private:
+
+ CWPVoIPItem();
+ void ConstructL();
+
+ private: // New functions
+
+ /**
+ * Check for duplicate provider and settingsname and renames if same.
+ *
+ * @since S60 3.0
+ * @param aProfile Profile to check.
+ * @return ETrue if operation was done; otherwise EFalse.
+ */
+ TBool CheckDuplicatesL( CRCSEProfileEntry& aEntry ) const;
+
+ /**
+ * Get Terminal Type for SIP User Agent Header.
+ *
+ * @since S60 3.0
+ * @param aTeminalType Terminal type.
+ */
+ void GetTerminalTypeL(
+ TBuf<KMaxTerminalTypeLength>& aTerminalType ) const;
+
+ /**
+ * Get WLAN MAC address for SIP User Agent Header.
+ *
+ * @since S60 3.0
+ * @param aMac WLAN MAC address.
+ */
+ void GetWlanMacAddressL( TBuf<KWlanMacAddressLength>& aMac ) const;
+
+ /**
+ * Cleanup method for array.
+ *
+ * @since S60 3.1
+ * @param aParameter Parameter to be cleaned.
+ */
+ static void CleanupArrayItem( TAny* aArray );
+
+ /**
+ * Creates default codecs.
+ *
+ * @since S60 3.2
+ * @param aProfile Profile to append new codecs.
+ */
+ void AddDefaultCodecsL( CRCSEProfileEntry& aProfileEntry );
+
+ private: // Data.
+
+ /*
+ * VoIP codecs.
+ * Own.
+ */
+ RPointerArray<CWPVoIPCodec> iCodecs;
+
+ /*
+ * Identifies the item.
+ */
+ TUint iItemId;
+
+ /* Provider of settings. See OMA ProvCont document.
+ * CP parameter: PROVIDER-ID.
+ * Own.
+ */
+ HBufC* iProviderId;
+
+ /* Name of VoIP settings visible to user when viewing the provisioning
+ * message. See OMA ProvCont document.
+ * CP parameter: NAME
+ * Own.
+ */
+ HBufC* iName;
+
+ /* All APPREFs that are referenced from this VoIP item's TO-APPREF
+ * parameter.
+ * Own.
+ */
+ RPointerArray<HBufC8> iToAppRefs;
+
+ /* Start media port.See w9013.txt or VoIP software settings document.
+ * CP parameter: SMPORT.
+ */
+ TInt32 iStartMediaPort;
+
+ /* End media port.See w9013.txt or VoIP software settings document.
+ * CP parameter: EMPORT.
+ */
+ TInt32 iEndMediaPort;
+
+ /* Quality of service for the media.See w9013.txt or VoIP software
+ * settings document.
+ * CP parameter: MEDIAQOS.
+ */
+ TInt32 iMediaQoS;
+
+ /* In band. See w9013.txt or VoIP software settings document.
+ * CP parameter: NODTMFIB
+ */
+ TInt32 iDTMFInBand;
+
+ /* Out-of-band. See w9013.txt or VoIP software settings document.
+ * CP parameter: NODTMFOOB.
+ */
+ TInt32 iDTMFOutBand;
+
+ /* VoIP id as descriptor to be returned by the SaveData method to the
+ * framework via adapter SaveDataL.
+ * Own.
+ */
+ HBufC8* iSavedProfileId;
+
+ /**
+ * Secure call preference. See w9013.txt or VoIP software settings
+ * document.
+ */
+ TInt iSecureCallPref;
+
+ /**
+ * RTCP, Real-Time Control Protocol reporting. See w9013.txt or VoIP
+ * software settings document.
+ */
+ TInt iRTCP;
+
+ /**
+ * SIP VoIP User Agent header: terminal type display. See w9013.txt or
+ * VoIP software settings document.
+ */
+ TInt iUAHTerminalType;
+
+ /**
+ * SIP VoIP User Agent header WLAN MAC address display. See w9013.txt
+ * or VoIP software settings document.
+ */
+ TInt iUAHWLANMAC;
+
+ /**
+ * SIP VoIP User Agent header: free string. See w9013.txt or VoIP
+ * software settings document.
+ * Own.
+ */
+ HBufC* iUAHString;
+
+ /**
+ * Profile locked to IAP. See w9013.txt or VoIP software settings
+ * document.
+ */
+ TInt iProfileLockedToIAP;
+
+ /**
+ * VoIP plugin UID. See w9013.txt or VoIP software settings document.
+ */
+ TInt iVoIPPluginUid;
+
+ /**
+ * Allow VoIP over WCDMA. See w9013.txt or VoIP software settings
+ * document.
+ */
+ TInt iAllowVoIPOverWCDMA;
+
+ /**
+ * Number of meaningful VoIP digits for call identification.
+ * See w9013.txt.
+ */
+ TInt iVoIPDigits;
+
+ /**
+ * Ignore domain part of address (URI) for VoIP calls rule.
+ * See w9013.txt.
+ */
+ TInt iDomainPartIgnoreRule;
+
+ /**
+ * Flag to prevent set vmbx sip id if no vmbx settings are used.
+ */
+ TBool iVmbxSettingsExist;
+
+ /**
+ * Whether or not to add user=phone to all numbers.
+ * See w9013.txt.
+ */
+ TInt32 iAddUserPhoneToAllNumbers;
+
+ /**
+ * Connectivity test call address in registering.
+ * See w9013.txt.
+ * Own.
+ */
+ HBufC* iSIPConnTestAddress;
+
+ /**
+ * Absolute URI for service provider bookmark.
+ * See w9013.txt.
+ * Own.
+ */
+ HBufC* iServiceProviderBookmark;
+
+ /**
+ * The minimum allowed value for the session timer.
+ * See w9013.txt.
+ */
+ TInt32 iSIPMinSE;
+
+ /**
+ * The session interval for a SIP session.
+ * See w9013.txt.
+ */
+ TInt32 iSIPSessionExpires;
+
+ /**
+ * VoiceMailBox: MWI-URI.
+ * See w9013.txt.
+ * Own.
+ */
+ HBufC* iIPVoiceMailBoxURI;
+
+ /**
+ * VoiceMailBox: VoiceMailBox listening address.
+ * See w9013.txt.
+ * Own.
+ */
+ HBufC* iVmbxListenAddress;
+
+ /**
+ * VoiceMailBox: Interval for sending re-SUBSCRIBE.
+ * See w9013.txt.
+ */
+ TInt32 iReSubscribeInterval;
+
+ /**
+ * VoiceMailBox: NAPDEF.
+ * See w9013.txt.
+ * Not own.
+ */
+ CWPCharacteristic* iNapDef;
+
+ /**
+ * VoiceMailBox: IAP ID.
+ * See w9013.txt.
+ */
+ TUint32 iVmbxIapId;
+
+ /**
+ * URI to branding data xml.
+ * See w9013.txt
+ * Own.
+ */
+ HBufC* iBrandingDataAddress;
+
+ /**
+ * Auto accept buddy presence subscription request.
+ * see w9013.txt.
+ */
+ TInt32 iAutoAcceptBuddyRequest;
+
+ /**
+ * Auto enable state of service.
+ * see w9013.txt.
+ */
+ TInt32 iAutoEnableService;
+
+ /**
+ * TO-NAPID value.
+ * See w9013.txt
+ * Own.
+ */
+ HBufC8* iToNapId;
+
+ /**
+ * SIP profile ID for VoIP profile.
+ */
+ TUint32 iSipId;
+
+ /**
+ * SCCP profile ID for VoIP profile.
+ */
+ TUint32 iSccpId;
+
+ /**
+ * SIP profile ID for VoiceMailBox.
+ */
+ TUint32 iVmbxSipId;
+
+ /**
+ * NATFW profile ID for VoIP profile.
+ */
+ TUint32 iNatFwId;
+
+ /**
+ * Presence settings ID for service settings.
+ */
+ TUint32 iPresenceId;
+
+ /**
+ * Boolean for telling if SIP ID is already set.
+ */
+ TBool iSipIdSet;
+
+ /**
+ * Boolean for telling if SCCP ID is already set.
+ */
+ TBool iSccpIdSet;
+
+ /**
+ * Boolean for telling if VMBX SIP ID is already set.
+ */
+ TBool iVmbxSipIdSet;
+
+ /**
+ * Boolean for telling if NATFW ID is already set.
+ */
+ TBool iNatFwIdSet;
+
+ /**
+ * Boolean for telling if Presence ID is already set.
+ */
+ TBool iPresenceIdSet;
+
+ /**
+ * TO-APPREF value under characteristic VOIPURIS.
+ * Own.
+ */
+ HBufC8* iVoipUrisToAppRef;
+
+ /**
+ * Indicates which NAT protocol should be used.
+ * see w9013.txt.
+ */
+ TInt32 iUsedNatProtocol;
+
+ /**
+ * Boolean for telling if SNAP ID is already set.
+ */
+ TBool iSnapIdSet;
+
+ /**
+ * SNAP profile ID for VoIP profile.
+ */
+ TUint32 iSnapId;
+
+ /**
+ * APPREF of this settings item.
+ * Own.
+ */
+ HBufC8* iAppRef;
+
+ /**
+ * Tells if IM is enabled or not.
+ */
+ TBool iImEnabled;
+ };
+
+#endif // CWPVOIPITEM_H
+
+// End of File