mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetnumobjects.cpp
branchRCL_3
changeset 4 60a94a45d437
parent 3 8b094906a049
child 18 453dfc402455
equal deleted inserted replaced
3:8b094906a049 4:60a94a45d437
    21 #include <mtp/cmtpobjectmetadata.h>
    21 #include <mtp/cmtpobjectmetadata.h>
    22 
    22 
    23 #include "cmtpdataprovidercontroller.h"
    23 #include "cmtpdataprovidercontroller.h"
    24 #include "cmtpdataprovider.h"
    24 #include "cmtpdataprovider.h"
    25 #include "cmtpdevicedatastore.h"
    25 #include "cmtpdevicedatastore.h"
       
    26 #include "cmtpdataprovidercontroller.h"
    26 
    27 
    27 #include "cmtpgetnumobjects.h"
    28 #include "cmtpgetnumobjects.h"
    28 #include "mtpdevicedpconst.h"
    29 #include "mtpdevicedpconst.h"
    29 #include "mtpdevdppanic.h"
    30 #include "mtpdevdppanic.h"
    30 
    31 
    31 // Class constants.
    32 // Class constants.
    32 __FLOG_STMT(_LIT8(KComponent,"GetNumObjects");)
    33 __FLOG_STMT(_LIT8(KComponent,"GetNumObjects");)
       
    34 static const TInt KMTPGetObjectNumTimeOut(1);
    33 
    35 
    34 /**
    36 /**
    35 Verification data for GetNumObjects request
    37 Verification data for GetNumObjects request
    36 */
    38 */
    37 const TMTPRequestElementInfo KMTPGetNumObjectsPolicy[] = 
    39 const TMTPRequestElementInfo KMTPGetNumObjectsPolicy[] = 
    97 	if(formatCode != 0 && !IsSupportedFormatL(formatCode))
    99 	if(formatCode != 0 && !IsSupportedFormatL(formatCode))
    98 		{
   100 		{
    99 		return EMTPRespCodeInvalidObjectFormatCode;
   101 		return EMTPRespCodeInvalidObjectFormatCode;
   100 		}
   102 		}
   101 	
   103 	
       
   104 	/*
   102 	if(iSingletons.DpController().EnumerateState() != CMTPDataProviderController::EEnumeratedFulllyCompleted)
   105 	if(iSingletons.DpController().EnumerateState() != CMTPDataProviderController::EEnumeratedFulllyCompleted)
   103 		{
   106 		{
   104 		TUint storageID = Request().Uint32(TMTPTypeRequest::ERequestParameter1);
       
   105 		TUint handle = Request().Uint32(TMTPTypeRequest::ERequestParameter3);
   107 		TUint handle = Request().Uint32(TMTPTypeRequest::ERequestParameter3);
   106 		if(iDevDpSingletons.PendingStorages().FindInOrder(storageID) != KErrNotFound)
   108 		if(handle != KMTPHandleAll)
   107 			{
   109 			{
   108 			responseCode = EMTPRespCodeDeviceBusy;
   110 			responseCode = EMTPRespCodeDeviceBusy;
   109 			}
   111 			}
   110 		else if( (handle != KMTPHandleNone) && (handle != KMTPHandleAll)  )
   112 		}
   111 			{
   113 		*/
   112 			CMTPObjectMetaData* meta = iRequestChecker->GetObjectInfo(handle);
       
   113 			__ASSERT_DEBUG(meta, Panic(EMTPDevDpObjectNull));
       
   114 			
       
   115 			if( meta->Uint(CMTPObjectMetaData::EFormatCode) == EMTPFormatCodeAssociation )
       
   116 				{
       
   117 				responseCode = EMTPRespCodeDeviceBusy;
       
   118 				}
       
   119 			}
       
   120 		else if(EMTPFormatCodeUndefined == formatCode)
       
   121 			{
       
   122 			responseCode = EMTPRespCodeDeviceBusy;
       
   123 			}
       
   124 		}
       
   125 	else if(iDevDpSingletons.PendingStorages().Count() > 0)
       
   126 		{
       
   127 		iDevDpSingletons.PendingStorages().Close();
       
   128 		}
       
   129 	
   114 	
   130 	return responseCode;	
   115 	return responseCode;	
   131 	}
   116 	}
   132 	
   117 	
   133 	
   118 	
   136 */	
   121 */	
   137 void CMTPGetNumObjects::ServiceL()
   122 void CMTPGetNumObjects::ServiceL()
   138 	{
   123 	{
   139     __FLOG(_L8("ServiceL - Entry"));
   124     __FLOG(_L8("ServiceL - Entry"));
   140     __FLOG_VA((_L8("IsConnectMac = %d; ERequestParameter2 = %d" ), iDevDpSingletons.DeviceDataStore().IsConnectMac(), Request().Uint32(TMTPTypeRequest::ERequestParameter2)));
   125     __FLOG_VA((_L8("IsConnectMac = %d; ERequestParameter2 = %d" ), iDevDpSingletons.DeviceDataStore().IsConnectMac(), Request().Uint32(TMTPTypeRequest::ERequestParameter2)));
       
   126     
       
   127     if(iSingletons.DpController().EnumerateState() != CMTPDataProviderController::EEnumeratedFulllyCompleted)
       
   128         {
       
   129         TUint storageId = Request().Uint32(TMTPTypeRequest::ERequestParameter1);
       
   130         TUint handle = Request().Uint32(TMTPTypeRequest::ERequestParameter3);
       
   131         TUint enumerateState = iSingletons.DpController().StorageEnumerateState(storageId);
       
   132         if ( (enumerateState < CMTPDataProviderController::EEnumeratingPhaseOneDone)
       
   133             || (enumerateState != CMTPDataProviderController::EEnumeratedFulllyCompleted && handle != KMTPHandleAll))
       
   134             {
       
   135             if (iTimeoutCount++ >= KMTPGetObjectNumTimeOut)
       
   136                 {
       
   137                 __FLOG(_L8("Wait for enumeration time out, return busy."));
       
   138                 SendResponseL(EMTPRespCodeDeviceBusy);
       
   139                 iTimeoutCount = 0;
       
   140                 return;
       
   141                 }
       
   142             else
       
   143                 {
       
   144                 __FLOG(_L8("Enumeration not completed, suspend request."));
       
   145                 RegisterPendingRequest(20);
       
   146                 return; 
       
   147                 }
       
   148             }
       
   149         }
       
   150     
       
   151     iTimeoutCount = 0;
       
   152     
   141 	if(iDevDpSingletons.DeviceDataStore().IsConnectMac()
   153 	if(iDevDpSingletons.DeviceDataStore().IsConnectMac()
   142         &&(KMTPFormatsAll == Request().Uint32(TMTPTypeRequest::ERequestParameter2)))
   154         &&(KMTPFormatsAll == Request().Uint32(TMTPTypeRequest::ERequestParameter2)))
   143         {
   155         {
   144         //get folder count
   156         //get folder count
   145     	TMTPObjectMgrQueryParams paramsFolder(Request().Uint32(TMTPTypeRequest::ERequestParameter1), EMTPFormatCodeAssociation, Request().Uint32(TMTPTypeRequest::ERequestParameter3));        
   157     	TMTPObjectMgrQueryParams paramsFolder(Request().Uint32(TMTPTypeRequest::ERequestParameter1), EMTPFormatCodeAssociation, Request().Uint32(TMTPTypeRequest::ERequestParameter3));