sipvoipprovider/inc/svputility.h
branchRCL_3
changeset 21 f742655b05bf
parent 20 65a3ef1d5bd0
child 22 d38647835c2e
--- a/sipvoipprovider/inc/svputility.h	Thu Aug 19 09:45:22 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,502 +0,0 @@
-/*
-* Copyright (c) 2006-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:  Static utility functions for SVP.
-*
-*/
-
-
-
-#ifndef SVPUTILITY_H
-#define SVPUTILITY_H
-
-#include <e32base.h>
-#include <mceaudiostream.h>
-#include <mcedtmfobserver.h> // dtmf
-#include <mccpcallobserver.h>
-#include <mceinsession.h> 
-#include <ccpdefs.h>    // error definitions
-#include <mccpdtmfobserver.h> // dtmf
-
-#include "cipappphoneutils.h" // CIpAppPhoneUtils, KSVPMaxTerminalTypeLength
-#include "svpconsts.h"
-#include "svputdefs.h"
-
-// FORWARD DECLARATIONS
-class CRCSEProfileEntry;
-class CRCSEAudioCodecEntry;
-class CMceRtpSource;
-class CSIPProfile;
-class CVoipEventLog;
-class CVoipErrorEntry;
-
-/**
- *  Static utility function for SVP usage.
- *
- *  @lib 
- *  @since S60 3.2
- */
-class CSVPUtility : public CBase
-    {
-
-public: 
-    
-    /**
-    * Two-phased constructor.
-    */
-    static CSVPUtility* NewL();
-    
-    /**
-    * Destructor.
-    */
-    virtual ~CSVPUtility();
-
-
-public: // new methods
-    
-    /**
-     * Sets keep alive payload and timer when CN is provisioned
-     * @since Series 60 3.2
-     * @param aAudioStream Representation of Mce audio stream
-     * @param aKeepAliveValue Keep-alive timer value
-     * @return None
-     */
-    void SetCNKeepAliveL( CMceAudioStream& aAudioStream,
-                          TInt aKeepAliveValue );
-    /**
-     * Sets keep alive payload and timer when CN is not provisioned
-     * @since Series 60 3.2
-     * @param aAudioStream Representation of Mce audio stream
-     * @param aKeepAliveValue Keep-alive timer value
-     * @return None
-     */
-    void SetKeepAliveL( CMceAudioStream& aAudioStream,
-                        TInt aKeepAliveValue );
-    
-    /**
-     * Sets keep alive payload and timer when CN is not provisioned
-     * @since Series 60 3.2
-     * @param aStream Checks if CN codec is present in stream
-     * @return None
-     */
-    TBool IsComfortNoise( CMceAudioStream& aStream );
-    
-    /**
-    * Set codecs for given stream in Mo call case
-    * Set codecs settings from database
-    * Compares database codecs to those supported by Mce
-    * Leave with value KErrNotFound if codecs not found. 
-    * @since Series 60 3.2
-    * @param aVoIPProfileId VoIP profile ID number 
-    * @param audioInStream Representation of Mce audio stream
-    * @param aKeepAliveValue Keep-alive timer value
-    * @return None
-    */
-    void SetAudioCodecsMOL( TUint32 aVoIPProfileId, 
-                            CMceAudioStream& audioInStream,
-                            TInt aKeepAliveValue );
-
-    /**
-    * Set codecs for given stream in Mt call case
-    * Compares database codecs to those supported by Mce. 
-    * @since Series 60 3.2
-    * @param aVoIPProfile VoIP profile entry
-    * @param audioInStream Representation of Mce audio stream
-    * @param aKeepAliveValue Keepalive timer value
-    * @return None
-    */
-    void SetAudioCodecsMTL( CRCSEProfileEntry& aVoIPProfile, 
-                            CMceMediaStream& aAudioStream,
-                            TInt aKeepAliveValue,
-                            TBool aSessionUpdateOngoing = EFalse );
-
-    /**
-    * Sets G711 codecs (PCMA & PCMU) for emergency call when there is no VoIP 
-    * profile, i.e. calling emergency by IAP ID only. RCSE default profile 
-    * values are used when needed.
-    * @since Series 60 3.2
-    * @param audioInStream   Audio stream
-    * @param aKeepAliveValue Keep-alive value
-    * @param aVoipProfileId VoIP profile ID, KErrNotFound, if no VoIP profile
-    */
-    void SetAudioCodecsForEmergencyL( CMceAudioStream& aAudioInStream,
-                                      TInt aKeepAliveValue, 
-                                      TInt32 aVoipProfileId = KErrNotFound );
-
-    /**
-    * Matches Mce and Ccp errors 
-    * @since S60 3.2
-    * @param aErrorCode Error code - may be modified
-    * @param aTone Contains tone associated to possible error condition.
-    * @return TCCPError CCP error
-    */                             
-    TCCPError GetCCPError( TInt& aErrorCode, TCCPTone& aTone ) const;
-    
-                                         
-    /**
-     * Write mce/sip errors to the voip event logger
-     * @since S60 3.2
-     * @param aErrorCode Error code
-     * @param aSipProfileId Id of the SIP profile
-     * @param aRemoteURI Address of the remote party
-     * @param aMethod Failed method e.g. INVITE          
-     */                             
-    void LogVoipEventL( TInt aErrorCode, 
-                        TUint32 aSipProfileId,
-                        const TDesC& aRemoteURI,
-                        const TDesC& aMethod ) const;
-    
-        
-    /**
-    * Matches Mce and CCP DTMF events 
-    * @since S60 3.2
-    * @param aEvent Event received from Mce DTMF observer
-    * @param aDtmfStringSengin Flag needed to determine which events are 
-    *                          sent to client application
-    * @return TCCPDtmfEvent Matched CCP DTMF event
-    */ 
-    MCCPDTMFObserver::TCCPDtmfEvent GetDtmfEvent( MMceDtmfObserver::TMceDtmfEvent aEvent,
-                                                  TBool aDtmfStringSending );
-         
-   
-    /**
-    * Set provisioning data for VoIP profile.
-    * @param aVoIPProfile VoIP profile entry.
-    * @param aUserAgentHeaders On completion, contains collected user-agent header.
-    */
-    void SetProvisioningDataL( CRCSEProfileEntry& aVoipProfile, 
-                               CDesC8Array& aUserAgentHeaders,
-                               TUint32& aSecurityStatus,
-                               TBuf<KSVPMaxTerminalTypeLength>& aTerminalType,
-                               TBuf<KSVPWlanMacAddressLength>& aWlanMACAddress ) const;
-    /**
-    * Get the terminal type at startup.
-    * @since Series60 3.2
-    * @param aTerminalType
-    */                                                     
-    void GetTerminalTypeL( TBuf< KSVPMaxTerminalTypeLength >& aTerminalType );
-    
-    /**
-    * Get the Wlan MAC address at startup.
-    * @since Series 60 3.2
-    * @param aWlanMACAddress.
-    */
-    static void GetWlanMACAddressL( TBuf< KSVPWlanMacAddressLength >& aWlanMACAddress );
-    
-    /**
-    * Resolves the security mechanism, checks if TLS or SIPS is used in profile
-    * @since Series 60 3.2
-    * @param aProfile SIP profile which is used to call
-    * @param aSecureCallPreference Secure call preference of the call ( 0, 1 or 2 ) 
-    */
-    void ResolveSecurityMechanismL( const CSIPProfile& aProfile,
-                                    TUint32& aSecureCallPreference );
-
-    /**
-    * Check Calling Line Identification Restriction (CLIR) value.
-    * @since Series 60 3.2
-    * @return ETRue if CLIR is ON, otherwise EFalse.
-    */
-    TBool IsCLIROnL() const;
-
-    /**
-    * Set fromheader.
-    * If CLIR is on add anonymous info according sec status, otherwise nothing
-    * @since Series 60 3.2
-    * @return HBufC8* constructed fromheader.
-    */
-    HBufC8* SetMoFromHeaderLC( TUint aSecurityStatus );
-    
-	
-	/**
-    * Adds P-Preferred-Identity to user headers.
-    * @since Series 60 3.2
-	* @param aUserAgentHeaders user agent headers.
-	* @param aUri own sip uri.
-    * @return void
-    */
-    void AddPPreferredIdentityToUserHeadersL( 
-        CDesC8Array& aUserAgentHeaders, const TDesC8& aUri  );
-    
-    /**
-     * Updates the jitterbuffer size to given RTP source. Function resets
-     * the iJitterBufferSize member, which is got when finding MO/MT codecs
-     * in AppendCapabilitiesDataL. If iJitterBufferSize = 0, then default
-     * 10 frame jitterbuffer is used.
-     * @since S60 v3.2
-     * @param aRtpSource RTP source which to update.
-     * @return void
-     */
-    void UpdateJitterBufferSizeL( CMceRtpSource& aRtpSource );
-    
-    
-    /**
-     * Gets DTMF mode, Inband mode returns EFalse and Outband mode ETrue
-     * @since Series 60 3.2
-     * @return TBool EFalse for Inband, ETrue for Outband
-     */
-    TBool GetDTMFMode();
-    
-    /**
-     * Sets DTMF mode. This function is used when audiostreams have been
-     * studied about the inband/outband DTMF status.
-     * @since S60 v3.2
-     * @param aOutbandEnabled. ETrue if outband DTMF is enabled.
-     * @return void
-     */
-    void SetDtmfMode( TBool aOutbandEnabled );
-    
-    /**
-     * Gets keep-alive timer value by IAP id
-     * @since S60 v3.2
-     * @param aIapId IAP id
-     * @param aKeepAliveValue Keep-alive timer value
-     * @return ETrue if value found, else EFalse
-     */
-    TBool GetKeepAliveByIapIdL( TUint32 aIapId, TInt& aKeepAliveValue ) const;
-    
-    /**
-     * Gets keep-alive timer value by AOR
-     * @since S60 v3.2
-     * @param aAor AOR
-     * @param aKeepAliveValue Keep-alive timer value
-     * @return ETrue if value found, else EFalse
-     */
-    TBool GetKeepAliveByAORL( const TDesC8& aAor,
-        TInt& aKeepAliveValue ) const;
-
-     
-private: // new methods
-
-    /**
-     * Checks if outband DMTF is offerd  
-     * @Since S60 3.2
-     * @param aAudioStream Mce audiostream
-     * @return TBool, ETrue -> OB offered
-     */
-    TBool DtmfOBInOffer( CMceAudioStream& aAudioStream );
-    
-    /**
-     * Sets DTMF specific settings for audiostream
-     * @Since S60 v3.2
-     * @param aVoIPProfile Used VoIP profile
-     * @param aAudioStream Audiostream, used here to set codec order num to tel-ev.
-     * @return void
-     * @leave system error if setting fails
-     */ 
-    void SetDtmfL( const CRCSEProfileEntry& aVoIPProfile, 
-                  CMceAudioStream&  aAudioStream);
-    
-    /**
-    * Method for matching ISO-639-1 language tags to Symbian language codes
-    * @since Series 60 3.2
-    * @param aLanguageCode Symbian language code
-    * @param aLangMatch Language tag corresponding given Symbian language code
-    */
-    static void MatchLanguageTags( TInt aLanguageCode,
-        TDes& aLangMatch );
- 
-
-    /**
-    * Get audio codecs from database for certain VoIP profile.
-    * @since Series60 3.2
-    * @param aProfile RCSE profile where to search the codecs ID's.
-    * @param aCodecIds 
-    */                               
-    void GetCodecIdsByVoIPProfileIdL( 
-        const CRCSEProfileEntry& aProfile,
-        RArray< TUint32 >& aCodecIds ) const;
-    /**
-     * Set audio codec values and append new codec in array.
-     * @since Series60 3.2 
-     * @param aAudioInStream Representation of Mce audio stream
-     * @param aVoIPProfile VoIP profile entry
-     * @param aCodecProfile Audio codec entry
-     * @return void
-     */                                                              
-    void MoCallCapabilitiesL( CMceAudioStream& aAudioInStream, 
-                              const CRCSEProfileEntry& aVoIPProfile,
-                              const CRCSEAudioCodecEntry& aCodecProfile );
-                                
-    /**
-     * Set AMR related provisioned parameters.
-     * @since Series60 3.2 
-     * @param aAudioInStream Representation of Mce audio stream
-     * @param aCodecProfile Audio codec entry
-     * @param aCodecNumber AMR codec number in codec array
-     * @return void
-     */                                                              
-    void SetAMRParameters( CMceAudioStream& aAudioInStream, 
-                           const CRCSEAudioCodecEntry& aCodecProfile,
-                           TInt aCodecNumber );
-
-    /**
-     * Set audio codec values and append new codec in array.
-     * @since Series60 3.2 
-     * @param aAudioInStream Representation of Mce audio stream
-     * @param aVoIPProfile VoIP profile entry
-     * @param aCodecProfile Audio codec entry
-     * @return void
-     */                            
-    void MtCallCapabilitiesL( CMceAudioStream& aAudioInStream, 
-                              const CRCSEProfileEntry& aVoIPProfile,
-                              const CRCSEAudioCodecEntry& aCodecProfile );
-                                       
-    /**
-    * Removes unnecessary codecs from Mce
-    * Codecs that are supported by Mce, but are found from database
-    * @since Series60 3.2
-    * @param aAudioInStream Representation of Mce audio stream
-    * @return None
-    */                                  
-    void RemoveUnnecessaryCodecsL( CMceAudioStream& aAudioInStream );
-     
-    /**
-     * Method for setting codec order priority in offer.
-     * @since S60 v3.2
-     * @param aAudioStream Representation of Mce audio stream.
-     * @return void
-     */       
-    void SetDtmfCodecOrderL( CMceAudioStream& aAudioStream ) const;
-    
-    /**
-     * Method for setting CN on for PCMA, PCMU and ILBC if 
-     * codecs provisioned and offered in incoming call
-     * @since S60 v3.2
-     * @param aAudioStream Representation of Mce audio stream.
-     * @return void
-     */     
-    void SetComfortNoiseL( CMceAudioStream& aAudioStream );
-   
-    /**
-     * Method for checking and setting red media attribute
-     * @since S60 v3.2
-     * @param aAudioStream Representation of Mce audio stream.
-     * @return void
-     */     
-    void SetRedundancyL( CMceAudioStream& aAudioStream );
-   
-    /**
-     * Sets Media level Quality Of Service. This is IP level type of service or
-     * DSCP value.
-     * @since S60 v3.2
-     * @param aQosValue Media QoS value in settings.
-     * @param aSession MCE session into which set the media QoS.
-     * @return void
-     */
-    void SetMediaQoSL( TUint32 aQosValue, CMceSession* aSession ) const;
-    
-    /**
-     * Enables or disables RTCP sending from RTP sinks in given media stream.
-     *
-     * @since S60 v3.2
-     * @param aRtcp RTCP setting value read from RCSE
-     * @param aStream Stream whose RTP sinks to update
-     * @return void
-     */
-    void CheckRtcpSettingL( TUint32 aRtcp, CMceMediaStream& aStream,
-                            TBool aSessionUpdateOngoing = EFalse ) const;
-    
-    /**
-      * Method for setting VAD (Voice Activity Detection) for provisioned and
-      * bound codecs.  
-      * @since S60 v3.2
-      * @param aInAudioStream Representation of Mce audio stream
-      * @param aVADSetting value of VAD setting
-      * @param aCodecName codec name
-      */
-    void SetVADL( CMceAudioStream& aInAudioStream, 
-                            TBool aVADSetting,
-                            const TDesC8& aCodecName );
-
-     /**
-     * Set AMR-WB (Adaptive Multi-Rate Wideband) related provisioned parameters.
-     * @since S60 v3.2
-     * @param aAudioInStream Representation of Mce audio stream.
-     * @param aCodecProfile Stored audio codec entry in RCSE.
-     * @param aCodecNumber Codec number in codec array.
-     */                                                              
-    void SetAmrWbParameters( CMceAudioStream& aAudioInStream, 
-                           const CRCSEAudioCodecEntry& aCodecProfile,
-                           TInt aCodecNumber );   
-
-private: // data
-
-
-    /**
-     * second-phase constructor
-     */
-    void ConstructL();
-    
-    /**
-     * C++ default constructor.
-     */
-    CSVPUtility();
-    
-    /**
-     * Flags to determine which codecs are matched
-     */
-    TBool iAMR;
-    TBool iILBC;
-    TBool iPCMU;
-    TBool iPCMA;
-    TBool iG729;
-    TBool iCN;
-    TBool iRed;
-    TBool iAMRWB;
-    
-    /**
-     * Flag which determines which DMTF mode is used
-     * ETrue => Outbound, EFalse => Inbound
-     */
-    TBool iTelEv;
-    
-    /**
-     * codec preference order
-     */
-    TInt iPreferredCodec;
-    
-    /**
-     * Codec match flag, determines if codec matched in Mt call case
-     */
-    TBool iCodecMatched;
-   
-    /** 
-     * Flag to determine whether DTMF settin is read already
-     */ 
-    TBool iDTMFChecked;
-    
-    /**
-     * Jitterbuffer length found from codec settings.
-     */
-    TInt32 iJitterBufferSize;
-    
-    /**
-     * Keeps track in Mt call case when matching codecs
-     */
-    TInt iRoundIndex;
-    
-    /**
-     * instance of the VoIP event logger class.
-     * own.
-     */
-    CVoipEventLog* iVoipEventLogger;
-
-private:
-
-    // For testing
-    SVP_UT_DEFS
-   
-    };
-
-#endif // SVPUTILITY_H