--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/epoc32/include/smldmadapter.h Wed Mar 31 12:33:34 2010 +0100
@@ -0,0 +1,815 @@
+/*
+* Copyright (c) 2005 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: Definition of dm constants/exported methods
+* This is part of remotemgmt_plat.
+*/
+
+
+#ifndef __SMLDMADAPTER_H__
+#define __SMLDMADAPTER_H__
+
+#include <e32base.h>
+#include <ecom/ecom.h>
+
+class MSmlDmDDFObject;
+class MSmlDmCallback;
+class RWriteStream;
+
+/** ECOM interface uid for DM plugin adapters */
+#define KSmlDMInterfaceUid 0x102018B4
+
+/** Maximum length of a URI segment supported by the DM framework */
+#define KSmlMaxURISegLen 32
+
+struct TSmlDmMappingInfo
+/**
+The struct combines an URI segment to a LUID in a device.
+@publishedPartner
+@prototype
+*/
+ {
+ /** The URI segment. When using this structure, a path of the URI segment must be known */
+ TBufC8<KSmlMaxURISegLen> iURISeg;
+
+ /** Local UID in the device */
+ TPtrC8 iURISegLUID;
+ };
+
+class MSmlDmAdapter
+/**
+Abstract Device Management adapter. Implementations of this interface are able to map settings
+in device stores to portions of the Device Management Tree.
+@publishedPartner
+@prototype
+*/
+ {
+public: //enums
+
+ /** An enumeration of the error codes which may be returned by DM adapters.
+ @publishedPartner
+ @prototype
+ */
+ enum TError
+ {
+ /** The command was successful */
+ EOk = 0,
+ /** The command failed because no setting exists in the store which corresponds to the
+ URI or LUID passed to the adapter */
+ ENotFound,
+ /** The command failed because the setting can't take the value being passed to the adapter */
+ EInvalidObject,
+ /** The command failed because the setting already exists in the store */
+ EAlreadyExists,
+ /** The command failed because the setting value is too large to be accommodated in the store */
+ ETooLargeObject,
+ /** The command failed because the disk on which the device store resides is full */
+ EDiskFull,
+ /** The command failed for an unspecified reason */
+ EError,
+ /** The command could not be rolled back successfully */
+ ERollbackFailed,
+ /** The command failed because the setting is being used by another client */
+ EObjectInUse,
+ /** The command failed because no memory could be allocated */
+ ENoMemory,
+ /** The command succesfully committed */
+ ECommitOK,
+ /** The command rolled back succesfully */
+ ERollbackOK,
+ /** The commit of command failed */
+ ECommitFailed,
+ ENotAllowed,
+ EAcceptedForProcessing,
+
+ EExecSuccess,
+ EExecClientError,
+ EExecUserCancelled,
+ EExecDownloadFailed,
+ EExecAltDwnldAuthFail,
+ EExecDownFailOOM,
+ EExecInstallFailed,
+ EExecInstallOOM,
+ EExecPkgValidationFail,
+ EExecRemoveFailed,
+ EExecActivateFailed,
+ EExecDeactivateFailed,
+ EExecNotImplemented,
+ EExecUndefError,
+ EExecOperationReject,
+ EExecAltDwnldSrvError,
+ EExecAltDwnldSrvUnavailable
+
+ };
+
+public:
+ /**
+ The function returns current version of the DDF.
+ By asking current DDF versions from adapters DM Module can control
+ possible changes in the data structure and send the changed DDF
+ description to a management server.
+ This function is always called after DDFStructureL.
+ @param aVersion DDF version of the adapter. (filled by the adapter)
+ @publishedPartner
+ @prototype
+ */
+ virtual void DDFVersionL( CBufBase& aVersion ) = 0;
+
+ /**
+ The function for filling the DDF structure of the adapter
+ This function is only called once, immediately after the adapter is created.
+ @param aDDFObject Reference to root object. A DM adapter starts filling
+ the data structure by calling AddChildObjectL to the root object and
+ so describes the DDF of the adapter.
+ @publishedPartner
+ @prototype
+ */
+ virtual void DDFStructureL( MSmlDmDDFObject& aDDF ) = 0;
+
+ /**
+ The function creates new leaf objects, or replaces data in existing leaf
+ objects. The information about the success of the command should be
+ returned by calling SetStatusL function of MSmlDmCallback callback
+ interface. This makes it possible to buffer the commands. However, all
+ the status codes for buffered commands must be returned at the latest when
+ the adapter's CompleteOutstandingCmdsL() is called.
+ @param aURI URI of the object
+ @param aLUID LUID of the object (if the adapter has earlier returned a
+ LUID to the DM Module). For new objects, this is the LUID
+ inherited through the parent node.
+ @param aObject Data of the object.
+ @param aType MIME type of the object
+ @param aStatusRef Reference to correct command, i.e. this reference
+ must be used when calling the SetStatusL of this command
+ @publishedPartner
+ @prototype
+ */
+ virtual void UpdateLeafObjectL( const TDesC8& aURI, const TDesC8& aLUID,
+ const TDesC8& aObject, const TDesC8& aType,
+ TInt aStatusRef ) = 0;
+
+ /**
+ The function creates new leaf objects, or replaces data in existing leaf
+ objects, in the case where data is large enough to be streamed. The
+ information about the success of the command should be returned by calling
+ SetStatusL function of MSmlDmCallback callback interface. This makes it
+ possible to buffer the commands. However, all the status codes for buffered
+ commands must be returned at the latest when the CompleteOutstandingCmdsL()
+ of adapter is called.
+ @param aURI URI of the object
+ @param aLUID LUID of the object (if the adapter has earlier returned a
+ LUID to the DM Module). For new objects, this is the LUID
+ inherited through the parent node.
+ @param aStream Data of the object. Adapter should create write stream
+ and return, when data is written to stream by DM agent,
+ StreamCommittedL() is called by DM engine
+ @param aType MIME type of the object
+ @param aStatusRef Reference to correct command, i.e. this reference
+ must be used when calling the SetStatusL of this
+ command.
+ @publishedPartner
+ @prototype
+ */
+ virtual void UpdateLeafObjectL( const TDesC8& aURI, const TDesC8& aLUID,
+ RWriteStream*& aStream, const TDesC8& aType,
+ TInt aStatusRef ) = 0;
+
+ /**
+ The function deletes an object and its child objects. The SetStatusL
+ should be used as described in UpdateLeafObjectL()
+ @param aURI URI of the object
+ @param aLUID LUID of the object (if the adapter have earlier returned
+ LUID to the DM Module).
+ @param aStatusRef Reference to correct command, i.e. this reference must
+ be used when calling the SetStatusL of this command.
+ @publishedPartner
+ @prototype
+ */
+ virtual void DeleteObjectL( const TDesC8& aURI, const TDesC8& aLUID,
+ TInt aStatusRef ) = 0;
+
+ /**
+ The function fetches data of a leaf object. The SetStatusL should be used
+ as described in UpdateLeafObjectL(). The data is returned by using the
+ SetResultsL function of MSmlCallback callback interface, and may be streamed.
+ @param aURI URI of the object
+ @param aLUID LUID of the object (if the adapter have earlier
+ returned LUID to the DM Module).
+ @param aType MIME type of the object
+ @param aResultsRef Reference to correct results, i.e. this reference
+ must be used when returning the result by calling
+ the SetResultsL.
+ @param aStatusRef Reference to correct command, i.e. this reference
+ must be used when calling the SetStatusL of this
+ command.
+ @publishedPartner
+ @prototype
+ */
+ virtual void FetchLeafObjectL( const TDesC8& aURI, const TDesC8& aLUID,
+ const TDesC8& aType, TInt aResultsRef,
+ TInt aStatusRef ) = 0;
+
+ /**
+ The function fetches the size of the data of a leaf object. The size is
+ in bytes, and must reflect the number of bytes that will be transferred
+ when the framework calls FetchLeafObjectL. The SetStatusL should be used
+ as described in FetchLeafObjectL(). The size value is returned by using
+ the SetResultsL function of MSmlCallback callback interface, and must be
+ a decimal integer expressed as a string, eg. "1234".
+ Results from this call MUST NOT be streamed.
+ @param aURI URI of the object
+ @param aLUID LUID of the object (if the adapter have earlier
+ returned LUID to the DM Module).
+ @param aType MIME type of the object
+ @param aResultsRef Reference to correct results, i.e. this reference
+ must be used when returning the result by calling
+ the SetResultsL.
+ @param aStatusRef Reference to correct command, i.e. this reference
+ must be used when calling the SetStatusL of this
+ command.
+ @publishedPartner
+ @prototype
+ */
+ virtual void FetchLeafObjectSizeL( const TDesC8& aURI, const TDesC8& aLUID,
+ const TDesC8& aType, TInt aResultsRef,
+ TInt aStatusRef ) = 0;
+ /**
+ The function fetches URI list. An adapter returns the list of URI segments
+ under the given URI be separated by slash ("/"). The URI segment names for
+ new objects must be given by the adapter.
+ The list is returned by calling the SetResultsL function of MSmlCallback
+ callback interface. Results from this call MUST NOT be streamed.
+ @param aParentURI URI of the parent object
+ @param aParentLUID LUID of the parent object (if the
+ adapter have earlier returned LUID to
+ the DM Module).
+ @param aPreviousURISegmentList URI list with mapping LUID information,
+ which is known by DM engine. An adapter
+ can use this information when verifying
+ if old objects still exists. An adapter
+ also knows what objects are new to DM
+ engine and can provide LUID mapping for
+ them. aPreviousURISegmentList parameter
+ (see above) helps to recognise new
+ objects.
+ @param aResultsRef Reference to correct results, i.e. this
+ reference must be used when returning
+ the result by calling the SetResultsL.
+ @param aStatusRef Reference to correct command, i.e. this
+ reference must be used when calling the
+ SetStatusL of this command.
+ @publishedPartner
+ @prototype
+ */
+ virtual void ChildURIListL( const TDesC8& aURI, const TDesC8& aLUID,
+ const CArrayFix<TSmlDmMappingInfo>& aPreviousURISegmentList,
+ TInt aResultsRef, TInt aStatusRef ) = 0;
+
+ /**
+ The function adds node object. In some cases an implementation of the
+ function may be empty function, if the node object does not need concrete
+ database update. Still this function may be helpful to an adapter, i.e. in
+ passing mapping LUID of the node to DM Module. The SetStatusL should be
+ used as described in UpdateLeafObjectL()
+ @param aURI URI of the object
+ @param aParentLUID LUID of the parent object (if the adapter have
+ earlier returned LUID to the DM Module).
+ @param aStatusRef Reference to correct command, i.e. this reference
+ must be used when calling the SetStatusL of this
+ command.
+ @publishedPartner
+ @prototype
+ */
+ virtual void AddNodeObjectL( const TDesC8& aURI, const TDesC8& aParentLUID,
+ TInt aStatusRef )=0;
+
+ /**
+ The function implements execute command. The information about the success
+ of the command should be returned by calling SetStatusL function of
+ MSmlDmCallback callback interface. This makes it possible to buffer the
+ commands.
+ However, all the status codes for buffered commands must be returned at
+ the latest when the CompleteOutstandingCmdsL() of adapter is called.
+ @param aURI URI of the command
+ @param aLUID LUID of the object (if the adapter have earlier
+ returned LUID to the DM Module).
+ @param aArgument Argument for the command
+ @param aType MIME type of the object
+ @param aStatusRef Reference to correct command, i.e. this reference
+ must be used when calling the SetStatusL of this
+ command.
+ @publishedPartner
+ @prototype
+ */
+ virtual void ExecuteCommandL( const TDesC8& aURI, const TDesC8& aLUID,
+ const TDesC8& aArgument, const TDesC8& aType,
+ TInt aStatusRef ) = 0;
+
+ /**
+ The function implements execute command. The information about the
+ success of the command should be returned by calling SetStatusL function
+ of MSmlDmCallback callback interface. This makes it possible to buffer the
+ commands.
+ However, all the status codes for buffered commands must be returned at
+ the latest when the CompleteOutstandingCmdsL() of adapter is called.
+ @param aURI URI of the command
+ @param aLUID LUID of the object (if the adapter have earlier
+ returned LUID to the DM Module).
+ @param aStream Argument for the command. Adapter should create
+ write stream and return, when data is written to
+ stream by DM agent, StreamCommittedL() is called by
+ DM engine
+ @param aType MIME type of the object
+ @param aStatusRef Reference to correct command, i.e. this reference
+ must be used when calling the SetStatusL of this
+ command.
+ @publishedPartner
+ @prototype
+ */
+ virtual void ExecuteCommandL( const TDesC8& aURI, const TDesC8& aLUID,
+ RWriteStream*& aStream, const TDesC8& aType,
+ TInt aStatusRef ) = 0;
+
+ /**
+ The function implements copy command. The information about the success of
+ the command should be returned by calling SetStatusL function of
+ MSmlDmCallback callback interface. This makes it possible to buffer the
+ commands.
+ However, all the status codes for buffered commands must be returned at
+ the latest when the CompleteOutstandingCmdsL() of adapter is called.
+ @param aTargetURI Target URI for the command
+ @param aSourceLUID LUID of the target object (if one exists, and if the adapter
+ has earlier returned a LUID to the DM Module).
+ @param aSourceURI Source URI for the command
+ @param aSourceLUID LUID of the source object (if the adapter has
+ earlier returned a LUID to the DM Module).
+ @param aType MIME type of the objects
+ @param aStatusRef Reference to correct command, i.e. this reference
+ must be used when calling the SetStatusL of this
+ command.
+ @publishedPartner
+ @prototype
+ */
+ virtual void CopyCommandL( const TDesC8& aTargetURI, const TDesC8& aTargetLUID,
+ const TDesC8& aSourceURI, const TDesC8& aSourceLUID,
+ const TDesC8& aType, TInt aStatusRef ) = 0;
+
+ /**
+ The function indicates start of Atomic command.
+ @publishedPartner
+ @prototype
+ */
+ virtual void StartAtomicL() = 0;
+
+ /**
+ The function indicates successful end of Atomic command. The adapter
+ should commit all changes issued between StartAtomicL() and
+ CommitAtomicL()
+ @publishedPartner
+ @prototype
+ */
+ virtual void CommitAtomicL() = 0;
+
+ /**
+ The function indicates unsuccessful end of Atomic command. The adapter
+ should rollback all changes issued between StartAtomicL() and
+ RollbackAtomicL(). If rollback fails for a command, adapter should use
+ SetStatusL() to indicate it.
+ @publishedPartner
+ @prototype
+ */
+ virtual void RollbackAtomicL() = 0;
+
+ /**
+ Returns ETrue if adapter supports streaming otherwise EFalse.
+ @param aItemSize size limit for stream usage
+ @return TBool ETrue for streaming support
+ @publishedPartner
+ @prototype
+ */
+ virtual TBool StreamingSupport( TInt& aItemSize ) = 0;
+
+ /**
+ Called when stream returned from UpdateLeafObjectL or ExecuteCommandL has
+ been written to and committed. Not called when fetching item.
+ @publishedPartner
+ @prototype
+ */
+ virtual void StreamCommittedL() = 0;
+
+ /**
+ The function tells the adapter that all the commands of the message that
+ can be passed to the adapter have now been passed. This indciates that
+ the adapter must supply status codes and results to any buffered commands.
+ This must be done at latest by the time this function returns.
+ This function is used at the end of SyncML messages, and during processing
+ of Atomic. In the case of Atomic processing, the function will be
+ followed by a call to CommitAtomicL or RollbackAtomicL.
+ @publishedPartner
+ @prototype
+ */
+ virtual void CompleteOutstandingCmdsL() = 0;
+ };
+
+
+class TSmlDmAccessTypes
+/**
+This class sets the access types which are allowed for a DM object.
+@publishedPartner
+@prototype
+*/
+ {
+public:
+ enum
+ /**
+ This enumeration describes the possible access types for a DM object
+ @publishedPartner
+ @prototype
+ */
+ {
+ /** The DM Command Add is permitted on this DM object */
+ EAccessType_Add = 0x01,
+ /** The DM Command Copy is permitted on this DM object */
+ EAccessType_Copy = 0x02,
+ /** The DM Command Delete is permitted on this DM object */
+ EAccessType_Delete = 0x04,
+ /** The DM Command Exec is permitted on this DM object */
+ EAccessType_Exec = 0x08,
+ /** The DM Command Get is permitted on this DM object */
+ EAccessType_Get = 0x10,
+ /** The DM Command Replace is permitted on this DM object */
+ EAccessType_Replace = 0x20
+ };
+public:
+ inline TSmlDmAccessTypes();
+ inline void SetAdd();
+ inline void SetCopy();
+ inline void SetDelete();
+ inline void SetExec();
+ inline void SetGet();
+ inline void SetReplace();
+ inline TUint8 GetACL();
+ inline void Reset();
+
+private:
+ TUint8 iACL;
+ };
+
+
+
+class CSmlDmAdapter : public CBase, public MSmlDmAdapter
+/**
+The class CSmlDmAdapter is an ECOM interface for Device Management adapter plugins.
+This interface which must be implemented by every DM plugin adapter
+@publishedPartner
+@prototype
+*/
+
+ {
+public:
+ inline static CSmlDmAdapter* NewL( const TUid& aImplementationUid,
+ MSmlDmCallback& aDmCallback );
+ inline virtual ~CSmlDmAdapter();
+
+protected:
+ inline CSmlDmAdapter(TAny* aEcomArguments);
+ inline MSmlDmCallback& Callback();
+
+private:
+ /** ECOM framework requires this ID in object destructor
+ @internalTechnology
+ @prototype
+ */
+ TUid iDtor_ID_Key;
+
+ /** The DM Framework's callback for returning command results and data
+ @internalTechnology
+ @prototype
+ */
+ MSmlDmCallback& iCallback;
+ };
+
+class MSmlDmCallback
+/**
+This class is callback interface which is implemented in DM Module. An
+instance is passed by reference as an argument to the CSmlDmAdapter::NewL()
+function. This interface is mostly used for returning results and status
+codes for completed commands to the DM framework. The interface also has
+functionality for mapping LUIDs and fetching from other parts of the DM Tree.
+The adapter does not necessarily need to use any other functions but the
+SetStatusL and SetResultsL, if it handles the LUID mapping itself.
+@publishedPartner
+@prototype
+*/
+ {
+ public:
+ /**
+ The function is used to return the data in case of FetchLeafObjectL(),
+ FetchLeafObjectSizeL() and ChildURIListL() functions. It should not be
+ called where the DM command has failed, i.e. the error code returned in
+ SetStatusL is something other than EOk.
+ @param aResultsRef Reference to correct command
+ @param aObject The data which should be returned
+ @param aType MIME type of the object
+ @publishedPartner
+ @prototype
+ */
+ virtual void SetResultsL( TInt aResultsRef, CBufBase& aObject,
+ const TDesC8& aType ) = 0;
+
+ /**
+ The function is used to return the data in case of FetchLeafObjectL() and
+ ChildURIListL() functions, where the size of the data being returned is
+ large enough for the Adapter to stream it. This function should not be
+ called when command was failed, i.e. the error code returned in SetStatusL
+ is something other than EOk.
+ @param aResultsRef Reference to correct command
+ @param aStream Large data which should be returned, DM engine
+ closes stream when it has read all the data
+ @param aType MIME type of the object
+ @publishedPartner
+ @prototype
+ */
+ virtual void SetResultsL( TInt aResultsRef, RReadStream*& aStream,
+ const TDesC8& aType ) = 0;
+
+ /**
+ The function returns information about the Add,Update,Delete and Fetch
+ commands success to DM engine. The reference to correct command must be
+ used when calling the SetStatusL function, the reference is got from the
+ argument of the command functions. The SetStatusL function must be called
+ separately for every single command.
+ @param aStatusRef Reference to correct command
+ @param aErrorCode Information about the command success
+ @publishedPartner
+ @prototype
+ */
+ virtual void SetStatusL( TInt aStatusRef,
+ MSmlDmAdapter::TError aErrorCode ) = 0;
+
+ /**
+ The function passes map information to DM Module. This function is called
+ for a new management object, both for node objects and for leaf objects.
+ In addition if ChildURIListL() function has returned new objects a mapping
+ information of the new objects must be passed. A mapping is treated as
+ inheritable. If the mapping is not set with this function, the mapping
+ LUID of the parent object is passed in following commands to the object.
+ @param aURI URI of the object.
+ @param aLUID LUID of the object. LUID must contain the all information,
+ which is needed for retrieve the invidual object from the
+ database. Typically it is ID for the database table. In
+ more complicated structures it can be combination of IDs,
+ which represent path to the object.
+ @publishedPartner
+ @prototype
+ */
+ virtual void SetMappingL( const TDesC8& aURI, const TDesC8& aLUID ) = 0;
+
+ /**
+ The function is used to make a fetch to other adapters. The most common
+ use is to make a fetch to the AP adapter, because when managing the access
+ points, the data comes as URI. For example, there are ToNAPId field in
+ some adapters, and data to it can be something like AP/IAPidx, and then
+ the link to AP adapter is needed.
+ Using FetchLinkL causes the DM Framework to make a Get request to the
+ appropriate DM adapter. The receiving adapter MUST complete the Get
+ request synchronously.
+ @param aURI URI of the object.
+ @param aData Reference to data, i.e. data is returned here
+ @param aStatus The status of fetch command is returned here
+ @publishedPartner
+ @prototype
+ */
+ virtual void FetchLinkL( const TDesC8& aURI, CBufBase& aData,
+ MSmlDmAdapter::TError& aStatus ) = 0;
+
+ /**
+ The function returns the LUID which is mapped to aURI. If LUID is not
+ found, the function allocates a null length string, i.e. the function
+ allocates memory in every case.
+ @param aURI URI of the object.
+ @publishedPartner
+ @prototype
+ */
+ virtual HBufC8* GetLuidAllocL( const TDesC8& aURI ) = 0;
+
+ /**
+ The function is used to remove a mapped URI. Returns the error code about mapping removal.
+ @param aAdapterId Settings Adapter id
+ @param aURI Mapped Uri
+ @param aChildAlso Indicates the child nodes removal
+ @publishedPartner
+ @prototype
+ */
+ virtual TInt RemoveMappingL( TUint32 aAdapterId, const TDesC8& aURI, TBool aChildAlso ) = 0;
+ };
+
+
+class MSmlDmDDFObject
+/**
+This class structure includes DDF description. When used as an argument in DM
+Adapters Interface each adapter fills its own branch of DDF Tree to the data
+structure.
+@publishedPartner
+@prototype
+*/
+ {
+ public:
+
+ enum TDFFormat
+ /**
+ The possible formats of a node.
+ @publishedPartner
+ @prototype
+ */
+ {
+ /** Base64 encoded */
+ EB64,
+ /** Boolean */
+ EBool,
+ /** Character data */
+ EChr,
+ /** Integer */
+ EInt,
+ /** A DM Tree interior node */
+ ENode,
+ /** No data */
+ ENull,
+ /** XML character data*/
+ EXml,
+ /** Binary data */
+ EBin,
+ /** Date data */
+ EDate,
+ /** Time data */
+ ETime,
+ /** Float */
+ EFloat
+ };
+
+ enum TOccurence
+ /**
+ The possible occurrences of a node.
+ @publishedPartner
+ @prototype
+ */
+ {
+ /** The node appears exactly once */
+ EOne,
+ /** The node is optional and may appear zero or once */
+ EZeroOrOne,
+ /** The node is optional and may appear zero or more times */
+ EZeroOrMore,
+ /** The node is mandatory and may appear once or more times */
+ EOneOrMore,
+ /** The node is optional and may appear between once and 'N' times */
+ EZeroOrN,
+ /** The node is mandatory and may appear between once and 'N' times */
+ EOneOrN
+ };
+
+ enum TScope
+ /**
+ The possible scopes of a node.
+ @publishedPartner
+ @prototype
+ */
+ {
+ /** The node is permanent in the DM Tree */
+ EPermanent,
+ /** The node is created at run-time in the DM Tree */
+ EDynamic
+ };
+
+ /**
+ The function sets permitted access types property to the object. Access
+ types property is a mandatory element. If this function is not called all
+ accesses are denied.
+ @param aAccessTypes Access types property.
+ @publishedPartner
+ @prototype
+ */
+ virtual void SetAccessTypesL( TSmlDmAccessTypes aAccessTypes )=0;
+
+ /**
+ The function sets a default value property to the object. Default value
+ is not a mandatory element. If this function is not called, it means that
+ the default value property is not set at all.
+ @param aDefaultValue Default value property.
+ @publishedPartner
+ @prototype
+ */
+ virtual void SetDefaultValueL( const TDesC8& aDefaultValue )=0;
+
+ /**
+ The function sets a description property to the object. Description is
+ not a mandatory element. If this function is not called, it means that the
+ description property value is not set at all.
+ @param aDescription Description property.
+ @publishedPartner
+ @prototype
+ */
+ virtual void SetDescriptionL( const TDesC8& aDescription )=0;
+
+ /**
+ The function sets a format property to the object. Format is a mandatory
+ element. If this function is not called for node element, Format is set as
+ 'node'. For leaf elements this function must be called.
+ @param aFormat Format property.
+ @publishedPartner
+ @prototype
+ */
+ virtual void SetDFFormatL( TDFFormat aFormat )= 0;
+
+ /**
+ The function sets an occurence property to the object. If this function
+ is not called, an occurence is set as TOccurence::EOne.
+ @param aOccurence Occurence property.
+ @publishedPartner
+ @prototype
+ */
+ virtual void SetOccurenceL( TOccurence aOccurence ) =0;
+
+ /**
+ The function sets a scope property to the object. If this function is not
+ called, the scope is set as TScope::EDynamic.
+ @param aScope Scope property.
+ @publishedPartner
+ @prototype
+ */
+ virtual void SetScopeL( TScope aScope ) = 0;
+
+ /**
+ The function sets a title property to the object. Title is not a mandatory
+ element. If this function is not called, it means that a Title property
+ value is not set at all.
+ @param aTitle DFTitle property.
+ @publishedPartner
+ @prototype
+ */
+ virtual void SetDFTitleL( const TDesC8& aTitle ) = 0;
+
+ /**
+ The function sets a MIME type property to the object. MIME Type is a
+ mandatory element for leaf objects. If this function is not called (for
+ node elements), it means that the MIME type property value is not set at
+ all.
+ @param aMimeType MIME type property.
+ @publishedPartner
+ @prototype
+ */
+ virtual void AddDFTypeMimeTypeL( const TDesC8& aMimeType ) = 0;
+
+ /**
+ The function sets an object as an object group. If this function is not
+ called, it means that the object is not an object group. Object group is a
+ term used with for the node in the management tree that is used as a
+ container for other object groups, container for management objects or a
+ container for both object groups and management objects. The term 'object
+ group' is not used when talked about the nodes which are part of
+ the management object itself.
+ @publishedPartner
+ @withdrawn - This is not supported. MSmlDmDDFObject::AddChildObjectGroupL
+ * must be used instead of AddChildObjectL,SetAsObjectGroup.
+ */
+ virtual void SetAsObjectGroup() = 0;
+
+ /**
+ The function adds a child object and sets name of the URI segment, which
+ is used by the DM server. The highest object must be directly under root.
+ An adapter is not able to set properties of the root object. The aNodeName
+ argument should be an empty string, when the name is not fixed in DDF,
+ i.e. in case of dynamic nodes.
+ @param aNodeName The name of the node
+ @publishedPartner
+ @prototype
+ */
+ virtual MSmlDmDDFObject& AddChildObjectL(const TDesC8& aNodeName) = 0;
+
+ /**
+ The function adds a child object, to be used as an object group. As an
+ object group, there is no node name (these nodes are 'unnamed' in the DDF).
+ Object group is a term used with for nodes in the management tree that are
+ used as a container for other object groups, container for management
+ objects or a container for both object groups and management objects. The
+ term 'object group' is not used when referring to nodes which are part
+ of the management object itself.
+ @publishedPartner
+ @prototype
+ */
+ virtual MSmlDmDDFObject& AddChildObjectGroupL() = 0;
+ };
+
+#include "smldmadapter.inl"
+
+#endif // __SMLDMADAPTER_H__
\ No newline at end of file