realtimenetprots/sipfw/ProfileAgent/Client/Api/sipprofile.h
changeset 0 307788aac0a8
child 9 1e1cc61f56c3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/ProfileAgent/Client/Api/sipprofile.h	Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,386 @@
+/*
+* Copyright (c) 2003-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:
+* Name        : sipprofile.h
+* Part of     : SIP Profile Client
+* Interface   : SDK API, SIP Profile API
+* The class providing profile data of SIP service provider
+* Version     : 1.0
+*
+*/
+
+
+
+#ifndef CSIPPROFILE_H
+#define CSIPPROFILE_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <e32std.h>
+#include <badesca.h>
+#include "sipregistrationcontext.h"
+#include "sipprofiletypeinfo.h"
+
+// FORWARD DECLARATIONS
+class CSIPConcreteProfile;
+class CSIPProfileRegistry;
+class CSIPProfileRegistryBase;
+
+/** 
+* SIP Profile ID which value is type of TUint32
+*/
+const TUint32 KSIPProfileId = 1;
+
+/** 
+* SIP Provider Name which value is type of TDesC8
+*/
+const TUint32 KSIPProviderName = 2;
+
+/** 
+* Access Point ID which value is type of TUint32
+*/
+const TUint32 KSIPAccessPointId = 3;
+
+/** 
+* Signaling compression (SigComp) which value is type of TBool. 
+* ETrue indicates that SigComp is enabled
+*/
+const TUint32 KSIPSigComp = 4;
+
+/** 
+* Security Negotiation which value is type of TBool. ETrue indicates that
+* Security Negotiation is enabled
+*/
+const TUint32 KSIPSecurityNegotiation = 5;
+
+/** 
+* Auto Registration which value is type of TBool. ETrue indicates that 
+* profile is enabled for auto registration
+*/
+const TUint32 KSIPAutoRegistration = 6;
+
+/** 
+* Defined user's address-of-record which value is type of TDesC8 
+*/
+const TUint32 KSIPUserAor = 7;
+
+/** 
+* Registration which value is type of TBool. ETrue indicates that
+* profile is registered 
+*/
+const TUint32 KSIPProfileRegistered = 8;
+
+/** 
+* Users's registered address-of-records which value is of type MDesC8Array.
+* Note that array will contain AORs only in case the profile is registered.
+*/
+const TUint32 KSIPRegisteredAors = 9;
+
+/** 
+* Negotiated security mechanism during registration procedure which value
+* is of type TDesC8.
+* Note that descriptor will contain value only in case the profile is 
+* registered.
+*/
+const TUint32 KSIPNegotiatedSecurityMechanism = 10;
+
+/** 
+* Default profile which value is type of TBool. 
+* ETrue indicates that profile is default  
+*/
+const TUint32 KSIPDefaultProfile = 11;
+
+/** 
+* "Contact" header parameters used during registration which value
+* is of type MDesC8Array. Each array element contains one "Contact"-header
+* parameter.
+*/
+const TUint32 KSIPContactHeaderParams = 12;
+
+/** 
+* The user's registered "Contact"-header including the whole value of the header
+* except for the header's name ("Contact:"). 
+* The value is of type TDesC8.
+* Note that the value is available only in case the profile is registered.
+*/
+const TUint32 KSIPRegisteredContact = 13;
+
+/** 
+* SNAP (Service Network Access Point) ID which value is type of TUint32.
+* This is an optional parameter. When this parameter is configured, 
+* KSIPAccessPointId has a meaningful value only when the profile is registered.
+* The value of KSIPSnapId must be greater than zero.
+*/
+const TUint32 KSIPSnapId = 14;
+
+/** 
+* A unique Contact-header's user-part 
+* generated automatically by the SIP implementation.
+* The value is of type TDesC8.
+* This parameter is read-only and 
+* trying to set it will fail with KErrAccessDenied.
+*/
+const TUint32 KSIPContactHeaderUser = 15;
+
+/** 
+* Sets the KSoIpTOS socket option (see in_sock.h) for 
+* all SIP signalling related to this profile.
+* The value is of type TUint32.
+*/
+const TUint32 KSIPSoIpTOS = 16;
+
+/**
+* Sets the Access Point Name.
+* This is an Optional Parameter. 
+* Access Point Name which value is type of TDesC8,
+*/
+const TUint32 KSIPAccessPointName = 17;
+
+/**
+ * Sets the SNAP Name.
+ * This is an Optional Parameter. 
+ * SNAP Name which value is type of TDesC8,
+*/
+const TUint32 KSIPSnapName = 18;
+
+/** 
+* Proxy Resolving Feature which is type TBool. 
+* ETrue indicates that Proxy Resolving is enabled
+*/
+const TUint32 KSIPResolveProxy = 19;
+
+/** 
+* SIP Registrar  
+*/
+const TUint32 KSIPRegistrar = 130;
+
+/** 
+* SIP Outbound Proxy
+*/
+const TUint32 KSIPOutboundProxy = 131;
+
+/** 
+* HTTP Digest user name which value is type of TDesC8 
+*/
+const TUint32 KSIPDigestUserName = 150;
+
+/** 
+* HTTP Digest realm which value is type of TDesC8
+*/
+const TUint32 KSIPDigestRealm = 151;
+
+/** 
+* SIP server's address which value is of type TDesC8
+*/
+const TUint32 KSIPServerAddress = 152;
+
+// CLASS DECLARATION
+/**
+* @publishedAll
+* @released
+*
+* Class contains profile information of particular SIP service
+* provider. Class provides functions for quering profile parameter
+* values.
+*  @lib sipprofilecli.lib
+*/
+class CSIPProfile: public CBase, public MSIPRegistrationContext
+    {    
+    public:  // Constructors and destructor
+        /**
+        * Destructor.
+        * @capability NetworkServices
+        */
+        IMPORT_C ~CSIPProfile();
+
+    public: // New functions
+        /**
+        * Gets profile type information
+        * @return profile type information
+        */
+        IMPORT_C const TSIPProfileTypeInfo& Type() const;
+
+        /** 
+        * Gets profile parameter
+        * @param aParam a parameter to get
+        * @param aVal on return will contain parameter value
+        * @return KErrNotFound if parameter was not found, KErrNone otherwise
+        */
+        IMPORT_C TInt GetParameter(TUint32 aParam, TDesC8 const *& aVal) const; 
+
+        /** 
+        * Gets profile parameter
+        * @param aParam a parameter to get
+        * @param aVal on return will contain parameter value
+        * @return KErrNotFound if parameter was not found, KErrNone otherwise
+        */
+        IMPORT_C TInt GetParameter(TUint32 aParam, TUint32& aVal) const;
+
+        /** 
+        * Gets profile parameter
+        * @param aParam a parameter to get
+        * @param aVal on return will contain parameter value
+        * @return KErrNotFound if parameter was not found, KErrNone otherwise
+        */
+        IMPORT_C TInt GetParameter(TUint32 aParam, TBool& aVal) const;
+
+        /** 
+        * Gets profile parameter
+        * @param aParam a parameter to get
+        * @param aVal on return will contain parameter value
+        * @return KErrNotFound if parameter was not found, KErrNone otherwise
+        */
+        IMPORT_C TInt GetParameter(TUint32 aParam, MDesC8Array const *& aVal) const;
+
+        /** 
+        * Gets profile parameter that is defined for a particular SIP server
+        * @param aServer a SIP server type
+        * @param aParam a parameter to get
+        * @param aVal on return will contain parameter value
+        * @return KErrNotFound if parameter was not found, KErrNone otherwise
+        */
+        IMPORT_C TInt GetParameter(TUint32 aServerType, TUint32 aParam, TDesC8 const *& aVal) const;
+
+    public: //Functions from base class
+        /**
+        * Tests if the registration context can be
+        * used for creating SIP messages/dialogs
+        * Profile can be used, when CSIPProfileRegistry::IsEnabled() == ETrue
+        * and Status() == ERegistered.
+        * @return ETrue if can be used, EFalse otherwise
+        * @internalComponent       
+        */
+        TBool IsContextActive() const;
+
+        /**
+        * 
+        * For internal use only
+        * @return context id
+        * @internalComponent        
+        */
+        TUint32 ContextId() const;
+        
+
+    public: //New functions
+
+        /**
+        * Two-phased constructor.
+        * @param aSIPRegistry a SIP profile client providing connection to SIP 
+        *         profile server.
+        */
+
+        static CSIPProfile* NewL(CSIPProfileRegistry* aSIPRegistry);
+
+        /**
+        * Two-phased constructor.
+        * @param aSIPRegistry a SIP profile client providing connection to SIP 
+        *         profile server.
+        * Constructs an object and adds the pointer to the cleanup stack;
+        */
+
+        static CSIPProfile* NewLC(CSIPProfileRegistry* aSIPRegistry);
+
+        /**
+        * Sets profiles enabled state
+        * @param aEnabled ETrue if enabled
+        */
+
+        void SetEnabled(TBool aEnabled);
+
+        /**
+        * Sets concrete profile that holds actual data 
+        * @param aProfile profile instance containing data
+        */
+
+        void SetConcreteProfile(CSIPConcreteProfile* aProfile);
+
+        /**
+        * Clears concrete profile that holds actual data 
+        */
+
+        void ClearConcreteProfile();
+
+        /**
+        * Gets concrete profile that holds actual data
+        * @return concrete profile holding data
+        */
+
+        CSIPConcreteProfile& ConcreteProfile();
+
+        /**
+        * Gets concrete profile that holds actual data
+        * @return concrete profile holding data
+        */
+
+        const CSIPConcreteProfile& ConcreteProfile() const;
+
+        /**
+        * Checks if the profile is enabled
+        * @return ETrue if enabled, EFalse otherwise
+        */
+
+        TBool IsEnabled() const;
+
+        /**
+        * Gets last occurred error during registration
+        * @return last occurred error code, KErrNone if no error
+        */
+        TInt LastRegistrationError() const;
+
+        /**
+        * sets pointer to registry for profile
+        */
+        void SetRegistry(CSIPProfileRegistryBase* aRegistry);
+        
+        /**
+        * Clears pointer to registry from profile
+        */
+        void ClearRegistry();
+		
+	/**
+	* gets the Default SNAP ID from the Connectivity Settings
+	*/
+
+	    void DefaultSNAPL(TUint32& aSnapId) const;
+        
+    protected:
+
+        /**
+        * Constructor. 
+        */                
+        CSIPProfile(CSIPProfileRegistryBase* aRegistry);
+        
+        /**
+        * 2nd phase constructor. 
+        */                
+        void ConstructL();
+
+    protected:
+    
+        /**
+        * @internalComponent
+        */    
+        CSIPConcreteProfile* iSIPProfile;
+        
+        /**
+        * @internalComponent
+        */        
+        CSIPProfileRegistryBase* iSIPProfileRegistry;
+
+    private:
+    
+        TBool iEnabled;
+    };
+
+#endif // CSIPPROFILE_H