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

// Copyright (c) 2007-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 MTPDATAPROVIDERAPITYPES_H
#define MTPDATAPROVIDERAPITYPES_H

#include <mtp/mtpdataproviderconfig.hrh>

class MMTPConnection;

/** 
Defines the various data provider type categories.
@publishedPartner
@released
*/
enum TMTPDataProviderTypes
    {
    /**
    ECOM plug-in.
    */
    EEcom   = KMTPDataProviderTypeECOM
    };

/** 
Defines the MTP framework operational modes.
@publishedPartner
@released
*/
enum TMTPOperationalMode
    {
    /**
    Undefined mode.
    */
    EModeUnknown    = KMTPModeUnknown,
    
    /**
    MTP Mode.
    */
    EModeMTP        = KMTPModeMTP,
    
    /**
    PTP Mode.
    */
    EModePTP        = KMTPModePTP,
    
    /**
    PictBridge Mode.
    */
    EModePictBridge = KMTPModePictBridge,
    
	};

/** 
Defines the MTP framework event notification types.
@publishedPartner
@released
*/
enum TMTPNotification
    {
    /**
    This notification indicates that the operational mode of the MTP data 
    provider framework has changed. Details of the mode change are provided in
    the accompanying @see TMTPNotificationParamsSessionChange notification 
    parameter block.
    */
    EMTPModeChanged,
    
    /**
    This notification indicates that an active MTP session has become inactive. 
    Details of the session are provided in the accompanying 
    @see TMTPNotificationParamsSessionChange notification parameter block.
    */
    EMTPSessionClosed,

    /**
    This notification indicates that a new MTP session has become active. 
    Details of the session are provided in the accompanying 
    @see TMTPNotificationParamsSessionChange notification parameter block.
    */
    EMTPSessionOpened,

    /**
    This notification indicates that a new MTP storage has become available as
    a result of the insertion of removable storage media. 
    Details of the storage are provided in the accompanying 
    @see TMTPNotificationParamsStorageChange notification parameter block.
    */
    EMTPStorageAdded,

    /**
    This notification indicates that an MTP storage has become unavailable as
    a result of the removal of removable storage media. 
    Details of the storage are provided in the accompanying 
    @see TMTPNotificationParamsStorageChange notification parameter block.
    */
    EMTPStorageRemoved,
	
	/**
    This notification indicates that an MTP storage has become unavailable as
    a result of the usb cable removed. 
    Details of the storage are provided in the accompanying     
    */
	EMTPDisconnected,
	
	/**
	This notification indicates that an MTP Object has been Renamed.
	*/
	EMTPRenameObject,
	
	EMTPObjectAdded
    };

/**
Defines the notification parameter block which accompanies @see EMTPModeChanged 
notifications.
*/
class TMTPNotificationParamsModeChange
    {
public:

    /**
    The new MTP operational mode TO which the MTP framework is 
    transitioning.
    */
    TMTPOperationalMode    iNewMode;
    
    /**
    The previous MTP operational mode FROM which the MTP framework is 
    transitioning.
    */
    TMTPOperationalMode    iPreviousMode;
    };

/**
Defines the notification parameter block which accompanies @see ESessionOpened 
and @see ESessionClosed notifications.
*/
class TMTPNotificationParamsSessionChange
    {
public:

    /**
    The MTP connection assigned identifier of the session.
    */
    TUint           iMTPId;

    /**
    The MTP connection on which the exists.
    */
    MMTPConnection& iConnection;
    };

/**
Defines the notification parameter block which accompanies @see EStorageAdded 
and @see EStorageRemoved notifications.
*/
class TMTPNotificationParamsStorageChange
    {
public:

    /**
    The MTP StorageID assigned to the storage.
    */
    TUint32 iStorageId;
    };
    
/** 
Defines the various data provider MTP feature support categories.
@publishedPartner
@released
*/
enum TMTPSupportCategory
    {
    /**
    MTP association type datacodes.
    */
    EAssociationTypes       = 0,
    
    /**
    MTP device property identifier datacodes.
    */
    EDeviceProperties       = 1,
    
    /**
    MTP event identifier datacodes.
    */
    EEvents                 = 2,

    /**
    Produced MTP object format identifier datacodes.
    */
    EObjectCaptureFormats   = 3,

    /**
    Consumed MTP object format identifier datacodes.
    */
    EObjectPlaybackFormats  = 4,
    
    /**
    MTP object property identifier datacodes.
    */
    EObjectProperties       = 5,

    /**
    MTP operation identifier datacodes.
    */
    EOperations             = 6,  
    
    /**
    Supported storage systems (@see CMTPStorageMetaData::TStorageSystemType).
    */
    EStorageSystemTypes     = 7,
    
    /**
    MTP extension set identifier strings.
    */
    EVendorExtensionSets    = 8,
    
    /**
    Folder exclusion list strings
     */
    EFolderExclusionSets    = 9,
    
    /**
    Format code and file extension mapping strings
     */
    EFormatExtensionSets    = 10,
    
    /**
    MTP Device Service Extension service identifier strings.
    */
    EServiceIDs    = 11,

    /**
    The number of supported categories.
    */
    ENumCategories
    };

/** 
Defines the MTP operation transaction processing phases.
@publishedPartner
@released
*/
enum TMTPTransactionPhase
{
    /**
    Transaction phase unspecified.
    */
    EUndefined          = 0x00000000,
	
    /**
    No MTP transaction is in-progress.
    */
	EIdlePhase          = 0x00000001,
	
    /**
    MTP request phase.
    */
    ERequestPhase       = 0x00000002,
	
    /**
    MTP data phase (data flow direction is MTP initiator to MTP responder).
    */
    EDataIToRPhase      = 0x00000004,
	
    /**
    MTP data phase (data flow direction is MTP responder to MTP initiator).
    */
    EDataRToIPhase      = 0x00000008,
	
    /**
    MTP response phase.
    */
    EResponsePhase      = 0x00000010,
	
    /**
    Transaction conmpleting phase.
    */
    ECompletingPhase    = 0x00000020
};

class TMTPNotificationParamsHandle
{
public:

/**
The MTP framework assigned Object Handle in the session.
*/
TUint32           iHandleId;   
/**
The MTP framework assigned Object FileName in the session.
*/
TFileName         iFileName;

};

#endif // MTPDATAPROVIDERAPITYPES_H