diff -r 000000000000 -r 3ce708148e4d omadm/omadmextensions/adapters/imps/inc/nsmldmimpsadapter.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omadm/omadmextensions/adapters/imps/inc/nsmldmimpsadapter.h Thu Dec 17 08:40:12 2009 +0200 @@ -0,0 +1,395 @@ +/* +* Copyright (c) 2002-2004 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 IMPS Adapter +* +*/ + + + +// TaH 3.6.2005 Added constants for parameter lenghts (KNSmlDMMaxNameLen, KNSmlDMMaxAddrLen). +// TaH 13.6.2005 Added comments for functions. +// TaH 27.9.2005 Constansts for dynamic node names changed. + +#ifndef __NSMLDMIMPSADAPTER_H__ +#define __NSMLDMIMPSADAPTER_H__ + +// ------------------------------------------------------------------------------------------------ +// Includes +// ------------------------------------------------------------------------------------------------ +#include +#include +#include + +// CONSTANTS +// Defined in nsmldmimpluids.h file +const TUint KNSmlDMImpsAdapterImplUid = 0x101F9A2B; +const TInt KNSmlDMSAPSettings = 200; +const TInt KNSmlDMMaxNameLen = 50; +const TInt KNSmlDMMaxAddrLen = 255; +const TInt KNSmlDMReservingData = 16; +const TInt KNSmlDMReservingMaxData = 100; + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// CLASS DECLARATION + +// the DDF version must be changed if any changes in DDF structure ( built in DDFStructureL() function ) +_LIT8( KNSmlDMImpsDDFVersion, "1.0" ); + +_LIT8( KNSmlDMImpsTextPlain, "text/plain" ); +_LIT8( KNSmlDMImpsDynamicNode, "" ); +_LIT8( KNSmlDMImpsNodeName, "IMPS" ); +_LIT8( KNSmlDMImpsAppId, "AppID" ); +_LIT8( KNSmlDMImpsName, "Name" ); +_LIT8( KNSmlDMImpsPrefConRef, "PrefConRef" ); +_LIT8( KNSmlDMImpsPrefAddr, "PrefAddr" ); +_LIT8( KNSmlDMImpsAppAuth, "AppAuth" ); +_LIT8( KNSmlDMImpsAAuthLevel, "AAuthLevel" ); +_LIT8( KNSmlDMImpsAAuthName, "AAuthName" ); +_LIT8( KNSmlDMImpsAAuthSecret, "AAuthSecret" ); +_LIT8( KNSmlDMImpsServices, "Services" ); +_LIT8( KNSmlDMImpsExtNode, "Ext" ); +_LIT8( KNSmlDMImpsPepCompliant, "PEPCompliant" ); +_LIT( KNSmlDMImpsPepCompliant16, "PEPCompliant" ); + +_LIT8( KNSmlDMImpsDescr, "The interior object holds all IMPS objects" ); +_LIT8( KNSmlDMDynamicNodeDescr, "Placeholder for one or more objects" ); +_LIT8( KNSmlDMImpsAppIDDescr, "Identifier for the application service available at the described SAP" ); +_LIT8( KNSmlDMImpsNameDescr, "Logical and user readable identity of the SAP" ); +_LIT8( KNSmlDMImpsPrefConRefDescr, "Indicator for preferred linkage to connectivity parameters" ); +_LIT8( KNSmlDMImpsPrefAddrDescr, "Addres of the application server" ); +_LIT8( KNSmlDMImpsAppAuthDescr, "Container of authentication information to be used with the SAP" ); +_LIT8( KNSmlDMImpsAAuthLevelDescr, "Tells how the provided authentication credentials are to be applied" ); +_LIT8( KNSmlDMImpsAAuthNameDescr, "Indicator of the ID" ); +_LIT8( KNSmlDMImpsAAuthSecretDescr, "Indicator of the authentication secret" ); +_LIT8( KNSmlDMImpsServicesDescr, "List of supported high-level services" ); +_LIT8( KNSmlDMImpsExtNodeDescr, "Container of vendor specific information" ); +_LIT8( KNSmlDMImpsPepCompliantDescr, "Indicator of the PEP Compliantly" ); + +_LIT8( KNSmlDMImpsDefaultAppID, "wA" ); +_LIT8( KNSmlDMImpsDefaultAAuthLevel, "APPSRV" ); +_LIT8( KNSmlDMImpsDefaultPEC, "TRUE" ); +_LIT8( KNSmlDMImpsDefaultIM, "FALSE" ); +_LIT8( KNSmlDMImpsDefPEC, "T" ); +_LIT8( KNSmlDMImpsDefIM, "F" ); +_LIT( KNSmlDMImpsNotDefined, "" ); +_LIT8( KNSmlDMImpsNotDefined8, "" ); +_LIT8( KNSmlDMImpsIAPUri, "AP" ); +_LIT8( KNSmlDMImpsServiceIM, "IM" ); +_LIT8( KNSmlDMImpsServicePS, "PS" ); +_LIT8( KNSmlDMImpsServiceGR, "GR" ); +_LIT8( KNSmlDMImpsConnMOIAPUri, "NAP" ); + +_LIT8( KNSmlDMImpsRtNode, "AppID/Name/PrefConRef/PrefAddr/Services/AppAuth/Ext"); +_LIT8( KNSmlDMAppAuthRtNode, "AAuthLevel/AAuthName/AAuthSecret"); +_LIT8( KNSmlDMRtNode8, "AAId1"); +_LIT( KNSmlDMRtNode, "AAId1"); + +_LIT8( KNSmlDMImpsSeparator8, "/" ); +_LIT( KNSmlDMImpsSeparator, "/" ); +_LIT8( KNSmlImpsUriDotSlash, "./"); +_LIT8( KNSmlDMImpsSemiColon, ";"); +_LIT( KNSmlDMImpsDefaultName, "default" ); + +_LIT8( KNSmlDMImpsRootAndDyn, "IMPS/*" ); +_LIT8( KNSmlDMImpsWholeAppAuthUri, "IMPS/*/AppAuth" ); +_LIT8( KNSmlDMImpsWholeAppAuthDynUri, "IMPS/*/AppAuth/*" ); +_LIT8( KNSmlDMImpsWholeExtUri, "IMPS/*/Ext" ); + +_LIT8( KNSMLDMImpsDynNodeName, "ImpsId" ); +_LIT8( KNSmlImpsLine, "-"); + +// ------------------------------------------------------------------------------------------------ +// CNSmlDmImpsAdapter +// ------------------------------------------------------------------------------------------------ +class CNSmlDmImpsAdapter : public CSmlDmAdapter, public MMsvSessionObserver + { +public: // Constructors and destructor + + /** + * Two-phased constructors. + */ + static CNSmlDmImpsAdapter* NewL( MSmlDmCallback* aDmCallback ); + static CNSmlDmImpsAdapter* NewLC( MSmlDmCallback* aDmCallback ); + + /** + * Destructor. + */ + virtual ~CNSmlDmImpsAdapter(); + + /** + * Requests DDF Version + * @param aVersion, Reference for version + */ + void DDFVersionL( CBufBase& aVersion ); + + /** + * Requests DDF Structure + * @param aDDF, Reference to root node + */ + void DDFStructureL( MSmlDmDDFObject& aDDF ); + + /** + * Updates leaf object value + * @param aURI, The uri of parameter + * @param aLUID, The Luid of Uri + * @param aObject, The value for parameter + * @param aType, Not used at the moment + * @param aStatusRef, Status reference of command + */ + void UpdateLeafObjectL( const TDesC8& aURI, + const TDesC8& aLUID, + const TDesC8& aObject, + const TDesC8& aType, + TInt aStatusRef ); + + /** + * Updates leaf object value + * Not used at the moment + */ + void UpdateLeafObjectL( const TDesC8& aURI, + const TDesC8& aLUID, + RWriteStream*& aStream, + const TDesC8& aType, + TInt aStatusRef ); + + /** + * Fetches the leaf object size + * @param aURI, The uri of parameter + * @param aLUID, The Luid of Uri + * @param aType, Not used at the moment + * @param aResultsRef, Result reference of command + * @param aStatusRef, Status reference of command + */ + void FetchLeafObjectSizeL( const TDesC8& aURI, + const TDesC8& aLUID, + const TDesC8& aType, + const TInt aResultsRef, + const TInt aStatusRef ); + + /** + * Fetches the leaf object value + * @param aURI, The uri of parameter + * @param aLUID, The Luid of Uri + * @param aType, Not used at the moment + * @param aResultsRef, Result reference of command + * @param aStatusRef, Status reference of command + */ + void FetchLeafObjectL( const TDesC8& aURI, + const TDesC8& aLUID, + const TDesC8& aType, + TInt aResultsRef, + TInt aStatusRef ); + + /** + * Deletes the node or leaf + * @param aURI, The uri of parameter + * @param aLUID, The Luid of Uri + * @param aType, Not used at the moment + * @param aResultsRef, Result reference of command + * @param aStatusRef, Status reference of command + */ + void DeleteObjectL( const TDesC8& aURI, + const TDesC8& aLUID, + TInt aStatusRef ); + + + /** + * Requests the child uri list + * @param aURI, The uri of parameter + * @param aLUID, The Luid of Uri + * @param aPreviousURISegmentList, list of previous Uri Segments + * @param aResultsRef, Result reference of command + * @param aStatusRef, Status reference of command + */ + void ChildURIListL( const TDesC8& aURI, + const TDesC8& aLUID, + const CArrayFix& aPreviousURISegmentList, + TInt aResultsRef, + TInt aStatusRef ); + + /** + * Adds new node + * @param aURI, The uri of parameter + * @param aParentLUID, The Luid of ParentUri + * @param aStatusRef, Status reference of command + */ + void AddNodeObjectL( const TDesC8& aURI, + const TDesC8& aParentLUID, + TInt aStatusRef ); + + /** + * Following methods are not used at the moment + */ + void CompleteOutstandingCmdsL(); + void ExecuteCommandL( const TDesC8& aURI, const TDesC8& aLUID, const TDesC8& aArgument, const TDesC8& aType, const TInt aStatusRef ); + void ExecuteCommandL( const TDesC8& aURI, const TDesC8& aLUID, RWriteStream*& aStream, const TDesC8& aType, const TInt aStatusRef ); + void CopyCommandL( const TDesC8& aTargetURI, const TDesC8& aTargetLUID, const TDesC8& aSourceURI, const TDesC8& aSourceLUID, const TDesC8& aType, TInt aStatusRef ); + void StartAtomicL(); + void CommitAtomicL(); + void RollbackAtomicL(); + TBool StreamingSupport( TInt& aItemSize ); + void StreamCommittedL(); + +protected: + + /** + * From MMsvSessionObserver + */ + void HandleSessionEventL( TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3 ); + +private: + + /** + * Constructors. + */ + CNSmlDmImpsAdapter(); + CNSmlDmImpsAdapter( TAny* aEcomArguments );//new + + /** + * Symbian 2nd phase constructor. + */ + void ConstructL( MSmlDmCallback* aDmCallback ); + + /** + * Change Descriptor to Int + * @param aLuid, Descriptor + * @return Integer value + */ + TInt DesToInt( const TDesC& aLuid ); + TInt DesToInt( const TDesC8& aLuid ); + + /** + * Change Int to descriptor + * @param aLuid, Integer value + * @return Descriptor + */ + HBufC* IntToDesLC( const TInt aLuid ); + HBufC8* IntToDes8LC( const TInt aLuid ); + + /** + * Converts 8 bit descriptor to 16 bit descriptor + * @param aSource, source descriptor + * @return Destination descriptor + */ + TDesC8& ConvertTo8LC( const TDesC& aSource ); + + /** + * Converts 16 bit descriptor to 8 bit descriptor + * @param aSource, source descriptor + * @return Destination descriptor + */ + TDesC16& ConvertTo16LC( const TDesC8& aSource ); + + /** + * Fill node info + * @param aNode, node name + * @param aAccTypes, access types + * @param aOccurence, occurrence + * @param aScope, Dynamic or permanent + * @param aFormat, type of leaf + * @param aDescription, description of node/leaf + */ + void FillNodeInfoL( MSmlDmDDFObject& aNode, + const TSmlDmAccessTypes aAccTypes, + MSmlDmDDFObject::TOccurence aOccurrence, + MSmlDmDDFObject::TScope aScope, + MSmlDmDDFObject::TDFFormat aFormat, + const TDesC8& aDescription ); + + /** + * Find correct SAP from DB and read the data + * @param aLUID, SAP uid + * @param aSap, place for reading SAP data + * @param aStore, variable for rading SAP data + * @return error status + */ + TInt GetCorrectSapL( const TDesC8& aLUID, + CIMPSSAPSettings* aSap, + CIMPSSAPSettingsStore* aStore ); + + /** + * Reset Sap with empty data + * @param aSap, includes the SAP data + */ + void ResetSapL( CIMPSSAPSettings* aSap ); + + /** + * Update value to SAP data + * @param aUri, parameter + * @param aObject, parameter value + * @param aSap, variable for SAP data + * @return error status + */ + CSmlDmAdapter::TError UpdateValueL( const TDesC8& aUri, + const TDesC8& aObject, + CIMPSSAPSettings* aSap ); + + /** + * Update PEP value to SAP data + * @param aUri, parameter + * @param aObject, parameter value + * @param aLUID, SAP uid + * @param aSap, variable for reading SAP data + * @param aStore, used for rading SAP data + * @return error status + */ + CSmlDmAdapter::TError UpdatePEPValueL( const TDesC8& aURI, + const TDesC8& aObject, + const TDesC8& aLUID, + CIMPSSAPSettings* aSap, + CIMPSSAPSettingsStore* aStore ); + + /** + * Delete value from SAP data + * @param aUri, parameter + * @param aSap, variable for reading SAP data + * @return error status + */ + CSmlDmAdapter::TError DeleteValueL( const TDesC8& aUri, + CIMPSSAPSettings* aSap ); + + /** + * Fetch object data + * @param aUri, parameter + * @param aLUID, SAP uid + * @param aObject, variable for returning parameter data + * @return error status + */ + CSmlDmAdapter::TError FetchObjectL( const TDesC8& aUri, + const TDesC8& aLUID, + CBufBase& aObject ); + + /** + * Get Connection Reference + * @return accesspoint reference + */ + const TDesC8& GetConRef() ; + + +private: // Data + MSmlDmCallback* iCallBack; + /** + * Boolean to check FeatMgr Initialization + */ + TBool iFeatMgrInitialized; + }; + +#endif // __NSMLDMIMPSADAPTER_H__