mtpfws/mtpfw/dataproviders/dataproviderapi/interface/mmtpdataproviderconfig.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 01:11:40 +0200
changeset 0 d0791faffa3f
permissions -rw-r--r--
Revision: 201003 Kit: 201005

// Copyright (c) 2006-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:
//

/**
 @file
 @publishedPartner
 @released
*/

#ifndef MMTPDATAPROVIDERCONFIG_H
#define MMTPDATAPROVIDERCONFIG_H

#include <e32std.h>

/**
Defines the data provider configurability parameter interface.
@publishedPartner
@released
*/
class MMTPDataProviderConfig
	{
public:

    /**
    Defines the data provider configurability parameters.
    */
    enum TParameter
        {
	    /**
	    This parameter specifies the type of the data provider which in turn 
	    determines how it will be loaded. The set of valid parameter values is 
	    defined by the @see TMTPDataProviderType enumeration.
	    
	    This parameter value can be accessed using the @see UintValue API.
	    */
        EDataProviderType,

	    /**
	    This parameter specifies the highest major MTP protocol revision 
	    supported by the data provider. MTP protocol revision identifiers take 
	    the form N.N, of which the major protocol revision comprises the most 
	    significant digit(s) to the left of the period (.), e.g. a major 
	    protocol version value of 1 would represent all MTP protocol revisions 
	    from 1.0 up to (but not including) 2.0. 
	    
	    This parameter value can be accessed using the @see UintValue API.
	    */
        EMajorProtocolRevision,						
        
	    /**
	    This parameter indicates whether the object enumerations which the data 
	    provider registers with the MTP object manager should persist when the 
	    data provider is unloaded from the MTP framework. If the persistent 
	    option is selected, then on each subsequent activation after its 
	    initial object store enumeration is complete the data provider will be 
	    required to re-enumerate only that portion of its object store which 
	    has changed (objects added, removed, or modified) since it was last 
	    loaded. If the persistent option is not selected, then the data 
	    provider will be required to re-enumerate its entire object store each 
	    time it is loaded. 
	    
	    This parameter value can be accessed using the @see BoolValue API
	    */
        EObjectEnumerationPersistent,
        	
	    /**
	    This parameter specifies the modes of operation which the data provider
	    supports. It is specified as an integer which encodes a set of bit 
	    flags. The set of valid bit flag values is defined by the @see TMTPMode
	    enumeration. 
	    
	    The set of parameter values can be accessed using the 
	    @see GetArrayValue API.
	    */
        ESupportedModes,				

	    /**
	    This parameter is reserved for future use.
	    */
        EServerName,			
        
	    /**
	    This parameter is reserved for future use.
	    */
        EServerImageName,			
        
        /**
        This parameter specifies an optional configuration data resource whose
        form and function is specific to the data provider. 
        
        The parameter value is specified as an LLINK resource and can be 
        accessed using the @see DesC8Value API.
        */
        EOpaqueResource,
        
        /**
        This parameter specifies the resource filename in which the set of data 
        provider configurability parameter values are specified.
	    
	    The set of parameter values can be accessed using the 
	    @see DesCValue API.
        */
        EResourceFileName,

	    /**
	    This parameter specifies the enumeration phase of the data provider	    
	    
	    This parameter value can be accessed using the @see UintValue API.
	    */	    
        EEnumerationPhase
        };

public:

    /**
    Provides the specified @see TBool parameter value.
    @param aParam The parameter value to retrieve.
    @return Returns The parameter value
    @panic USER 0, if the parameter data type is not @see TBool.
    */
    virtual TBool BoolValue(TParameter aParam) const = 0;

    /**
    Provides the specified @see TDesC parameter value.
    @param aParam The parameter value to retrieve.
    @return Returns The parameter value
    @panic USER 0, if the parameter data type is not @see TDesC.
    */
	virtual const TDesC& DesCValue(TParameter aParam) const = 0;

    /**
    Provides the specified @see TDesC8 parameter value.
    @param aParam The parameter value to retrieve.
    @return Returns The parameter value
    @panic USER 0, if the parameter data type is not @see TDesC8.
    */
	virtual const TDesC8& DesC8Value(TParameter aParam) const = 0;

    /**
    Provides the specified @see TUint parameter value.
    @param aParam The parameter value to retrieve.
    @return Returns The parameter value
    @panic USER 0, if the parameter data type is not @see TUint.
    */
	virtual TUint UintValue(TParameter aParam) const = 0;
	
    /**
    Retrieves the specified @see RArray<TUint> parameter value.
    @param aParam The parameter value to retrieve.
    @return Returns The parameter value
    @panic USER 0, if the parameter data type is not @see RArray<TUint>.
    */
    virtual void GetArrayValue(TParameter aParam, RArray<TUint>& aArray) const = 0;
	};

#endif // MMTPDATAPROVIDERCONFIG_H