voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/inc/voipxmlvoiphandler.h
branchRCL_3
changeset 22 d38647835c2e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/inc/voipxmlvoiphandler.h	Wed Sep 01 12:29:57 2010 +0100
@@ -0,0 +1,397 @@
+/*
+* 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 handler for VoIP XML processor
+*
+*/
+
+
+#ifndef VOIPXMLVOIPHANDLER_H
+#define VOIPXMLVOIPHANDLER_H
+
+#include <e32base.h>
+#include <sipprofileregistryobserver.h>
+#include <crcseprofileentry.h>
+#include <crcseaudiocodecentry.h>
+
+class CSPSettings;
+class CRCSEProfileRegistry;
+class CRCSEAudioCodecRegistry;
+class CRCSEProfileEntry;
+class CSPProperty;
+
+typedef CRCSEAudioCodecEntry::TOnOff TCodecOnOff;
+typedef CRCSEProfileEntry::TOnOff TEntryOnOff;
+
+struct TTemporaryCodec
+    {
+    /**
+     * Codec name.
+     */
+    HBufC* iName;
+    /**
+     * Jitter buffer size.
+     */
+    TInt iJitterBuffer;
+    /**
+     * Octet-align.
+     */
+    TCodecOnOff iOctetAlign;
+    /**
+     * PTime value.
+     */
+    TInt iPtime;
+    /**
+     * MaxPtime value.
+     */
+    TInt iMaxPtime;
+    /**
+     * Mode-set values.
+     */
+    RArray<TUint32> iModeSet;
+    /**
+     * Mode-change-period value.
+     */
+    TInt iModeChangePeriod;
+    /**
+     * Mode-change-neighbor value.
+     */
+    TCodecOnOff iModeChangeNeighbor;
+    /**
+     * Max-red value.
+     */
+    TInt iMaxRed;
+    /**
+     * VAD value.
+     */
+    TCodecOnOff iVad;
+    /**
+     * Annexb value.
+     */
+    TCodecOnOff iAnnexb;
+    };
+
+struct TSpSettings
+    {
+    /**
+     * Tells if buddy requests are automatically accepted.
+     */
+    TBool iAutoAcceptBuddies;
+    /**
+     * Provider bookmark URL.
+     */
+    HBufC* iProviderUrl;
+    /**
+     * Branding URI.
+     */
+    HBufC* iBrandingUri;
+    /**
+     * Tells if the service will be automatically enabled.
+     */
+    TBool iAutoEnable;
+    /**
+     * Message Waiting Indicator URI for voice mailbox.
+     */
+    HBufC* iMwiUri;
+    /**
+     * Listening URI for voice mailbox.
+     */
+    HBufC* iListeningUri;
+    /**
+     * Re-subscribe interval for voice mailbox.
+     */
+    TInt iResubrcribe;
+    /**
+     * Tells if SIP IM is enabled. IM will be set as enabled only if 
+     * a presence ID is received via LinkSettings() method.
+     */
+    TBool iEnableSipIm;
+    /**
+     * Brand ID.
+     */
+    HBufC* iBrandId;
+    };
+
+/**
+*  VoIP handler class.
+*  Handles VoIP related settings.
+*
+*  @lib voipxmlprocessor.lib
+*  @since S60 v5.0
+*/
+class CVoipXmlVoipHandler : public CBase, public MSIPProfileRegistryObserver
+    {
+#ifdef _DEBUG
+    friend class UT_CVoipXmlVoipHandler;
+    friend class UT_CVoipXmlParser;
+    friend class UT_CVoipXmlParamHandler;
+#endif
+
+public:
+
+    /**
+     * Two-phased constructor.
+     */
+    static CVoipXmlVoipHandler* NewL();
+
+    /**
+     * Destructor.
+     */
+    virtual ~CVoipXmlVoipHandler();
+
+    /**
+     * Sets VoIP setting.
+     *
+     * @since S60 v5.0
+     * @param aType Type of setting (VoIP 'core', vmbx or codec)
+     * @param aParam Parameter to be set.
+     * @param aValue Value of the setting.
+     */
+    void SetSetting( TInt aType, TInt aParam, const TDesC& aValue );
+
+    /**
+     * Stores settings to RCSE.
+     *
+     * @since S60 v5.0
+     * @return KErrNone if successful,
+     *         KErrNotSupported if no settings to be stored,
+     *         KErrCompletion if settings could not be stored.
+     */
+    TInt StoreSettings();
+
+    /**
+     * Returns the service ID.
+     *
+     * @since S60 v5.0
+     * @return VoIP service ID.
+     */
+    TUint32 SettingsId();
+
+    /**
+     * Method to inform the handler that currently deployed settings
+     * have ended. This way we will know when a codec is ready to be
+     * put to RCSE.
+     *
+     * @since S60 v5.0
+     * @param aType Type of settings.
+     */
+    void SettingsEnd( TInt aType );
+
+    /**
+     * Gives linkage information.
+     *
+     * @since S60 v5.0
+     * @param aType Type of settings.
+     * @param aSettingsId Settings ID.
+     */
+    void LinkSettings( TInt aType, TUint32 aSettingsId );
+
+    /**
+     * Finalizes settings, i.e. sets all the settings that are bound to
+     * settings linkage (e.g. SIP User-Agent header and 
+     * settings stored in SPSettings).
+     *
+     * @since S60 v5.0
+     * @return KErrNone if successful,
+     *         KErrCompletion if settings could not be finalized.
+     */
+    TInt FinalizeSettings();
+
+    /**
+     * Returns the service tab ID.
+     *
+     * @since S60 v5.0
+     * @return Service tab ID.
+     */
+    TUint32 ServiceTabIdL();
+
+protected:
+
+// from base class MSIPProfileRegistryObserver
+
+    /** 
+     * From MSIPProfileRegistryObserver 
+     * SIP profile information event.
+     *
+     * @since S60 v5.0
+     * @param aSIPProfileId SIP profile ID.
+     * @param aEvent Type of SIP event
+     */
+    void ProfileRegistryEventOccurred( TUint32 /*aSIPProfileId*/, 
+        TEvent /*aEvent*/ );
+
+    /**
+     * From MSIPProfileRegistryObserver
+     * An asynchronous error has occurred related to SIP profile.
+     *
+     * @since S60 v5.0
+     * @param aSIPProfileId SIP profile ID.
+     * @param aError Error code.
+     */
+    void ProfileRegistryErrorOccurred( TUint32 /*aSIPProfileId*/,
+        TInt /*aError*/ );
+
+private:
+
+    /**
+     * Sets VoIP core setting to temporary storage.
+     *
+     * @param aParam Parameter to be set.
+     * @param aValue Value of the setting.
+     * @since S60 v5.0
+     */
+    void SetCoreSettingL( TInt aParam, const TDesC& aValue );
+
+    /**
+     * Sets codec setting to temporary storage.
+     *
+     * @param aParam Parameter to be set.
+     * @param aValue Value of the setting.
+     * @since S60 v5.0
+     */
+    void SetCodecSettingL( TInt aParam, const TDesC& aValue );
+
+    /**
+     * Sets voice mailbox setting to temporary storage.
+     *
+     * @param aParam Parameter to be set.
+     * @param aValue Value of the setting.
+     * @since S60 v5.0
+     */
+    void SetVmbxSettingL( TInt aParam, const TDesC& aValue );
+
+    /**
+     * Validates profile name and modifies it if necessary.
+     *
+     * @since S60 v5.0
+     * @param aName Name to be validated.
+     */
+    void ValidateProfileNameL( TDes& aName );
+
+    /**
+     * Sets temporary codec to RCSE.
+     *
+     * @since S60 v5.0
+     */
+    void SetCodecToRcseL();
+
+    /**
+     * Reset temporary codec settings (iCurrentCodec)
+     *
+     * @since S60 v5.0
+     */
+    void ResetTempCodec( TBool aCloseArray = EFalse );
+
+    /**
+     * Resets temporary service provider settings (iSpSettings)
+     * 
+     * @since S60 v5.0
+     */
+    void ResetTempSpSettings();
+
+    /**
+     * Sets SIP related VoIP settings (links VoIP profile to SIP and sets
+     * SIP User-Agent header).
+     * 
+     * @since S60 v5.0
+     * @param aSipId SIP settings ID.
+     */
+    void SetSipInfoL( TUint32 aSipId );
+
+    /**
+     * Sets SPSettings to service table.
+     *
+     * @since S60 v5.0
+     */
+    void SetSpSettingsL();
+
+    /**
+     * Adds default codec set to iEntry.
+     *
+     * @since S60 v5.0
+     */
+    void AddDefaultCodecsL();
+
+    /**
+     * Sets the service as default service and preferred telephony as PS.
+     *
+     * @since S60 v5.1
+     */
+    void SetAsDefaultL();
+
+private:
+
+    CVoipXmlVoipHandler();
+    void ConstructL();
+
+private:
+
+    /**
+     * RCSE profile registry.
+     * Own.
+     */
+    CRCSEProfileRegistry* iRegistry;
+
+    /**
+     * RCSE audio codec registry
+     * Own.
+     */
+    CRCSEAudioCodecRegistry* iCodecRegistry;
+
+    /**
+     * RCSE profile entry.
+     * Own.
+     */
+    CRCSEProfileEntry* iEntry;
+
+    /**
+     * Tells if any settings have been set to temporary profile.
+     */
+    TBool iSettingsSet;
+
+    /**
+     * VoIP service ID.
+     */
+    TUint32 iServiceId;
+
+    /**
+     * Current codec that is being modified.
+     */
+    TTemporaryCodec iCurrentCodec;
+
+    /**
+     * SPSettings that are temporarily stored and .
+     */
+    TSpSettings iSpSettings;
+
+    /**
+     * Presence settings ID. This is received in LinkSettings method and
+     * will be stored to SPSettings in FinalizeSettings method.
+     */
+    TUint32 iPresenceId;
+
+    /**
+     * Destination (SNAP) ID. This is received in LinkSettings method and
+     * will be stored to SPSettings in FinalizedSettings method.
+     */
+    TUint32 iDestinationId;
+
+    /**
+     * Tells if the service is to be set as default service.
+     */
+    TBool iDefault;
+    };
+
+#endif // VOIPXMLVOIPHANDLER_H
+
+//  End of File