diff -r dbd1c5e08735 -r 453dfc402455 mtptransports/mtpusbtransport/usbsic_imp/src/cmtpusbconnection.cpp --- a/mtptransports/mtpusbtransport/usbsic_imp/src/cmtpusbconnection.cpp Thu Jul 15 19:35:12 2010 +0300 +++ b/mtptransports/mtpusbtransport/usbsic_imp/src/cmtpusbconnection.cpp Thu Aug 19 10:44:03 2010 +0300 @@ -131,7 +131,7 @@ __FLOG(_L8("CloseConnection - Exit")); } -void CMTPUsbConnection::ReceiveDataL(MMTPType& aData, const TMTPTypeRequest& aRequest) +void CMTPUsbConnection::ReceiveDataL(MMTPType& aData, const TMTPTypeRequest& /*aRequest*/) { __FLOG(_L8("ReceiveDataL - Entry")); @@ -636,7 +636,11 @@ { __FLOG(_L8("SendInterruptDataCompleteL - Entry")); iEventPending = EFalse; + + if ( NULL != iProtocolLayer) + { BoundProtocolLayer().SendEventCompleteL(aError, iMTPEvent); + } __FLOG(_L8("SendInterruptDataCompleteL - Exit")); } @@ -1254,7 +1258,7 @@ @param aRequest The USB SIC class specific request setup data. @leave One of the system wide error codes, if a processing failure occurs. */ -void CMTPUsbConnection::ProcessControlRequestDeviceStatusL(const TMTPUsbControlRequestSetup& aRequest) +void CMTPUsbConnection::ProcessControlRequestDeviceStatusL(const TMTPUsbControlRequestSetup& /*aRequest*/) { __FLOG(_L8("ProcessControlRequestDeviceStatusL - Entry")); iUsbControlRequestDeviceStatus.Reset(); @@ -1358,7 +1362,17 @@ { // Invalid bulk transaction state, close the connection. __FLOG_VA((_L8("Expected bulk transaction state = %d"), aExpectedTransactionState)); + + //if transaction is in request phase, while the container type of data we received is other transaction phase, + //just ignore the data and initiate another request receiving. + if (ERequestPhase == iBulkTransactionState) + { + InitiateBulkRequestSequenceL(); + } + else + { CloseConnection(); + } } __FLOG(_L8("BulkRequestTransactionStateValid - Exit")); return valid; @@ -1503,6 +1517,7 @@ __FLOG(_L8("BulkEndpointsStallL - Entry")); EndpointStallL(EMTPUsbEpBulkIn); EndpointStallL(EMTPUsbEpBulkOut); + SetDeviceStatus(EMTPUsbDeviceStatusTransactionCancelled); __FLOG(_L8("BulkEndpointsStallL - Exit")); } @@ -1669,6 +1684,7 @@ SetBulkTransactionState(EUndefined); SetConnectionState(EIdle); SetSuspendState(ENotSuspended); + iMTPSessionId = KMTPSessionNone; } __FLOG(_L8("StopConnection - Exit"));