mtptransports/mtpusbtransport/usbsic_imp/src/cmtpusbconnection.cpp
branchRCL_3
changeset 4 60a94a45d437
parent 1 f8e15b44d440
child 12 523717cdb0ad
--- a/mtptransports/mtpusbtransport/usbsic_imp/src/cmtpusbconnection.cpp	Mon Mar 15 12:43:12 2010 +0200
+++ b/mtptransports/mtpusbtransport/usbsic_imp/src/cmtpusbconnection.cpp	Wed Mar 31 22:58:56 2010 +0300
@@ -298,16 +298,8 @@
    		*/
    		iUsbBulkParameterBlock.Reset();
         TBool isNullParamValid = EFalse;
-        TUint numberOfNullParam = 0;    
-        /*
-        A special case: for GetNumObjects the first response parameter can be null, which means 0 objects.
-        */
-        if(opCode == EMTPOpCodeGetNumObjects)
-            {
-            isNullParamValid = ETrue;
-            numberOfNullParam = 1;
-            }
-        iUsbBulkParameterBlock.CopyIn(aResponse, TMTPTypeResponse::EResponseParameter1, TMTPTypeResponse::EResponseParameter5, isNullParamValid, numberOfNullParam);
+        TUint numberOfNullParam = 0;
+        iUsbBulkParameterBlock.CopyIn(aResponse, TMTPTypeResponse::EResponseParameter1, TMTPTypeResponse::EResponseParameter1 + aResponse.GetNumOfValidParams(), isNullParamValid, numberOfNullParam);
 
    		// Setup the bulk container.
    		iUsbBulkContainer->SetPayloadL(const_cast<TMTPUsbParameterPayloadBlock*>(&iUsbBulkParameterBlock));
@@ -1569,6 +1561,12 @@
             TRAPD(err, BoundProtocolLayer().SendDataCompleteL(KErrAbort, *iUsbBulkContainer->Payload(), iMTPRequest));
             UNUSED_VAR(err);
             }
+		else if ((iBulkTransactionState == EResponsePhase) && iUsbBulkContainer->Payload())
+            {
+            __FLOG(_L8("Aborting active response phase"));
+            TRAPD(err, BoundProtocolLayer().SendResponseCompleteL(KErrAbort, *static_cast<TMTPTypeResponse*>(iUsbBulkContainer->Payload()), iMTPRequest));
+            UNUSED_VAR(err);
+            }
         }
 #ifdef __FLOG_ACTIVE
     else