diff -r f742655b05bf -r d38647835c2e voipplugins/voipadapters/cpvoipadapter/inc/CWPVoIPItem.h --- /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 // CBase. +#include // 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& 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& aTerminalType ) const; + + /** + * Get WLAN MAC address for SIP User Agent Header. + * + * @since S60 3.0 + * @param aMac WLAN MAC address. + */ + void GetWlanMacAddressL( TBuf& 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 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 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