--- 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