diff -r f742655b05bf -r d38647835c2e voipplugins/voipadapters/dmvoipadapter/inc/nsmldmvoipadapter.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/voipplugins/voipadapters/dmvoipadapter/inc/nsmldmvoipadapter.h Wed Sep 01 12:29:57 2010 +0100 @@ -0,0 +1,646 @@ +/* +* Copyright (c) 2002-2008 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: Device Management VoIP Settings Adapter +* +*/ + + +#ifndef __NSMLDMVOIPADAPTER_H__ +#define __NSMLDMVOIPADAPTER_H__ + +// INCLUDES +#include +#include + +// CONSTANTS +const TUint KMaxTerminalTypeLength = 64; +const TUint KWlanMacAddressLength = 50; +const TUint KPhoneModelLength = 20; +const TInt KMaxUriLength = 64; +const TInt KMaxDebugPrintLength = 256; + +// CLASS DECLARATION +class CRCSEProfileRegistry; +class CRCSEProfileEntry; +class CRCSEAudioCodecRegistry; +class CRCSEAudioCodecEntry; +class MSIPProfileRegistryObserver; +class CSIPProfileRegistryObserver; +class CSIPManagedProfileRegistry; +class CSIPManagedProfile; +class CCoeEnv; +class CDMVoIPSPSettings; + +/** + * CNSmlDmVoIPAdapter + * ?other_description_lines + * + * @lib ?library + * @since Series 60_3.0 + */ +class CNSmlDmVoIPAdapter : public CSmlDmAdapter + { + #ifdef _DEBUG + /** + * Friend class for unit testing. + */ + friend class UT_CNSmlDmVoIPAdapter; + #endif + + public: + + static CNSmlDmVoIPAdapter* NewL( MSmlDmCallback* aDmCallback ); + + virtual ~CNSmlDmVoIPAdapter(); + + /** For setting telephony preference */ + enum TTelephonyPreference + { + ECSPreferred, + EPSPreferred + }; + + private: + +// From base class NSmlDmAdapter + + /** + * From CNsmlDmAdapter + * @since Series 60_3.0 + * @param aVersion for returning DDF version of adapter + */ + void DDFVersionL( CBufBase& aDDFVersion ); + + /** + * From CNsmlDmAdapter + * @since Series 60_3.0 + * @param aDDF for returning DDF structure of adapter + */ + void DDFStructureL( MSmlDmDDFObject& aDDF ); + + /** + * From CNsmlDmAdapter + * @since Series 60_3.0 + * @param aURI URI from dm-module + * @param aParentLUID luid mapping from dm-module + * @param aType object type from dm-module + * @param aStatusRef status from dm-module + */ + void UpdateLeafObjectL( + const TDesC8& aURI, + const TDesC8& aLUID, + const TDesC8& aObject, + const TDesC8& /*aType*/, + const TInt aStatusRef ); + + /** + * From CNsmlDmAdapter + * @since Series 60_3.0 + * @param aURI URI from dm-module + * @param aParentLUID luid mapping from dm-module + * @param aType object type from dm-module + * @param aStatusRef status from dm-module + */ + void UpdateLeafObjectL( + const TDesC8& /*aURI*/, + const TDesC8& /*aLUID*/, + RWriteStream*& /*aStream*/, + const TDesC8& /*aType*/, + TInt aStatusRef ); + + /** + * From CNsmlDmAdapter + * @since Series 60_3.0 + * @param aURI URI from dm-module + * @param aLUID luid mapping from dm-module + * @param aStatusRef status from dm-module + */ + void DeleteObjectL( + const TDesC8& aURI, + const TDesC8& aLUID, + const TInt aStatusRef ); + + /** + * From CNsmlDmAdapter + * @since Series 60_3.0 + * @param aURI URI from dm-module + * @param aLUID luid mapping from dm-module + * @param aType object type from dm-module + * @param aResultsRef results reference from dm-module + * @param aStatusRef status reference from dm-module + */ + void FetchLeafObjectL( + const TDesC8& aURI, + const TDesC8& aLUID, + const TDesC8& aType, + const TInt aResultsRef, + const TInt aStatusRef ); + + /** + * From CNsmlDmAdapter + * @since Series 60_3.0 + * @param aURI URI from dm-module + * @param aLUID luid mapping from dm-module + * @param CArrayFix previousURISegmentList from dm-module + * @param aResultsRef results reference from dm-module + * @param aStatusRef status reference from dm-module + */ + void ChildURIListL( + const TDesC8& aURI, + const TDesC8& aLUID, + const CArrayFix& aPreviousURISegmentList, + const TInt aResultsRef, + const TInt aStatusRef ); + + /** + * From CNsmlDmAdapter + * @since Series 60_3.0 + * @param aURI URI from dm-module + * @param aParentLUID luid mapping from dm-module + * @param aStatusRef status from dm-module + */ + void AddNodeObjectL( + const TDesC8& aURI, + const TDesC8& aParentLUID, + const TInt aStatusRef ); + + /** + * From CNsmlDmAdapter + * @since Series 60_3.0 + * @param ?arg1 ?description + * + */ + void ExecuteCommandL( + const TDesC8& aURI, + const TDesC8& aLUID, + const TDesC8& aArgument, + const TDesC8& aType, + const TInt aStatusRef ); + + /** + * From CNsmlDmAdapter + * @since Series 60_3.0 + * @param ?arg1 ?description + * + */ + void ExecuteCommandL( + const TDesC8& aURI, + const TDesC8& aLUID, + RWriteStream*& aStream, + const TDesC8& aType, + const TInt aStatusRef ); + + /** + * From CNsmlDmAdapter + * @since Series 60_3.0 + * @param ?arg1 ?description + * + */ + void CopyCommandL( + const TDesC8& aTargetURI, + const TDesC8& aTargetLUID, + const TDesC8& aSourceURI, + const TDesC8& aSourceLUID, + const TDesC8& aType, + TInt aStatusRef ); + + /** + * From CNsmlDmAdapter + * @since Series 60_3.0 + * @param ?arg1 ?description + * + */ + void FetchLeafObjectSizeL( const TDesC8& aURI, + const TDesC8& aLUID, + const TDesC8& aType, + TInt aResultsRef, + TInt aStatusRef ); + + /** + * From CNsmlDmAdapter + * @since Series 60_3.0 + * @param ?arg1 ?description + * + */ + void StartAtomicL(); + + /** + * From CNsmlDmAdapter + * @since Series 60_3.0 + * @param ?arg1 ?description + * + */ + void CommitAtomicL(); + + /** + * From CNsmlDmAdapter + * @since Series 60_3.0 + * @param ?arg1 ?description + * + */ + void RollbackAtomicL(); + + /** + * From CNsmlDmAdapter + * @since Series 60_3.0 + * @param ?arg1 ?description + * + */ + TBool StreamingSupport( TInt& aItemSize ); + + /** + * From CNsmlDmAdapter + * @since Series 60_3.0 + * @param ?arg1 ?description + * + */ + void StreamCommittedL(); + + /** + * From CNsmlDmAdapter + * @since Series 60_3.0 + * @param ?arg1 ?description + * + */ + void CompleteOutstandingCmdsL(); + + private: + + CNSmlDmVoIPAdapter( TAny* aEcomArguments ); + + void ConstructL(); + + /** + * Fetches object based on URI and LUID. + * @since Series 60_3.0 + * @param aURI URI of the object. + * @param aLUID LUID of the object. + * @param aObject The object. + * @return DM error status. + */ + CSmlDmAdapter::TError FetchObjectL( + const TDesC8& aURI, + const TDesC8& aLUID, + CBufBase& aObject ); + + /** + * Loads SIP profile information + * @since Series 60_3.0 + */ + void LoadProfilesL(); + + /** + * Converts 8 bit descriptor to integer. + * @since Series 60_3.0 + * @param aDes Descriptor to convert + * @return integer + */ + TInt DesToInt( const TDesC8& aDes ) const; + + /** + * Converts descriptor to unsigned integer + * @since Series 60_3.0 + * @param aDes Descriptor to convert + * @return unsigned integer + */ + TUint DesToTUint( const TDesC8& aDes ) const; + + /** + * Removes last uri segment from aURI + * @since Series 60_3.0 + * @param aDes Descriptor to handle + * @return pointer to uri + */ + const TPtrC8 RemoveLastURISeg( const TDesC8& aURI ) const; + + /** + * Gets number of uri segments. + * @since Series 60_3.0 + * @param aURI Descriptor to handle + * @return pointer to uri + */ + TInt NumOfURISegs( const TDesC8& aURI ) const; + + /** + * Gets last uri segment. + * @since Series 60_3.0 + * @param aURI Descriptor to handle + * @return integer + */ + const TPtrC8 LastURISeg( const TDesC8& aURI ) const; + + /** + * Removes ./ from uri + * @since Series 60_3.0 + * @param aURI Descriptor to handle + * @return pointer to uri + */ + const TPtrC8 RemoveDotSlash( const TDesC8& aURI ) const; + + /** + * Get Sip URI reference from SIP adapter + * @since Series 60_3.0 + * @param aObject Object to insert found URI. + * @param aID SIP profile ID to get URI + * @return errorcode to tell wether operation was successful + */ + MSmlDmAdapter::TError GetSipIdL( CBufBase& aObject, + TUint32 aID ) const; + + /** + * Set SipRef value according to aObject + * Converts aObject to TUint + * @since Series 60_3.0 + * @param aObject SIP reference to change + * @return SIP profile ID as TUint + */ + TUint32 SetSipRefL( const TDesC8& aObject ) const; + + /** + * Get Sccp URI reference from SIP adapter + * @since Series 60_3.0 + * @param aObject Object to insert found URI. + * @param aID SIP profile ID to get URI + * @return errorcode to tell wether operation was successful + */ + MSmlDmAdapter::TError GetSccpIdL( CBufBase& aObject, + TUint32 aID ) const; + + /** + * Set SccpRef value according to aObject + * Converts aObject to TUint + * @since Series 60_3.0 + * @param aObject SIP reference to change + * @return SIP profile ID as TUint + */ + TUint SetSccpRefL( const TDesC8& aObject ) const; + + /** + * Check for duplicate settingsName and rename if same + * @since Series 60_3.0 + * @param aProfile Profile to check. + */ + TBool CheckDuplicateNameL( CRCSEProfileEntry& aEntry ); + + /** + * Check for duplicate providerName and rename if same + * @since Series 60_3.0 + * @param aProfile Profile to check. + */ + TBool CheckDuplicateProviderL( CRCSEProfileEntry& aEntry ); + + /** + * Finds profile location in profile array. + * @since Series 60_3.0 + * @param aURI Descriptor to look for + * @return Profile location TInt + */ + TInt FindProfileLocation( const TDesC8& aURI ) const; + + /** + * Finds codec location in codec array. + * @since Series 60_3.0 + * @param aID CodecId + * @return Profile location TInt + */ + TInt FindCodecLocation( TUint32 aID ) const; + + /** + * Sets CS/PS telephony preference + * @since Series 60_3.0 + * @param aTelephonyPreference state to set + */ + void SetTelephonyPreferenceL( const TTelephonyPreference& + aTelephonyPreference ); + + /** + * Get Terminal Type for SIP User Agent Header. + * @since S60 v3.0 + * @param aTeminalType Terminal type. + */ + void GetTerminalTypeL( TBuf& aTerminalType ) + const; + + /** + * Get WLAN MAC address for SIP User Agent Header. + * @since S60 v3.0 + * @param aMac WLAN MAC address. + */ + void GetWlanMacAddressL( TBuf& aMac ) const; + + /** + * Get NAT/FW Domain specific URI according to given profile ID. + * @since S60 3.2 + * @param aObject URI to be set. + * @param aProfileId Profile ID from which the URI is to be found. + * @return DM error status. + */ + MSmlDmAdapter::TError GetNatFwUriL( TBuf16& aObject, + TInt aProfileId ) const; + + /** + * Get NAT/FW Domain specific ID according to given URI. + * @since S60 3.2 + * @param aObject URI with which to resolve the ID. + * @return NAT/FW Domain specific ID. + */ + TUint32 NatFwIdL( const TDesC8& aObject ) const; + + /** + * Get Access Point ID (connection reference) according to aObject. + * @since S60 3.2 + * @param aObject URI to look from AP adapter. + * @return Access point ID number. + */ + TInt ConRefL( const TDesC8& aObject ) const; + + /** + * Get Access Point URI reference from AP adapter. + * @since S60 3.2 + * @param aObject Object into which to insert found URI. + * @param aIapID IAP ID to look for. + * @return DM error status. + */ + MSmlDmAdapter::TError GetConRefL( CBufBase& aObject, + TInt aIapId ) const; + + /** + * Get Presence profile URI according to given profile ID. + * @since S60 3.2 + * @param aObject URI to be set. + * @param aProfileId Profile ID from which the URI is to be found. + * @return DM error status. + */ + MSmlDmAdapter::TError GetPresenceUriL( TBuf16& aObject, + TUint32 aProfileId ) const; + + /** + * Get Presence profile ID according to given URI. + * @since S60 3.2 + * @param aObject URI with which to resolve the ID. + * @return Presence profile ID. + */ + TUint32 PresenceIdL( const TDesC8& aObject ) const; + + /** + * Checks if Presence Settings ID is valid. + * @since S60 3.2 + * @param aSetId Presence Settings ID. + * @return ETrue if settings exists, EFalse if not. + */ + TBool IsPresIDValidL( TUint32 aSetId ) const; + + /** + * Get SNAP ID. + * @since S60 3.2. + * @param aUri URI from which to find SNAP ID. + * @return SNAP ID. + */ + TInt SnapIdL( const TDesC8& aUri ); + + /** + * Set SNAP URI. + * @since S60 3.2. + * @param aObject Object in which found URI is set. + * @param aSnapId SNAP ID from which to find URI. + * @return ETrue if successful, EFalse if not. + */ + MSmlDmAdapter::TError GetSnapUriL( TDes8& aObject, TInt aSnapId ); + + /** + * Updates Codec specific object. + * @since S60 3.2 + * @param aLUID luid mapping from dm-module + * @param aUriSeg Last URI segment. + * @param aObject Data of the object. + * @return Value indicating if object was found. + */ + CSmlDmAdapter::TError UpdateCodecSpecificObject( + const TDesC8& aLUID, const TDesC8& aUriSeg, + const TDesC8& aObject ); + + /** + * Fetches the values of Codec specific leaf objects. + * @since S60 3.2 + * @param aLUID luid mapping from dm-module + * @param aUriSeg Last URI segment. + * @param aSegmentResult Storage for fetched objects. + * @return Value indicating if object was found. + */ + CSmlDmAdapter::TError FetchCodecObject( const TDesC8& aLUID, + const TDesC8& aUriSeg, TDes8& aSegmentResult ); + + /** + * Inserts Codec specific leaf objects. + * @since S60 3.2 + * @param aCurrentURISegmentList List for leaf objects. + */ + void CodecChildListL( CBufBase* const aCurrentURISegmentList ); + + /** + * Updates Setting Ids specific object. + * @since S60 3.2 + * @param aLUID luid mapping from dm-module + * @param aUriSeg Last URI segment. + * @param aObject Data of the object. + * @return Value indicating if object was found. + */ + CSmlDmAdapter::TError UpdateSettingIdsSpecificObjectL( + const TDesC8& aLUID, const TDesC8& aUriSeg, + const TDesC8& aObject ); + + /** + * Inserts Voip leaf objects. + * @since S60 3.2 + * @param aCurrentURISegmentList List for leaf objects. + */ + void VoipChildListL( CBufBase* const aCurrentURISegmentList ); + + private: // Data + + /** + * RCSE profile registry handle. + * Own. + */ + CRCSEProfileRegistry* iCRCSEProfile; + + /** + * RCSE codec registry handle. + * Own. + */ + CRCSEAudioCodecRegistry* iCRCSEAudioCodec; + + /** + * Handle for DM callback interface. + * Not own. + */ + MSmlDmCallback* iDmCallback; + + /** + * For telling status of command to the adapter. + */ + TInt iStatusRef; + + /** + * Array of pointers to all profile entries. + * Own. + */ + RPointerArray iProfileEntries; + + /** + * Array of pointers to all codec entries. + * Own. + */ + RPointerArray iCodecEntries; + + /** + * For knowing if there are modifications to entries. + */ + RArray iProfileModifs; + + /** + * For knowing if there are modifications to entries. + */ + RArray iCodecModifs; + + /** + * Current editable profileID in array of profiles. + */ + TInt iProfileID; + + /** + * Array for service provider settings. + */ + RPointerArray iSPSettings; + + /** + * the temporary string used to fetch profile id + */ + HBufC8* iTempProfileIdObject; + + /** + * flag which indicates whether the profile type is set or not + */ + TBool iIsProfileTypeSet; + + /** + * flag which indicates whether the AllowVoIPOverWCDMA flag is + * modified or not + */ + TBool iAllowVoIPOverWCDMAModified; + }; + +#endif // __NSMLDMVOIPADAPTER_H__ + +// End of File.