mtpfws/mtpfw/src/cmtpdataprovider.cpp
changeset 49 c20dd21d1eb4
parent 29 3ae5cb0b4c02
child 54 4dc88a4ac6f4
equal deleted inserted replaced
41:2c19c7cf5550 49:c20dd21d1eb4
    30 #include "cmtpstoragemgr.h"
    30 #include "cmtpstoragemgr.h"
    31 #include "mmtptransactionproxy.h"
    31 #include "mmtptransactionproxy.h"
    32 #include "rmtpframework.h"
    32 #include "rmtpframework.h"
    33 #include "cdummydp.h"
    33 #include "cdummydp.h"
    34 #include "cmtpdatacodegenerator.h"
    34 #include "cmtpdatacodegenerator.h"
    35 
    35 #include "mtpdebug.h"
    36 // Class constants.
    36 #include "OstTraceDefinitions.h"
    37 __FLOG_STMT(_LIT8(KComponent,"DataProvider");)
    37 #ifdef OST_TRACE_COMPILER_IN_USE
       
    38 #include "cmtpdataproviderTraces.h"
       
    39 #endif
       
    40 
       
    41 
    38 
    42 
    39 const TInt KWaitForEnumeration = 1000000 * 3;
    43 const TInt KWaitForEnumeration = 1000000 * 3;
    40 
    44 
    41 #define KMTPDummyDataProvider             0x0000
    45 #define KMTPDummyDataProvider             0x0000
    42 
    46 
    76 /**
    80 /**
    77 Destructor.
    81 Destructor.
    78 */
    82 */
    79 CMTPDataProvider::~CMTPDataProvider()
    83 CMTPDataProvider::~CMTPDataProvider()
    80     {
    84     {
    81     __FLOG_VA((_L8("~CMTPDataProvider - Entry, data provider %d "), iId));
    85     OstTraceFunctionEntry0( CMTPDATAPROVIDER_CMTPDATAPROVIDER_DES_ENTRY );
       
    86     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_CMTPDATAPROVIDER_DES, 
       
    87             "data provider %d ", iId);
       
    88 
    82     Cancel();
    89     Cancel();
    83     iSupported.ResetAndDestroy();
    90     iSupported.ResetAndDestroy();
    84     delete iImplementation;
    91     delete iImplementation;
    85     iSingletons.Close();
    92     iSingletons.Close();
    86 
    93 
    89         {
    96         {
    90         delete iConfig;
    97         delete iConfig;
    91         }
    98         }
    92 	
    99 	
    93 	iTimer.Close();  
   100 	iTimer.Close();  
    94     __FLOG_VA((_L8("~CMTPDataProvider - Exit, data provider %d "), iId));
   101     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_CMTPDATAPROVIDER_DES, 
    95     __FLOG_CLOSE;
   102             "data provider %d ", iId);	
       
   103     OstTraceFunctionExit0( CMTPDATAPROVIDER_CMTPDATAPROVIDER_EXIT );
    96     }
   104     }
    97     
   105     
    98 void CMTPDataProvider::ExecuteEventL(const TMTPTypeEvent& aEvent, MMTPConnection& aConnection)
   106 void CMTPDataProvider::ExecuteEventL(const TMTPTypeEvent& aEvent, MMTPConnection& aConnection)
    99     {   
   107     {   
   100     __FLOG_VA((_L8("ExecuteEventL - Entry, data provider %d "), iId));
   108     OstTraceFunctionEntry0( CMTPDATAPROVIDER_EXECUTEEVENTL_ENTRY );
       
   109     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_EXECUTEEVENTL, 
       
   110             "data provider %d ", iId);
   101     __ASSERT_DEBUG(iImplementation, User::Invariant());
   111     __ASSERT_DEBUG(iImplementation, User::Invariant());
   102 	
   112 	
   103     if (iTimerActive && aEvent.Uint16(TMTPTypeEvent::EEventCode) == EMTPEventCodeCancelTransaction)
   113     if (iTimerActive && aEvent.Uint16(TMTPTypeEvent::EEventCode) == EMTPEventCodeCancelTransaction)
   104 	    {
   114 	    {
   105 	    Cancel();
   115 	    Cancel();
   106 	    }
   116 	    }
   107     
   117     
   108     // Pass this event notification directly to the plugin...
   118     // Pass this event notification directly to the plugin...
   109     // In reality we will only ever see one event canceltransaction.
   119     // In reality we will only ever see one event canceltransaction.
   110     iImplementation->ProcessEventL(aEvent, aConnection);
   120     iImplementation->ProcessEventL(aEvent, aConnection);
   111     __FLOG_VA((_L8("ExecuteEventL - Exit, data provider %d "), iId));
   121     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_EXECUTEEVENTL, 
       
   122             "data provider %d ", iId);        
       
   123     OstTraceFunctionExit0( CMTPDATAPROVIDER_EXECUTEEVENTL_EXIT );
   112     }
   124     }
   113         
   125         
   114 void CMTPDataProvider::ExecuteRequestL(const TMTPTypeRequest& aRequest, MMTPConnection& aConnection)
   126 void CMTPDataProvider::ExecuteRequestL(const TMTPTypeRequest& aRequest, MMTPConnection& aConnection)
   115     {
   127     {
   116     __FLOG_VA((_L8("ExecuteRequestL - Entry, data provider %d "), iId));
   128     OstTraceFunctionEntry0( CMTPDATAPROVIDER_EXECUTEREQUESTL_ENTRY );
       
   129     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_EXECUTEREQUESTL, 
       
   130             "data provider %d ", iId);
   117     __ASSERT_DEBUG(iImplementation, User::Invariant());
   131     __ASSERT_DEBUG(iImplementation, User::Invariant());
   118                
   132                
   119     iCurrentRequest = &aRequest;
   133     iCurrentRequest = &aRequest;
   120     iCurrentConnection = &iSingletons.ConnectionMgr().ConnectionL(aConnection.ConnectionId());
   134     iCurrentConnection = &iSingletons.ConnectionMgr().ConnectionL(aConnection.ConnectionId());
   121     // Schedule data provider to process this request.  
   135     // Schedule data provider to process this request.  
   122     Schedule(); 
   136     Schedule(); 
   123     
   137     
   124     __FLOG_VA((_L8("ExecuteRequestL - Exit, data provider %d "), iId));
   138     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_EXECUTEREQUESTL, 
       
   139             "data provider %d ", iId);    
       
   140     OstTraceFunctionExit0( CMTPDATAPROVIDER_EXECUTEREQUESTL_EXIT );
   125     }
   141     }
   126     
   142     
   127 EXPORT_C void CMTPDataProvider::ExecuteProxyRequestL(const TMTPTypeRequest& aRequest, MMTPConnection& aConnection, MMTPTransactionProxy& aProxy)
   143 EXPORT_C void CMTPDataProvider::ExecuteProxyRequestL(const TMTPTypeRequest& aRequest, MMTPConnection& aConnection, MMTPTransactionProxy& aProxy)
   128     {
   144     {
   129     __FLOG_VA((_L8("ExecuteProxyRequestL - Entry, data provider %d "), iId));
   145     OstTraceFunctionEntry0( CMTPDATAPROVIDER_EXECUTEPROXYREQUESTL_ENTRY );
       
   146     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_EXECUTEPROXYREQUESTL, 
       
   147             "data provider %d ", iId);    
   130     iProxy = &aProxy;
   148     iProxy = &aProxy;
   131     iCurrentRequest    = &aRequest;
   149     iCurrentRequest    = &aRequest;
   132     iCurrentConnection = static_cast<CMTPConnection*>(&aConnection);
   150     iCurrentConnection = static_cast<CMTPConnection*>(&aConnection);
   133     Schedule();
   151     Schedule();
   134     __FLOG_VA((_L8("ExecuteProxyRequestL - Exit, data provider %d "), iId));
   152     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_EXECUTEPROXYREQUESTL, 
       
   153             "data provider %d ", iId);      
       
   154     OstTraceFunctionExit0( CMTPDATAPROVIDER_EXECUTEPROXYREQUESTL_EXIT );      
   135     }
   155     }
   136     
   156     
   137 void CMTPDataProvider::ExecutePendingRequestL()
   157 void CMTPDataProvider::ExecutePendingRequestL()
   138     {
   158     {
   139     __FLOG_VA((_L8("SchedulePendingRequestL - Entry")));
   159     OstTraceFunctionEntry0( CMTPDATAPROVIDER_EXECUTEPENDINGREQUESTL_ENTRY );
   140     
   160     
   141     if (iCurrentRequest != NULL && !IsActive())
   161     if (iCurrentRequest != NULL && !IsActive())
   142         {
   162         {
   143         Schedule();
   163         Schedule();
   144         }
   164         }
   145     
   165     
   146     __FLOG_VA((_L8("SchedulePendingRequestL - Exit")));
   166     OstTraceFunctionExit0( CMTPDATAPROVIDER_EXECUTEPENDINGREQUESTL_EXIT );
   147     }
   167     }
   148 
   168 
   149 void CMTPDataProvider::EnumerateObjectsL(TUint32 aStorageId)
   169 void CMTPDataProvider::EnumerateObjectsL(TUint32 aStorageId)
   150     {
   170     {
   151     __FLOG_VA((_L8("EnumerateObjectsL - Entry, data provider %d "), iId));
   171     OstTraceFunctionEntry0( CMTPDATAPROVIDER_ENUMERATEOBJECTSL_ENTRY );
       
   172     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_ENUMERATEOBJECTSL, 
       
   173             "data provider %d ", iId);      
   152     iEnumerationState = ((iEnumerationState & ~EObjectsEnumerationState) | EObjectsEnumerating);
   174     iEnumerationState = ((iEnumerationState & ~EObjectsEnumerationState) | EObjectsEnumerating);
   153     TBool abnormaldown = EFalse;
   175     TBool abnormaldown = EFalse;
   154     iSingletons.FrameworkConfig().GetValueL(CMTPFrameworkConfig::EAbnormalDown, abnormaldown);
   176     iSingletons.FrameworkConfig().GetValueL(CMTPFrameworkConfig::EAbnormalDown, abnormaldown);
   155     iImplementation->StartObjectEnumerationL(aStorageId, abnormaldown);
   177     iImplementation->StartObjectEnumerationL(aStorageId, abnormaldown);
   156     __FLOG_VA((_L8("EnumerateObjectsL - Exit, data provider %d "), iId));
   178     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_ENUMERATEOBJECTSL, 
       
   179             "data provider %d ", iId);    
       
   180     OstTraceFunctionExit0( CMTPDATAPROVIDER_ENUMERATEOBJECTSL_EXIT );
   157     }
   181     }
   158 
   182 
   159 void CMTPDataProvider::EnumerateStoragesL()
   183 void CMTPDataProvider::EnumerateStoragesL()
   160     {
   184     {
   161     __FLOG_VA((_L8("EnumerateStoragesL - Entry, data provider %d "), iId));
   185     OstTraceFunctionEntry0( CMTPDATAPROVIDER_ENUMERATESTORAGESL_ENTRY );
       
   186     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_ENUMERATESTORAGESL, 
       
   187             "data provider %d ", iId);    
   162     iEnumerationState = ((iEnumerationState & ~EStoragesEnumerationState) | EStoragesEnumerating);
   188     iEnumerationState = ((iEnumerationState & ~EStoragesEnumerationState) | EStoragesEnumerating);
   163     iImplementation->StartStorageEnumerationL();
   189     iImplementation->StartStorageEnumerationL();
   164     __FLOG_VA((_L8("EnumerateStoragesL - Exit, data provider %d "), iId));
   190     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_ENUMERATESTORAGESL, 
       
   191             "data provider %d ", iId);         
       
   192     OstTraceFunctionExit0( CMTPDATAPROVIDER_ENUMERATESTORAGESL_EXIT );   
   165     }
   193     }
   166 
   194 
   167 /**
   195 /**
   168 Provides the data provider's enumeration state.
   196 Provides the data provider's enumeration state.
   169 @return The data provider's enumeration state.
   197 @return The data provider's enumeration state.
   205 /**
   233 /**
   206 Sets the 
   234 Sets the 
   207 */    
   235 */    
   208 void CMTPDataProvider::SetDataProviderId(TUint aId)
   236 void CMTPDataProvider::SetDataProviderId(TUint aId)
   209     {
   237     {
   210     __FLOG_VA((_L8("~CMTPDataProvider - Entry, data provider %d "), iId));
   238     OstTraceFunctionEntry0( CMTPDATAPROVIDER_SETDATAPROVIDERID_ENTRY );
       
   239     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_SETDATAPROVIDERID, 
       
   240             "data provider %d ", iId);      
   211     iId = aId;
   241     iId = aId;
   212     __FLOG_VA((_L8("~CMTPDataProvider - Entry, data provider %d "), iId));
   242     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_SETDATAPROVIDERID, 
       
   243             "data provider %d ", iId);        
       
   244     OstTraceFunctionExit0( CMTPDATAPROVIDER_SETDATAPROVIDERID_EXIT );
   213     }
   245     }
   214 	
   246 	
   215 /**
   247 /**
   216 Implements a linear order relation for @see CMTPDataProvider 
   248 Implements a linear order relation for @see CMTPDataProvider 
   217 objects based on relative @see CMTPDataProvider::ImplementationUid.
   249 objects based on relative @see CMTPDataProvider::ImplementationUid.
   294     return (iSingletons.DpController().Mode());    
   326     return (iSingletons.DpController().Mode());    
   295     }
   327     }
   296     
   328     
   297 void CMTPDataProvider::ReceiveDataL(MMTPType& aData, const TMTPTypeRequest& aRequest, MMTPConnection& aConnection)
   329 void CMTPDataProvider::ReceiveDataL(MMTPType& aData, const TMTPTypeRequest& aRequest, MMTPConnection& aConnection)
   298     {
   330     {
   299     __FLOG_VA((_L8("ReceiveDataL - Entry, data provider %d "), iId));
   331     OstTraceFunctionEntry0( CMTPDATAPROVIDER_RECEIVEDATAL_ENTRY );
       
   332     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_RECEIVEDATAL, 
       
   333             "data provider %d ", iId);       
   300     __ASSERT_DEBUG(iImplementation, User::Invariant());
   334     __ASSERT_DEBUG(iImplementation, User::Invariant());
   301     __ASSERT_DEBUG(!IsActive(), User::Invariant());
   335     __ASSERT_DEBUG(!IsActive(), User::Invariant());
   302     
   336     
   303     if (iProxy)
   337     if (iProxy)
   304         {
   338         {
   315         CMTPConnection& connection(iSingletons.ConnectionMgr().ConnectionL(aConnection.ConnectionId()));
   349         CMTPConnection& connection(iSingletons.ConnectionMgr().ConnectionL(aConnection.ConnectionId()));
   316         connection.ReceiveDataL(aData, aRequest, iStatus);
   350         connection.ReceiveDataL(aData, aRequest, iStatus);
   317         SetActive();
   351         SetActive();
   318         // Async call so wait for object to be activated...
   352         // Async call so wait for object to be activated...
   319         }
   353         }
   320     __FLOG_VA((_L8("ReceiveDataL - Exit, data provider %d "), iId));
   354     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_RECEIVEDATAL, 
       
   355             "data provider %d ", iId);     
       
   356     OstTraceFunctionExit0( CMTPDATAPROVIDER_RECEIVEDATAL_EXIT );    
   321     }
   357     }
   322 
   358 
   323 void CMTPDataProvider::SendDataL(const MMTPType& aData, const TMTPTypeRequest& aRequest, MMTPConnection& aConnection)
   359 void CMTPDataProvider::SendDataL(const MMTPType& aData, const TMTPTypeRequest& aRequest, MMTPConnection& aConnection)
   324     {
   360     {
   325     __FLOG_VA((_L8("SendDataL - Entry, data provider %d "), iId));
   361     OstTraceFunctionEntry0( CMTPDATAPROVIDER_SENDDATAL_ENTRY );
       
   362     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_SENDDATAL, 
       
   363             "data provider %d ", iId);       
   326     __ASSERT_DEBUG(iImplementation, User::Invariant());
   364     __ASSERT_DEBUG(iImplementation, User::Invariant());
   327     __ASSERT_DEBUG(!IsActive(), User::Invariant());
   365     __ASSERT_DEBUG(!IsActive(), User::Invariant());
   328     
   366     
   329     if (iProxy)
   367     if (iProxy)
   330         {
   368         {
   341         CMTPConnection& connection(iSingletons.ConnectionMgr().ConnectionL(aConnection.ConnectionId()));
   379         CMTPConnection& connection(iSingletons.ConnectionMgr().ConnectionL(aConnection.ConnectionId()));
   342         connection.SendDataL(aData, aRequest, iStatus);
   380         connection.SendDataL(aData, aRequest, iStatus);
   343         SetActive();
   381         SetActive();
   344         // Async call so wait for object to be activated...
   382         // Async call so wait for object to be activated...
   345         }
   383         }
   346     __FLOG_VA((_L8("SendDataL - Exit, data provider %d "), iId));
   384     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_SENDDATAL, 
       
   385             "data provider %d ", iId);       
       
   386     OstTraceFunctionExit0( CMTPDATAPROVIDER_SENDDATAL_EXIT );
   347     }
   387     }
   348 
   388 
   349 void CMTPDataProvider::SendEventL(const TMTPTypeEvent& aEvent, MMTPConnection& aConnection)
   389 void CMTPDataProvider::SendEventL(const TMTPTypeEvent& aEvent, MMTPConnection& aConnection)
   350     {
   390     {
   351     __FLOG_VA((_L8("SendEventL - Entry, data provider %d "), iId));
   391     OstTraceFunctionEntry0( CMTPDATAPROVIDER_SENDEVENTL_TMTPTYPEVENT_MMTPCONNECTION_ENTRY );
       
   392     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_SENDEVENTL_TMTPTYPEVENT_MMTPCONNECTION, 
       
   393             "data provider %d ", iId);       
   352     __ASSERT_DEBUG(iImplementation, User::Invariant());
   394     __ASSERT_DEBUG(iImplementation, User::Invariant());
   353     
   395     
   354     CMTPConnection& connection(iSingletons.ConnectionMgr().ConnectionL(aConnection.ConnectionId()));
   396     CMTPConnection& connection(iSingletons.ConnectionMgr().ConnectionL(aConnection.ConnectionId()));
   355     connection.SendEventL(aEvent);
   397     connection.SendEventL(aEvent);
   356     __FLOG_VA((_L8("SendEventL - Exit, data provider %d "), iId));
   398     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_SENDEVENTL_TMTPTYPEVENT_MMTPCONNECTION, 
       
   399             "data provider %d ", iId);     
       
   400     OstTraceFunctionExit0( CMTPDATAPROVIDER_SENDEVENTL_TMTPTYPEVENT_MMTPCONNECTION_EXIT );        
   357     }
   401     }
   358 
   402 
   359 void CMTPDataProvider::SendEventL(const TMTPTypeEvent& aEvent)
   403 void CMTPDataProvider::SendEventL(const TMTPTypeEvent& aEvent)
   360     {
   404     {
   361     __FLOG_VA((_L8("SendEventL - Entry, data provider %d "), iId));
   405     OstTraceFunctionEntry0( CMTPDATAPROVIDER_SENDEVENTL_TMTPTYPEVENT_ENTRY );
       
   406     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_SENDEVENTL_TMTPTYPEVENT, 
       
   407             "data provider %d ", iId);         
   362     if (aEvent.Uint32(TMTPTypeEvent::EEventSessionID) != KMTPSessionAll)
   408     if (aEvent.Uint32(TMTPTypeEvent::EEventSessionID) != KMTPSessionAll)
   363         {
   409         {
       
   410         OstTrace0( TRACE_ERROR, CMTPDATAPROVIDER_SENDEVENTL, "event session id not KMTPSessionALL!" );
   364         User::Leave(KErrArgument);            
   411         User::Leave(KErrArgument);            
   365         }
   412         }
   366     
   413     
   367     TUint numConnections(iSingletons.ConnectionMgr().ConnectionCount());
   414     TUint numConnections(iSingletons.ConnectionMgr().ConnectionCount());
   368     
   415     
   369     for (TUint i(0); (i < numConnections); i++)
   416     for (TUint i(0); (i < numConnections); i++)
   370         {
   417         {
   371         iSingletons.ConnectionMgr()[i].SendEventL(aEvent);       
   418         iSingletons.ConnectionMgr()[i].SendEventL(aEvent);       
   372         }
   419         }
   373     __FLOG_VA((_L8("SendEventL - Exit, data provider %d "), iId));
   420     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_SENDEVENTL_TMTPTYPEVENT, 
       
   421             "data provider %d ", iId);    
       
   422     OstTraceFunctionExit0( CMTPDATAPROVIDER_SENDEVENTL_TMTPTYPEVENT_EXIT );     
   374     }
   423     }
   375 
   424 
   376 void CMTPDataProvider::SendResponseL(const TMTPTypeResponse& aResponse, const TMTPTypeRequest& aRequest, MMTPConnection& aConnection)
   425 void CMTPDataProvider::SendResponseL(const TMTPTypeResponse& aResponse, const TMTPTypeRequest& aRequest, MMTPConnection& aConnection)
   377     {
   426     {
   378     __FLOG_VA((_L8("SendResponseL - Entry, data provider %d "), iId));
   427     OstTraceFunctionEntry0( CMTPDATAPROVIDER_SENDRESPONSEL_ENTRY );
       
   428     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_SENDRESPONSEL, 
       
   429             "data provider %d ", iId);      
   379     __ASSERT_DEBUG(iImplementation, User::Invariant());
   430     __ASSERT_DEBUG(iImplementation, User::Invariant());
   380     __ASSERT_DEBUG(!IsActive(), User::Invariant());
   431     __ASSERT_DEBUG(!IsActive(), User::Invariant());
   381     
   432     
   382     if (iProxy)
   433     if (iProxy)
   383         {
   434         {
   392         {
   443         {
   393         CMTPConnection& connection(iSingletons.ConnectionMgr().ConnectionL(aConnection.ConnectionId()));
   444         CMTPConnection& connection(iSingletons.ConnectionMgr().ConnectionL(aConnection.ConnectionId()));
   394         connection.SendResponseL(aResponse, aRequest, iStatus);
   445         connection.SendResponseL(aResponse, aRequest, iStatus);
   395         SetActive();
   446         SetActive();
   396         }
   447         }
   397     __FLOG_VA((_L8("SendResponseL - Exit, data provider %d "), iId));
   448     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_SENDRESPONSEL, 
       
   449             "data provider %d ", iId);      
       
   450     OstTraceFunctionExit0( CMTPDATAPROVIDER_SENDRESPONSEL_EXIT );      
   398     }
   451     }
   399 
   452 
   400 void CMTPDataProvider::TransactionCompleteL(const TMTPTypeRequest& aRequest, MMTPConnection& aConnection)
   453 void CMTPDataProvider::TransactionCompleteL(const TMTPTypeRequest& aRequest, MMTPConnection& aConnection)
   401     {
   454     {
   402     __FLOG_VA((_L8("TransactionCompleteL - Entry, data provider %d "), iId));
   455     OstTraceFunctionEntry0( CMTPDATAPROVIDER_TRANSACTIONCOMPLETEL_ENTRY );
       
   456     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_TRANSACTIONCOMPLETEL, 
       
   457             "data provider %d ", iId);      
   403     __ASSERT_DEBUG(iImplementation, User::Invariant());
   458     __ASSERT_DEBUG(iImplementation, User::Invariant());
   404     
   459     
   405     if (iProxy)
   460     if (iProxy)
   406         {
   461         {
   407         // Pass to proxy plugin for processing
   462         // Pass to proxy plugin for processing
   418     // Clear pointers
   473     // Clear pointers
   419     iProxy = NULL;
   474     iProxy = NULL;
   420     iCurrentRequest = NULL;
   475     iCurrentRequest = NULL;
   421     iCurrentConnection = NULL;
   476     iCurrentConnection = NULL;
   422     
   477     
   423     __FLOG_VA((_L8("TransactionCompleteL - Exit, data provider %d "), iId));
   478     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_TRANSACTIONCOMPLETEL, 
       
   479             "data provider %d ", iId);      
       
   480     OstTraceFunctionExit0( CMTPDATAPROVIDER_TRANSACTIONCOMPLETEL_EXIT );
   424     } 
   481     } 
   425     
   482     
   426 void CMTPDataProvider::RouteRequestRegisterL(const TMTPTypeRequest& aRequest, MMTPConnection& aConnection)
   483 void CMTPDataProvider::RouteRequestRegisterL(const TMTPTypeRequest& aRequest, MMTPConnection& aConnection)
   427     {
   484     {
   428     __FLOG_VA((_L8("RouteRequestRegisterL - Entry, data provider %d "), iId));
   485     OstTraceFunctionEntry0( CMTPDATAPROVIDER_ROUTEREQUESTREGISTERL_ENTRY );
       
   486     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_ROUTEREQUESTREGISTERL, 
       
   487             "data provider %d ", iId);    
   429     iSingletons.Router().RouteRequestRegisterL(aRequest, aConnection, iId);
   488     iSingletons.Router().RouteRequestRegisterL(aRequest, aConnection, iId);
   430     __FLOG_VA((_L8("RouteRequestRegisterL - Exit, data provider %d "), iId));
   489     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_ROUTEREQUESTREGISTERL, 
       
   490             "data provider %d ", iId);       
       
   491     OstTraceFunctionExit0( CMTPDATAPROVIDER_ROUTEREQUESTREGISTERL_EXIT );     
   431     }
   492     }
   432 
   493 
   433 void CMTPDataProvider::RouteRequestUnregisterL(const TMTPTypeRequest& aRequest, MMTPConnection& aConnection)
   494 void CMTPDataProvider::RouteRequestUnregisterL(const TMTPTypeRequest& aRequest, MMTPConnection& aConnection)
   434     {
   495     {
   435     __FLOG_VA((_L8("RouteRequestUnregister - Entry, data provider %d "), iId));
   496     OstTraceFunctionEntry0( CMTPDATAPROVIDER_ROUTEREQUESTUNREGISTERL_ENTRY );
       
   497     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_ROUTEREQUESTUNREGISTERL, 
       
   498             "data provider %d ", iId);  
   436     iSingletons.Router().RouteRequestUnregisterL(aRequest, aConnection);
   499     iSingletons.Router().RouteRequestUnregisterL(aRequest, aConnection);
   437     __FLOG_VA((_L8("RouteRequestUnregister - Exit, data provider %d "), iId));
   500     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_ROUTEREQUESTUNREGISTERL, 
   438     }
   501             "data provider %d ", iId);      
   439 
   502     OstTraceFunctionExit0( CMTPDATAPROVIDER_ROUTEREQUESTUNREGISTERL_EXIT );    
   440 #ifdef __FLOG_ACTIVE  	
   503     }
       
   504 
       
   505 
   441 void CMTPDataProvider::ObjectEnumerationCompleteL(TUint32 aStorageId)
   506 void CMTPDataProvider::ObjectEnumerationCompleteL(TUint32 aStorageId)
   442 #else
   507     {
   443 void CMTPDataProvider::ObjectEnumerationCompleteL(TUint32 /*aStorageId*/)
   508     OstTraceFunctionEntry0( CMTPDATAPROVIDER_OBJECTENUMERATIONCOMPLETEL_ENTRY );
   444 #endif // __FLOG_ACTIVE
   509     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_OBJECTENUMERATIONCOMPLETEL, 
   445     {
   510             "data provider %d ", iId);      
   446     __FLOG_VA((_L8("ObjectEnumerationCompleteL - Entry, data provider %d "), iId));
   511     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_OBJECTENUMERATIONCOMPLETEL, 
   447     __FLOG_VA((_L8("StorageId = 0x%08X "), aStorageId));
   512             "StorageId = 0x%08X ", aStorageId);      
   448     iEnumerationState = ((iEnumerationState & ~EObjectsEnumerationState) | EObjectsEnumerated);
   513     iEnumerationState = ((iEnumerationState & ~EObjectsEnumerationState) | EObjectsEnumerated);
   449     iSingletons.DpController().EnumerationStateChangedL(*this);
   514     iSingletons.DpController().EnumerationStateChangedL(*this);
   450     __FLOG_VA((_L8("ObjectEnumerationCompleteL - Exit, data provider %d "), iId));
   515     OstTrace1(TRACE_NORMAL, DUP2_CMTPDATAPROVIDER_OBJECTENUMERATIONCOMPLETEL, 
       
   516             "data provider %d ", iId);      
       
   517     OstTraceFunctionExit0( CMTPDATAPROVIDER_OBJECTENUMERATIONCOMPLETEL_EXIT );    
   451     }
   518     }
   452     
   519     
   453 void CMTPDataProvider::StorageEnumerationCompleteL()
   520 void CMTPDataProvider::StorageEnumerationCompleteL()
   454     {
   521     {
   455     __FLOG_VA((_L8("StorageEnumerationCompleteL - Entry, data provider %d "), iId));
   522     OstTraceFunctionEntry0( CMTPDATAPROVIDER_STORAGEENUMERATIONCOMPLETEL_ENTRY );
       
   523     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_STORAGEENUMERATIONCOMPLETEL, 
       
   524             "data provider %d ", iId);          
   456     iEnumerationState = ((iEnumerationState & ~EStoragesEnumerationState) | EStoragesEnumerated);
   525     iEnumerationState = ((iEnumerationState & ~EStoragesEnumerationState) | EStoragesEnumerated);
   457     iSingletons.DpController().EnumerationStateChangedL(*this);
   526     iSingletons.DpController().EnumerationStateChangedL(*this);
   458     __FLOG_VA((_L8("StorageEnumerationCompleteL - Exit, data provider %d "), iId));
   527     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_STORAGEENUMERATIONCOMPLETEL, 
       
   528             "data provider %d ", iId);    
       
   529     OstTraceFunctionExit0( CMTPDATAPROVIDER_STORAGEENUMERATIONCOMPLETEL_EXIT );          
   459     }
   530     }
   460 
   531 
   461 const MMTPDataProviderConfig& CMTPDataProvider::DataProviderConfig() const
   532 const MMTPDataProviderConfig& CMTPDataProvider::DataProviderConfig() const
   462 	{
   533 	{
   463 	return *iConfig;
   534 	return *iConfig;
   493     return iSingletons.DataCodeGenerator();
   564     return iSingletons.DataCodeGenerator();
   494     }
   565     }
   495 
   566 
   496 void CMTPDataProvider::NotifyFrameworkL( TMTPNotificationToFramework aNotification, const TAny* aParams )
   567 void CMTPDataProvider::NotifyFrameworkL( TMTPNotificationToFramework aNotification, const TAny* aParams )
   497     {
   568     {
   498     __FLOG(_L8("NotifyFrameworkL - Entry"));
   569     OstTraceFunctionEntry0( CMTPDATAPROVIDER_NOTIFYFRAMEWORKL_ENTRY );
   499     
   570     
   500     __ASSERT_DEBUG( aParams, User::Invariant());
   571     __ASSERT_DEBUG( aParams, User::Invariant());
   501     
   572     
   502     switch ( aNotification )
   573     switch ( aNotification )
   503         {
   574         {
   506         TUint deviceDpId = iSingletons.DpController().DeviceDpId();
   577         TUint deviceDpId = iSingletons.DpController().DeviceDpId();
   507         iSingletons.DpController().NotifyDataProvidersL( deviceDpId, EMTPObjectAdded, aParams );
   578         iSingletons.DpController().NotifyDataProvidersL( deviceDpId, EMTPObjectAdded, aParams );
   508         }
   579         }
   509         break;
   580         break;
   510     default:
   581     default:
   511         __FLOG(_L8("Ignore other notification"));
   582         OstTrace0(TRACE_NORMAL, CMTPDATAPROVIDER_NOTIFYFRAMEWORKL, "Ignore other notification");
   512         break;
   583         break;
   513         }
   584         }
   514     
   585     
   515     __FLOG(_L8("NotifyFrameworkL - Exit"));
   586     OstTraceFunctionExit0( CMTPDATAPROVIDER_NOTIFYFRAMEWORKL_EXIT );
   516     }
   587     }
   517 
   588 
   518 void CMTPDataProvider::RegisterPendingRequest(TUint aTimeOut)
   589 void CMTPDataProvider::RegisterPendingRequest(TUint aTimeOut)
   519     {
   590     {
   520     __FLOG(_L8("RegisterPendingRequestL - Entry"));
   591     OstTraceFunctionEntry0( CMTPDATAPROVIDER_REGISTERPENDINGREQUEST_ENTRY );
   521     
   592     
   522     iSingletons.DpController().RegisterPendingRequestDP(iImplementationUid.iUid, aTimeOut);
   593     iSingletons.DpController().RegisterPendingRequestDP(iImplementationUid.iUid, aTimeOut);
   523     
   594     
   524     __FLOG(_L8("RegisterPendingRequestL - Exit"));
   595     OstTraceFunctionExit0( CMTPDATAPROVIDER_REGISTERPENDINGREQUEST_EXIT );
   525     }
   596     }
   526 
   597 
   527 void CMTPDataProvider::DoCancel()
   598 void CMTPDataProvider::DoCancel()
   528     {
   599     {
   529     __FLOG_VA((_L8("DoCancel - Entry, data provider %d "), iId));
   600     OstTraceFunctionEntry0( CMTPDATAPROVIDER_DOCANCEL_ENTRY );
   530     __FLOG_VA((_L8("DoCancel - Exit, data provider %d "), iId)); 
   601     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_DOCANCEL, 
       
   602             "data provider %d ", iId);      
   531 	
   603 	
   532     if (iTimerActive)
   604     if (iTimerActive)
   533 	    {
   605 	    {
   534 	    iTimer.Cancel();
   606 	    iTimer.Cancel();
   535 	    iTimerActive = EFalse;
   607 	    iTimerActive = EFalse;
   537     else
   609     else
   538 	    {
   610 	    {
   539     	TRequestStatus* status = &iStatus;
   611     	TRequestStatus* status = &iStatus;
   540 	    User::RequestComplete(status, KErrCancel);
   612 	    User::RequestComplete(status, KErrCancel);
   541 	    }  
   613 	    }  
       
   614     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_DOCANCEL, 
       
   615             "data provider %d ", iId);       
       
   616     OstTraceFunctionExit0( CMTPDATAPROVIDER_DOCANCEL_EXIT );
   542     }
   617     }
   543     
   618     
   544 void CMTPDataProvider::RunL()
   619 void CMTPDataProvider::RunL()
   545     {  
   620     {  
   546     __FLOG_VA((_L8("RunL - Entry, data provider %d "), iId));
   621     OstTraceFunctionEntry0( CMTPDATAPROVIDER_RUNL_ENTRY );
   547     __MTP_HEAP_FLOG
   622     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_RUNL, 
       
   623             "data provider %d ", iId);   
       
   624 #ifdef OST_TRACE_COMPILER_IN_USE
       
   625     __MTP_HEAP_OSTTRACE(OstTraceExt4(TRACE_NORMAL,DUP6_CMTPDATAPROVIDER_RUNL,"Heap: Size = %d, Allocated = %d, Available = %d, Largest block = %d", size, allocated, available, largest));
       
   626 #endif
   548     __ASSERT_DEBUG(iCurrentConnection, User::Invariant());
   627     __ASSERT_DEBUG(iCurrentConnection, User::Invariant());
   549      
   628      
   550 	
   629 	
   551     iTimerActive = EFalse; 
   630     iTimerActive = EFalse; 
   552 
   631 
   559         if (iCurrentRequest != NULL)
   638         if (iCurrentRequest != NULL)
   560             {
   639             {
   561             iCurrentTransactionPhase = iCurrentConnection->TransactionPhaseL(iCurrentRequest->Uint32(TMTPTypeRequest::ERequestSessionID));
   640             iCurrentTransactionPhase = iCurrentConnection->TransactionPhaseL(iCurrentRequest->Uint32(TMTPTypeRequest::ERequestSessionID));
   562             }
   641             }
   563         }
   642         }
   564     __FLOG_VA((_L8("Current transaction phase = 0x%08X"), iCurrentTransactionPhase));
   643     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_RUNL, "Current transaction phase = 0x%08X", iCurrentTransactionPhase);
   565     
   644     
   566     TInt status(iStatus.Int());
   645     TInt status(iStatus.Int());
   567     if ((status != KErrNone) &&
   646     if ((status != KErrNone) &&
   568     	(status != KErrAbort) &&
   647     	(status != KErrAbort) &&
   569     	(status != KErrCancel))
   648     	(status != KErrCancel))
   589         }
   668         }
   590 
   669 
   591     
   670     
   592     if (iErrorRecovery != KErrNone)
   671     if (iErrorRecovery != KErrNone)
   593         {
   672         {
   594         __FLOG(_L8("Error recovery in progress"));
   673         OstTrace0(TRACE_NORMAL, DUP2_CMTPDATAPROVIDER_RUNL, "Error recovery in progress");
   595         switch (iCurrentTransactionPhase)
   674         switch (iCurrentTransactionPhase)
   596             {
   675             {
   597         case ERequestPhase:
   676         case ERequestPhase:
   598         case EDataIToRPhase:
   677         case EDataIToRPhase:
   599         case EDataRToIPhase:
   678         case EDataRToIPhase:
   601             SendErrorResponseL(iErrorRecovery);
   680             SendErrorResponseL(iErrorRecovery);
   602             break;
   681             break;
   603             
   682             
   604         case ECompletingPhase:
   683         case ECompletingPhase:
   605             TRAPD(err, iImplementation->ProcessRequestPhaseL(iCurrentTransactionPhase, *iCurrentRequest, *iCurrentConnection));
   684             TRAPD(err, iImplementation->ProcessRequestPhaseL(iCurrentTransactionPhase, *iCurrentRequest, *iCurrentConnection));
   606             __FLOG_VA((_L8("iImplementation->ProcessRequestPhaseL error %d"), err));
   685             OstTrace1(TRACE_NORMAL, DUP3_CMTPDATAPROVIDER_RUNL, 
       
   686                     "iImplementation->ProcessRequestPhaseL error %d", err);
   607             if (err != KErrNone)
   687             if (err != KErrNone)
   608                 {
   688                 {
       
   689                 OstTraceDef1(OST_TRACE_CATEGORY_PRODUCTION, TRACE_IMPORTANT, DUP8_CMTPDATAPROVIDER_RUNL, 
       
   690                         "iImplementation->ProcessRequestPhaseL error %d", err );
   609                 TransactionCompleteL(*iCurrentRequest, *iCurrentConnection);   
   691                 TransactionCompleteL(*iCurrentRequest, *iCurrentConnection);   
   610                 }
   692                 }
   611             iErrorRecovery = KErrNone;
   693             iErrorRecovery = KErrNone;
   612             break;
   694             break;
   613             
   695             
   616             }
   698             }
   617         }
   699         }
   618     
   700     
   619 		else if (iSingletons.DpController().EnumerateState() < CMTPDataProviderController::EEnumeratingPhaseOneDone)
   701 		else if (iSingletons.DpController().EnumerateState() < CMTPDataProviderController::EEnumeratingPhaseOneDone)
   620     	{
   702     	{
   621         __FLOG(_L8("DP Enumeration is not complete"));
   703         OstTrace0(TRACE_NORMAL, DUP4_CMTPDATAPROVIDER_RUNL, "DP Enumeration is not complete");
   622         if (iCurrentRequest != NULL)
   704         if (iCurrentRequest != NULL)
   623         {
   705         {
   624         TUint16 opCode = iCurrentRequest->Uint16(TMTPTypeRequest::ERequestOperationCode);
   706         TUint16 opCode = iCurrentRequest->Uint16(TMTPTypeRequest::ERequestOperationCode);
   625 
   707 
   626         switch(opCode)
   708         switch(opCode)
   698                   }
   780                   }
   699         	}
   781         	}
   700         
   782         
   701         }
   783         }
   702     
   784     
   703     __MTP_HEAP_FLOG
   785 #ifdef OST_TRACE_COMPILER_IN_USE
   704     __FLOG_VA((_L8("RunL - Exit, data provider %d "), iId));
   786     __MTP_HEAP_OSTTRACE(OstTraceExt4(TRACE_NORMAL,DUP7_CMTPSERVER_E32MAIN_HEAP,"Heap: Size = %d, Allocated = %d, Available = %d, Largest block = %d", size, allocated, available, largest));
       
   787 #endif
       
   788     OstTrace1(TRACE_NORMAL, DUP5_CMTPDATAPROVIDER_RUNL, 
       
   789             "data provider %d ", iId);      
       
   790     OstTraceFunctionExit0( CMTPDATAPROVIDER_RUNL_EXIT );
   705     }
   791     }
   706      
   792      
   707 TInt CMTPDataProvider::RunError(TInt aError)
   793 TInt CMTPDataProvider::RunError(TInt aError)
   708 	{
   794 	{
   709     __FLOG_VA((_L8("RunError - Entry, data provider %d "), iId));
   795     OstTraceFunctionEntry0( CMTPDATAPROVIDER_RUNERROR_ENTRY );
   710     __FLOG_VA((_L8("Error = %d"), aError));
   796     OstTraceDef1(OST_TRACE_CATEGORY_PRODUCTION, TRACE_IMPORTANT, CMTPDATAPROVIDER_RUNERROR, 
       
   797             "data provider %d ", iId);  
       
   798     OstTraceDef1(OST_TRACE_CATEGORY_PRODUCTION, TRACE_IMPORTANT, DUP1_CMTPDATAPROVIDER_RUNERROR, "Error = %d", aError); 
   711     
   799     
   712     /* 
   800     /* 
   713     CMTPDataProvider or iImplementation error, save the error state and 
   801     CMTPDataProvider or iImplementation error, save the error state and 
   714     re-schedule.
   802     re-schedule.
   715     */
   803     */
   716     iErrorRecovery = aError;
   804     iErrorRecovery = aError;
   717     Schedule();
   805     Schedule();
   718     
   806     
   719     __FLOG_VA((_L8("RunError - Exit, data provider %d "), iId));
   807     OstTrace1(TRACE_NORMAL, DUP2_CMTPDATAPROVIDER_RUNERROR, 
       
   808             "data provider %d ", iId);     
       
   809 	OstTraceFunctionExit0( CMTPDATAPROVIDER_RUNERROR_EXIT ); 
   720 	return KErrNone;
   810 	return KErrNone;
   721 	}
   811 	}
   722 
   812 
   723 /**
   813 /**
   724 Constructor.
   814 Constructor.
   741 Second phase constructor.
   831 Second phase constructor.
   742 @leave One of the system wide error codes if a processing failure occurs.
   832 @leave One of the system wide error codes if a processing failure occurs.
   743 */
   833 */
   744 void CMTPDataProvider::ConstructL()
   834 void CMTPDataProvider::ConstructL()
   745 	{
   835 	{
   746     __FLOG_OPEN(KMTPSubsystem, KComponent);
   836     OstTraceFunctionEntry0( CMTPDATAPROVIDER_CONSTRUCTL_ENTRY );
   747     __FLOG_VA((_L8("ConstructL - Entry, data provider %d "), iId));
   837     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_CONSTRUCTL, 
       
   838             "data provider %d ", iId);  
   748     
   839     
   749     iSingletons.OpenL();
   840     iSingletons.OpenL();
   750     TUint tDPType = iConfig->UintValue(MMTPDataProviderConfig::EDataProviderType);   
   841     TUint tDPType = iConfig->UintValue(MMTPDataProviderConfig::EDataProviderType);   
   751     const TUint KExcludeCategoryStart = EVendorExtensionSets;
   842     const TUint KExcludeCategoryStart = EVendorExtensionSets;
   752     const TUint KExcludeCategoryEnd = EFormatExtensionSets;
   843     const TUint KExcludeCategoryEnd = EFormatExtensionSets;
   758             {
   849             {
   759             CSupportedCodes* codes = CSupportedCodes::NewLC(static_cast<TMTPSupportCategory>(i), Plugin());
   850             CSupportedCodes* codes = CSupportedCodes::NewLC(static_cast<TMTPSupportCategory>(i), Plugin());
   760             
   851             
   761             if((i >= KExcludeCategoryStart) && (i <= KExcludeCategoryEnd) && (codes->Codes().Count() >0))
   852             if((i >= KExcludeCategoryStart) && (i <= KExcludeCategoryEnd) && (codes->Codes().Count() >0))
   762             	{
   853             	{
       
   854                 OstTrace1( TRACE_ERROR, DUP3_CMTPDATAPROVIDER_CONSTRUCTL, "Dp MTP feature(%d) contained in exclude category!", i );
   763             	User::Leave(KErrNotSupported);
   855             	User::Leave(KErrNotSupported);
   764             	}
   856             	}
   765             
   857             
   766             iSupported.AppendL(codes);
   858             iSupported.AppendL(codes);
   767             CleanupStack::Pop(codes);
   859             CleanupStack::Pop(codes);
   776         	{
   868         	{
   777         	CSupportedCodes* codes = CSupportedCodes::NewLC(static_cast<TMTPSupportCategory>(i), Plugin());
   869         	CSupportedCodes* codes = CSupportedCodes::NewLC(static_cast<TMTPSupportCategory>(i), Plugin());
   778         	
   870         	
   779         	if((i >= KExcludeCategoryStart) && (i <= KExcludeCategoryEnd) && (codes->Codes().Count() >0))
   871         	if((i >= KExcludeCategoryStart) && (i <= KExcludeCategoryEnd) && (codes->Codes().Count() >0))
   780             	{
   872             	{
       
   873                 OstTrace1( TRACE_ERROR, DUP4_CMTPDATAPROVIDER_CONSTRUCTL, "Dp MTP feature(%d) contained in exclude category!", i );
   781             	User::Leave(KErrNotSupported);
   874             	User::Leave(KErrNotSupported);
   782             	}
   875             	}
   783         	iSupported.AppendL(codes);
   876         	iSupported.AppendL(codes);
   784         	CleanupStack::Pop(codes);
   877         	CleanupStack::Pop(codes);
   785         	}
   878         	}
   786 				
   879 				
   787     	User::LeaveIfError(iTimer.CreateLocal());
   880     	LEAVEIFERROR(iTimer.CreateLocal(),
   788 
   881     	        OstTrace0( TRACE_ERROR, DUP5_CMTPDATAPROVIDER_CONSTRUCTL, "thread-relative timer create error!" ));
       
   882     	        
   789 		// Only assume ownership of passed objects on successful construction.
   883 		// Only assume ownership of passed objects on successful construction.
   790 		iConstructed = ETrue;
   884 		iConstructed = ETrue;
   791 	
   885 	
   792 		__FLOG_VA((_L8("Data provider %d iImplementationUid 0x08%X "), iId, iImplementationUid));
   886 		OstTraceExt2(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_CONSTRUCTL,
   793     	__FLOG_VA((_L8("ConstructL - Exit, data provider %d "), iId));	
   887 		        "Data provider %d iImplementationUid 0x%X ", iId, iImplementationUid.iUid);
   794     	}
   888     	}
   795 	 
   889 	 
       
   890     OstTrace1(TRACE_NORMAL, DUP2_CMTPDATAPROVIDER_CONSTRUCTL, 
       
   891             "data provider %d ", iId);      
       
   892 	OstTraceFunctionExit0( CMTPDATAPROVIDER_CONSTRUCTL_EXIT );
   796 	}
   893 	}
   797 
   894 
   798 /**
   895 /**
   799 Schedules the next request phase or event.
   896 Schedules the next request phase or event.
   800 */
   897 */
   801 void CMTPDataProvider::Schedule()
   898 void CMTPDataProvider::Schedule()
   802     {
   899     {
   803     __FLOG_VA((_L8("Schedule - Entry, data provider %d "), iId));
   900     OstTraceFunctionEntry0( CMTPDATAPROVIDER_SCHEDULE_ENTRY );
       
   901     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_SCHEDULE, 
       
   902             "data provider %d ", iId);  
   804     iStatus = KRequestPending;
   903     iStatus = KRequestPending;
   805     TRequestStatus* status = &iStatus;
   904     TRequestStatus* status = &iStatus;
   806     SetActive();
   905     SetActive();
   807     User::RequestComplete(status, KErrNone);
   906     User::RequestComplete(status, KErrNone);
   808     __FLOG_VA((_L8("Schedule - Exit, data provider %d "), iId));
   907     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_SCHEDULE, 
       
   908             "data provider %d ", iId);         
       
   909     OstTraceFunctionExit0( CMTPDATAPROVIDER_SCHEDULE_EXIT ); 
   809     }
   910     }
   810 
   911 
   811 /**
   912 /**
   812 Formats and sends an MTP response dataset from the specified error code.
   913 Formats and sends an MTP response dataset from the specified error code.
   813 @param aError The error code.
   914 @param aError The error code.
   814 @leave One of the system wide error codes, if a processing error occurs.
   915 @leave One of the system wide error codes, if a processing error occurs.
   815 */
   916 */
   816 void CMTPDataProvider::SendErrorResponseL(TInt aError)
   917 void CMTPDataProvider::SendErrorResponseL(TInt aError)
   817 	{
   918 	{
   818     __FLOG_VA((_L8("SendResponseL - Entry, data provider %d "), iId));
   919     OstTraceFunctionEntry0( CMTPDATAPROVIDER_SENDERRORRESPONSEL_ENTRY );
       
   920     OstTrace1(TRACE_NORMAL, CMTPDATAPROVIDER_SENDERRORRESPONSEL, 
       
   921             "data provider %d ", iId);  
       
   922     
   819 	__ASSERT_DEBUG(iCurrentRequest != NULL, User::Invariant());
   923 	__ASSERT_DEBUG(iCurrentRequest != NULL, User::Invariant());
   820 	
   924 	
   821 	TMTPResponseCode code;
   925 	TMTPResponseCode code;
   822 	switch (aError)
   926 	switch (aError)
   823 	    {
   927 	    {
   831     default:
   935     default:
   832         code = EMTPRespCodeGeneralError;
   936         code = EMTPRespCodeGeneralError;
   833         break;
   937         break;
   834 	    }
   938 	    }
   835 	    
   939 	    
   836     __FLOG_VA((_L8("Sending response code  0x%04X"), code));
   940     OstTrace1(TRACE_NORMAL, DUP2_CMTPDATAPROVIDER_SENDERRORRESPONSEL, 
       
   941             "Sending response code  0x%04X", code);
   837 	iResponse.SetUint16(TMTPTypeResponse::EResponseCode, code);		    
   942 	iResponse.SetUint16(TMTPTypeResponse::EResponseCode, code);		    
   838     iResponse.SetUint32(TMTPTypeResponse::EResponseSessionID, iCurrentRequest->Uint32(TMTPTypeResponse::EResponseSessionID));	
   943     iResponse.SetUint32(TMTPTypeResponse::EResponseSessionID, iCurrentRequest->Uint32(TMTPTypeResponse::EResponseSessionID));	
   839 	iResponse.SetUint32(TMTPTypeResponse::EResponseTransactionID, iCurrentRequest->Uint32(TMTPTypeResponse::EResponseTransactionID));
   944 	iResponse.SetUint32(TMTPTypeResponse::EResponseTransactionID, iCurrentRequest->Uint32(TMTPTypeResponse::EResponseTransactionID));
   840 	SendResponseL(iResponse, *iCurrentRequest, *iCurrentConnection);
   945 	SendResponseL(iResponse, *iCurrentRequest, *iCurrentConnection);
   841 	
   946 
   842     __FLOG_VA((_L8("SendResponseL - Exit, data provider %d "), iId));	
   947     OstTrace1(TRACE_NORMAL, DUP1_CMTPDATAPROVIDER_SENDERRORRESPONSEL, 
       
   948             "data provider %d ", iId);  	
       
   949 	OstTraceFunctionExit0( CMTPDATAPROVIDER_SENDERRORRESPONSEL_EXIT );	
   843 	}
   950 	}
   844     
   951     
   845 CMTPDataProvider::CSupportedCodes* CMTPDataProvider::CSupportedCodes::NewLC(TMTPSupportCategory aCategory, MMTPDataProvider& aDp)
   952 CMTPDataProvider::CSupportedCodes* CMTPDataProvider::CSupportedCodes::NewLC(TMTPSupportCategory aCategory, MMTPDataProvider& aDp)
   846     {
   953     {
   847     CSupportedCodes* self = new(ELeave) CSupportedCodes();
   954     CSupportedCodes* self = new(ELeave) CSupportedCodes();