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