userlibandfileserver/fileserver/smassstorage/cbulkonlytransportusbcscldd.cpp
changeset 286 48e57fb1237e
parent 269 d57b86b1867a
--- a/userlibandfileserver/fileserver/smassstorage/cbulkonlytransportusbcscldd.cpp	Wed Oct 06 17:13:14 2010 +0100
+++ b/userlibandfileserver/fileserver/smassstorage/cbulkonlytransportusbcscldd.cpp	Mon Oct 11 17:54:41 2010 +0100
@@ -21,20 +21,32 @@
  @internalTechnology
 */
 
+#include <e32std.h>
+#include "mtransport.h"
+#include "mprotocol.h"
+#include "mldddevicestatenotification.h"
+
+#include "drivemanager.h"
+#include "cusbmassstoragecontroller.h"
+
 #include "cbulkonlytransport.h"
 #include "cbulkonlytransportusbcscldd.h"
-#include "usbmsshared.h"
-#include "massstoragedebug.h"
-#include "cusbmassstorageserver.h"
+#include "smassstorage.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cbulkonlytransportusbcsclddTraces.h"
+#endif
+
 
 
 //This value defined in USB Mass Storage Bulk Only Transrt spec and not supposed to be changed
-LOCAL_D const TInt KRequiredNumberOfEndpoints = 2; // in addition to endpoint 0.
+static const TInt KRequiredNumberOfEndpoints = 2; // in addition to endpoint 0.
 
-LOCAL_D const TInt KUsbNumInterfacesOffset = 4;
+static const TInt KUsbNumInterfacesOffset = 4;
 
 #ifdef MSDC_MULTITHREADED
-//Only used in DB. The first 2K of KMaxScBufferSize for sending CSW 
+//Only used in DB. The first 2K of KMaxScBufferSize for sending CSW
 static const TUint32 KCswBufferSize = 2 * 1024;
 #endif
 
@@ -47,19 +59,19 @@
 
 
 CControlInterfaceUsbcScLdd* CControlInterfaceUsbcScLdd::NewL(CBulkOnlyTransportUsbcScLdd& aParent)
-	{
-	CControlInterfaceUsbcScLdd* self = new(ELeave) CControlInterfaceUsbcScLdd(aParent);
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CActiveScheduler::Add(self);
-	CleanupStack::Pop();
-	return self;
-	}
+    {
+    CControlInterfaceUsbcScLdd* self = new(ELeave) CControlInterfaceUsbcScLdd(aParent);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CActiveScheduler::Add(self);
+    CleanupStack::Pop();
+    return self;
+    }
 
 
 void CControlInterfaceUsbcScLdd::ConstructL()
-	{
-	}
+    {
+    }
 
 
 /**
@@ -68,229 +80,212 @@
 @param aParent reference to the CBulkOnlyTransportUsbcScLdd
 */
 CControlInterfaceUsbcScLdd::CControlInterfaceUsbcScLdd(CBulkOnlyTransportUsbcScLdd& aParent)
-	:CActive(EPriorityStandard),
-	 iParent(aParent),
-	 iCurrentState(ENone)
-	{
-	}
+    :CActive(EPriorityStandard),
+     iParent(aParent),
+     iCurrentState(ENone)
+    {
+    }
 
 
 /**
 d'tor
 */
 CControlInterfaceUsbcScLdd::~CControlInterfaceUsbcScLdd()
-	{
-	__FNLOG("CControlInterfaceUsbcScLdd::~CControlInterfaceUsbcScLdd ");
-	Cancel();
-	iEp0Buf.Close();
-	}
+    {
+    Cancel();
+    iEp0Buf.Close();
+    }
 
 TInt CControlInterfaceUsbcScLdd::OpenEp0()
-	{
-	TInt res = iParent.Ldd().OpenEndpoint(iEp0Buf,0);
-	return res;
-	}
+    {
+    TInt res = iParent.Ldd().OpenEndpoint(iEp0Buf,0);
+    return res;
+    }
 
 /**
 Called by CBulkOnlyTransport HwStart to start control interface
 */
 TInt CControlInterfaceUsbcScLdd::Start()
-	{
-	__FNLOG("CControlInterfaceUsbcScLdd::Start ");
-	TInt res = ReadEp0Data();
-	return (res);
-	}
+    {
+    TInt res = ReadEp0Data();
+    return (res);
+    }
 
 
 /**
 Called by desctructor of CBulkOnlyTransportUsbcScLdd to stop control interface
 */
 void CControlInterfaceUsbcScLdd::Stop()
-	{
-	__FNLOG("CControlInterfaceUsbcScLdd::Stop ");
-	if (!IsActive())
-		{
-		__PRINT(_L("Not active\n"));
-		return;
-		}
-
-	__PRINT(_L("\nStopping...\n"));
-
-
-	iCurrentState = ENone;
-
-	Cancel();
-	}
+    {
+    if (!IsActive())
+        {
+        return;
+        }
+    iCurrentState = ENone;
+    Cancel();
+    }
 
 
 /**
 Cancel outstanding request (if any)
 */
 void CControlInterfaceUsbcScLdd::DoCancel()
-	{
-	__FNLOG("CControlInterfaceUsbcScLdd::DoCancel ");
-	switch(iCurrentState)
-		{
-		case EReadEp0Data:
-			iParent.Ldd().ReadCancel(KUsbcScEndpointZero);
-			break;
-		case ESendMaxLun:
-			iParent.Ldd().WriteCancel(KUsbcScEndpointZero);
-			break;
-		default:
-			__PRINT(_L("\nWrong state !\n"));
-			__ASSERT_DEBUG(EFalse, User::Panic(KUsbMsSvrPncCat, EMsControlInterfaceBadState));
-		}
-	}
+    {
+    switch(iCurrentState)
+        {
+        case EReadEp0Data:
+            iParent.Ldd().ReadCancel(KUsbcScEndpointZero);
+            break;
+        case ESendMaxLun:
+            iParent.Ldd().WriteCancel(KUsbcScEndpointZero);
+            break;
+        default:
+            __ASSERT_DEBUG(EFalse, User::Panic(KUsbMsSvrPncCat, EMsControlInterfaceBadState));
+        }
+    }
 
 
 /**
 Implement CControlInterfaceUsbcScLdd state machine
 */
 void CControlInterfaceUsbcScLdd::RunL()
-	{
-	__FNLOG("CControlInterfaceUsbcScLdd::RunL ");
-	if (iStatus != KErrNone)
-		{
-		__PRINT1(_L("Error %d in RunL\n"), iStatus.Int());
+    {
+    if (iStatus != KErrNone)
+        {
+        OstTrace1(TRACE_SMASSSTORAGE_BOT, CCONTROLINTERFACEUSBCSCLDD,
+                  "ERROR %d in RunL", iStatus.Int());
+        //read EP0  again
+        ReadEp0Data();
+        return;
+        }
 
-		//read EP0  again
-		ReadEp0Data();
-		return;
-		}
-
-	ReadEp0Data();
-	}
+    ReadEp0Data();
+    }
 
 /**
 Actual Read to RDevUsbcScClient BIL
 */
 TInt CControlInterfaceUsbcScLdd::ReadUsbEp0()
-	{
-	iCurrentState = EReadEp0Data;
-	iStatus = KRequestPending;
-	return iEp0Buf.GetBuffer (iEp0Packet,iEp0Size,iEp0Zlp,iStatus);
-	}
+    {
+    iCurrentState = EReadEp0Data;
+    iStatus = KRequestPending;
+    return iEp0Buf.GetBuffer (iEp0Packet,iEp0Size,iEp0Zlp,iStatus);
+    }
 
 
 /**
 Post a read request to EEndpoint0 to read request header
 */
 TInt CControlInterfaceUsbcScLdd::ReadEp0Data()
-	{
-	__FNLOG("CControlInterfaceUsbcScLdd::ReadEp0Data ");
-	if (IsActive())
-		{
-		__PRINT(_L("Still active\n"));
-		return KErrServerBusy;
-		}
+    {
+    if (IsActive())
+        {
+        OstTrace0(TRACE_SMASSSTORAGE_BOT, READEP0DATA_SC, "Still active");
+        return KErrServerBusy;
+        }
 
-	TInt r = KErrNone;
-	do
-		{
-		r = ReadUsbEp0();
-		if (r == KErrCompletion)
-			{
-			iStatus = KErrNone;
-			DecodeEp0Data();
-			}
-		else if (r == KErrNone)
-			{
-			SetActive();
-			}
-		} while (((r == KErrCompletion) || (r == TEndpointBuffer::KStateChange)) && (!IsActive()));
-	return KErrNone;
-	}
+    TInt r = KErrNone;
+    do
+        {
+        r = ReadUsbEp0();
+        if (r == KErrCompletion)
+            {
+            iStatus = KErrNone;
+            DecodeEp0Data();
+            }
+        else if (r == KErrNone)
+            {
+            SetActive();
+            }
+        } while (((r == KErrCompletion) || (r == TEndpointBuffer::KStateChange)) && (!IsActive()));
+    return KErrNone;
+    }
 
 
 /**
 Decode request header and do appropriate action - get max LUN info or post a reset request
 */
 void CControlInterfaceUsbcScLdd::DecodeEp0Data()
-	{
-	__FNLOG("CControlInterfaceUsbcScLdd::DecodeEp0Data ");
+    {
+    if (IsActive())
+        {
+        __ASSERT_DEBUG(EFalse, User::Panic(KUsbMsSvrPncCat, EMsControlInterfaceStillActive));
+        return;
+        }
 
-	if (IsActive())
-		{
-		__PRINT(_L("Still active\n"));
-		__ASSERT_DEBUG(EFalse, User::Panic(KUsbMsSvrPncCat, EMsControlInterfaceStillActive));
-		return;
-		}
+    TPtrC8 ep0ReadDataPtr((TUint8*)iEp0Packet, iEp0Size);
+    TInt err = iRequestHeader.Decode(ep0ReadDataPtr);
 
-	TPtrC8 ep0ReadDataPtr((TUint8*)iEp0Packet, iEp0Size);
-	TInt err = iRequestHeader.Decode(ep0ReadDataPtr);
-
-	if(err != KErrNone)
-		return;
+    if(err != KErrNone)
+        return;
 
     switch(iRequestHeader.iRequest)
-		{
-		//
-		// GET MAX LUN (0xFE)
-		//
-		case TUsbRequestHdr::EReqGetMaxLun:
-			{
-			__PRINT1(_L("DecodeEp0Data : 'Get Max LUN' Request MaxLun = %d"),iParent.MaxLun() );
+        {
+        //
+        // GET MAX LUN (0xFE)
+        //
+        case TUsbRequestHdr::EReqGetMaxLun:
+            {
+            OstTrace1(TRACE_SMASSSTORAGE_BOT, DECODEEP0DATA_SC, ">>> EP0 GetMaxLun = %d", iParent.MaxLun());
 
             if (   iRequestHeader.iRequestType != 0xA1 //value from USB MS BOT spec
                 || iRequestHeader.iIndex > 15
                 || iRequestHeader.iValue != 0
                 || iRequestHeader.iLength != 1)
                 {
-    		    __PRINT(_L("GetMaxLun command packet check error"));
+                OstTrace0(TRACE_SMASSSTORAGE_BOT, DECODEEP0DATA1_SC, "ERROR: GetMaxLun command packet check error");
                 iParent.Ldd().EndpointZeroRequestError();
                 break;
                 }
 
-			TPtr8* ep0WriteDataPtr = NULL;
-			TUint ep0Length;
-			iEp0Buf.GetInBufferRange(((TAny*&)ep0WriteDataPtr),ep0Length);
-			ep0WriteDataPtr->SetLength(1);	//Return only 1 byte to host
-			ep0WriteDataPtr->Fill(0);
-			ep0WriteDataPtr->Fill(iParent.MaxLun());	// Supported Units
-			TInt length = ep0WriteDataPtr->Length();
-			err = iEp0Buf.WriteBuffer((TPtr8*)(ep0WriteDataPtr->Ptr()),length,ETrue,iStatus);
+            TPtr8* ep0WriteDataPtr = NULL;
+            TUint ep0Length;
+            iEp0Buf.GetInBufferRange(((TAny*&)ep0WriteDataPtr),ep0Length);
+            ep0WriteDataPtr->SetLength(1);  //Return only 1 byte to host
+            ep0WriteDataPtr->Fill(0);
+            ep0WriteDataPtr->Fill(iParent.MaxLun());    // Supported Units
+            TInt length = ep0WriteDataPtr->Length();
+            err = iEp0Buf.WriteBuffer((TPtr8*)(ep0WriteDataPtr->Ptr()),length,ETrue,iStatus);
 
-			iCurrentState = ESendMaxLun;
-			SetActive();
+            iCurrentState = ESendMaxLun;
+            SetActive();
 
-			return;
-			}
-		//
-		// RESET (0xFF)
-		//
-		case TUsbRequestHdr::EReqReset:
-			{
-			__PRINT(_L("DecodeEp0Data : 'Mass Storage Reset' Request"));
+            return;
+            }
+        //
+        // RESET (0xFF)
+        //
+        case TUsbRequestHdr::EReqReset:
+            {
+            OstTrace0(TRACE_SMASSSTORAGE_BOT, DECODEEP0DATA2_SC, ">>> EP0 BulkOnlyMassStorageReset");
 
             if (   iRequestHeader.iRequestType != 0x21 //value from USB MS BOT spec
                 || iRequestHeader.iIndex > 15
                 || iRequestHeader.iValue != 0
                 || iRequestHeader.iLength != 0)
                 {
-			    __PRINT(_L("MSC Reset command packet check error"));
+                OstTrace0(TRACE_SMASSSTORAGE_BOT, DECODEEP0DATA3_SC, "BulkOnlyMassStorageReset command packet check error");
                 iParent.Ldd().EndpointZeroRequestError();
                 break;
                 }
 
-			iParent.HwStop();
-			iParent.Controller().Reset();
-			iParent.HwStart(ETrue);
+            iParent.HwStop();
+            iParent.Controller().Reset();
+            iParent.HwStart(ETrue);
 
             err = iParent.Ldd().SendEp0StatusPacket();
-			return;
-			}
-		//
-		// Unknown?
-		//
-		default:
-			{
-			__PRINT(_L("DecodeEp0Data : Unknown Request"));
-
-			}
-		}
-		ReadEp0Data();  //try to get another request
-	}
+            return;
+            }
+        //
+        // Unknown?
+        //
+        default:
+            {
+            OstTrace0(TRACE_SMASSSTORAGE_BOT, DECODEEP0DATA4_SC, ">>> EP0 DecodeEp0Data : Unknown Request");
+            }
+        }
+        ReadEp0Data();  //try to get another request
+    }
 
 
 //
@@ -298,42 +293,39 @@
 //
 
 CBulkOnlyTransportUsbcScLdd::CBulkOnlyTransportUsbcScLdd(TInt aNumDrives,CUsbMassStorageController& aController)
-	:CBulkOnlyTransport(aNumDrives, aController)
-	{
-	__FNLOG("CBulkOnlyTransportUsbcScLdd::CBulkOnlyTransportUsbcScLdd");
-	}
+    :CBulkOnlyTransport(aNumDrives, aController)
+    {
+    }
 
 /**
 Constructs the CBulkOnlyTransportUsbcScLdd object
 */
 void CBulkOnlyTransportUsbcScLdd::ConstructL()
-	{
-	__FNLOG("CBulkOnlyTransportUsbcScLdd::ConstructL()");
-	iControlInterface = CControlInterfaceUsbcScLdd::NewL(*this);
-	iDeviceStateNotifier = CActiveDeviceStateNotifierBase::NewL(*this, *this);
-	iChunk = new RChunk();
-	CActiveScheduler::Add(this);
-	}
+    {
+    iControlInterface = CControlInterfaceUsbcScLdd::NewL(*this);
+    iDeviceStateNotifier = CActiveDeviceStateNotifierBase::NewL(*this, *this);
+    iChunk = new RChunk();
+    CActiveScheduler::Add(this);
+    }
 
 
 CBulkOnlyTransportUsbcScLdd::~CBulkOnlyTransportUsbcScLdd()
-	{
-	__FNLOG("CBulkOnlyTransportUsbcScLdd::~CBulkOnlyTransportUsbcScLdd");
-	if (iInterfaceConfigured)
-		{
+    {
+    if (iInterfaceConfigured)
+        {
         Stop();
-		TInt err = iSCReadEndpointBuf.Close(); 
-		err = iSCWriteEndpointBuf.Close();
-		delete iControlInterface ;
-		delete iDeviceStateNotifier;
-		delete iChunk;
-		}
-	}	
+        TInt err = iSCReadEndpointBuf.Close();
+        err = iSCWriteEndpointBuf.Close();
+        delete iControlInterface ;
+        delete iDeviceStateNotifier;
+        delete iChunk;
+        }
+    }
 
 RDevUsbcScClient& CBulkOnlyTransportUsbcScLdd::Ldd()
-	{
-	return iLdd;
-	}
+    {
+    return iLdd;
+    }
 
 /**
 Set or unset configuration descriptor for USB MassStorage Bulk Only transport
@@ -342,45 +334,44 @@
 @return KErrNone if operation was completed successfully, errorcode otherwise
 */
 TInt CBulkOnlyTransportUsbcScLdd::SetupConfigurationDescriptor(TBool aUnset)
-	{
-	__FNLOG("CBulkOnlyTransportUsbcScLdd::SetupConfigurationDescriptor");
-	TInt ret(KErrNone);
+    {
+    TInt ret(KErrNone);
 
-	if ((ret = iLdd.Open(0)) != KErrNone)
-		return ret;
+    if ((ret = iLdd.Open(0)) != KErrNone)
+        return ret;
 
-	TInt configDescriptorSize(0);
-	iLdd.GetConfigurationDescriptorSize(configDescriptorSize);
-	if (static_cast<TUint>(configDescriptorSize) != KUsbDescSize_Config)
-		{
-		return KErrCorrupt;
-		}
+    TInt configDescriptorSize(0);
+    iLdd.GetConfigurationDescriptorSize(configDescriptorSize);
+    if (static_cast<TUint>(configDescriptorSize) != KUsbDescSize_Config)
+        {
+        return KErrCorrupt;
+        }
 
-	TBuf8<KUsbDescSize_Config> configDescriptor;
-	ret = iLdd.GetConfigurationDescriptor(configDescriptor);
-	if (ret != KErrNone)
-		{
-		return ret;
-		}
+    TBuf8<KUsbDescSize_Config> configDescriptor;
+    ret = iLdd.GetConfigurationDescriptor(configDescriptor);
+    if (ret != KErrNone)
+        {
+        return ret;
+        }
 
-	// I beleive that other fields setted up during LDD initialisation
-	if (aUnset)
-		{
-		--configDescriptor[KUsbNumInterfacesOffset];
-		}
-	else
-		{
-		++configDescriptor[KUsbNumInterfacesOffset];
-		}
-	ret = iLdd.SetConfigurationDescriptor(configDescriptor);
+    // I beleive that other fields setted up during LDD initialisation
+    if (aUnset)
+        {
+        --configDescriptor[KUsbNumInterfacesOffset];
+        }
+    else
+        {
+        ++configDescriptor[KUsbNumInterfacesOffset];
+        }
+    ret = iLdd.SetConfigurationDescriptor(configDescriptor);
 
-	if (aUnset)
-		{
-		iLdd.Close();
-		}
+    if (aUnset)
+        {
+        iLdd.Close();
+        }
 
-	return ret;
-	}
+    return ret;
+    }
 
 /**
 Set up interface descriptor
@@ -388,265 +379,261 @@
 @return KErrNone if operation was completed successfully, errorcode otherwise
 */
 TInt CBulkOnlyTransportUsbcScLdd::SetupInterfaceDescriptors()
-	{
-	__FNLOG("CBulkOnlyTransportUsbcScLdd::SetupInterfaceDescriptors");
-	// Device caps
-	TUsbDeviceCaps d_caps;
-	TInt ret = iLdd.DeviceCaps(d_caps);
-	if (ret != KErrNone)
-		{
-		return ret;
-		}
-	TInt totalEndpoints = d_caps().iTotalEndpoints;
-	if (totalEndpoints  < KRequiredNumberOfEndpoints)
-		{
-		return KErrHardwareNotAvailable;
-		}
+    {
+    // Device caps
+    TUsbDeviceCaps d_caps;
+    TInt ret = iLdd.DeviceCaps(d_caps);
+    if (ret != KErrNone)
+        {
+        return ret;
+        }
+    TInt totalEndpoints = d_caps().iTotalEndpoints;
+    if (totalEndpoints  < KRequiredNumberOfEndpoints)
+        {
+        return KErrHardwareNotAvailable;
+        }
 
-	// Endpoint caps
-	TUsbcEndpointData data[KUsbcMaxEndpoints];
-	TPtr8 dataptr(reinterpret_cast<TUint8*>(data), sizeof(data), sizeof(data));
-	ret = iLdd.EndpointCaps(dataptr);
-	if (ret != KErrNone)
-		{
-		return ret;
-		}
+    // Endpoint caps
+    TUsbcEndpointData data[KUsbcMaxEndpoints];
+    TPtr8 dataptr(reinterpret_cast<TUint8*>(data), sizeof(data), sizeof(data));
+    ret = iLdd.EndpointCaps(dataptr);
+    if (ret != KErrNone)
+        {
+        return ret;
+        }
 
-	// Set the active interface
-	TUsbcScInterfaceInfoBuf ifc;
-	TInt ep_found = 0;
-	TBool foundBulkIN = EFalse;
-	TBool foundBulkOUT = EFalse;
+    // Set the active interface
+    TUsbcScInterfaceInfoBuf ifc;
+    TInt ep_found = 0;
+    TBool foundBulkIN = EFalse;
+    TBool foundBulkOUT = EFalse;
 
-	for (TInt i = 0; i < totalEndpoints ; i++)
-		{
-		const TUsbcEndpointCaps* caps = &data[i].iCaps;
-		const TInt maxPacketSize = caps->MaxPacketSize();
-		if (!foundBulkIN &&
-			(caps->iTypesAndDir & (KUsbEpTypeBulk | KUsbEpDirIn)) == (KUsbEpTypeBulk | KUsbEpDirIn))
-			{
-			// InEndpoint is going to be our TX (IN, write) endpoint
-			ifc().iEndpointData[0].iType = KUsbEpTypeBulk;
-			if((d_caps().iFeatureWord1 & KUsbDevCapsFeatureWord1_EndpointResourceAllocV2) == KUsbDevCapsFeatureWord1_EndpointResourceAllocV2)
-				ifc().iEndpointData[0].iFeatureWord1  = KUsbcEndpointInfoFeatureWord1_DMA|KUsbcEndpointInfoFeatureWord1_DoubleBuffering;
-			ifc().iEndpointData[0].iDir  = KUsbEpDirIn;
-			ifc().iEndpointData[0].iSize = maxPacketSize;
-			ifc().iEndpointData[0].iInterval_Hs = 0;
-			ifc().iEndpointData[0].iBufferSize = KMaxScBufferSize;
-			foundBulkIN = ETrue;
-			if (++ep_found == KRequiredNumberOfEndpoints)
-				{
-				break;
-				}
-			continue;
-			}
-		if (!foundBulkOUT &&
-			(caps->iTypesAndDir & (KUsbEpTypeBulk | KUsbEpDirOut)) == (KUsbEpTypeBulk | KUsbEpDirOut))
-			{
-			// OutEndpoint is going to be our RX (OUT, read) endpoint
-			ifc().iEndpointData[1].iType = KUsbEpTypeBulk;
-			if((d_caps().iFeatureWord1 & KUsbDevCapsFeatureWord1_EndpointResourceAllocV2) == KUsbDevCapsFeatureWord1_EndpointResourceAllocV2)
-				ifc().iEndpointData[1].iFeatureWord1  = KUsbcEndpointInfoFeatureWord1_DMA|KUsbcEndpointInfoFeatureWord1_DoubleBuffering;
-			ifc().iEndpointData[1].iDir  = KUsbEpDirOut;
-			ifc().iEndpointData[1].iSize = maxPacketSize;
-			ifc().iEndpointData[1].iInterval_Hs = 0;
-			ifc().iEndpointData[1].iBufferSize = KMaxScBufferSize;
-			ifc().iEndpointData[1].iReadSize = KMaxScReadSize;
+    for (TInt i = 0; i < totalEndpoints ; i++)
+        {
+        const TUsbcEndpointCaps* caps = &data[i].iCaps;
+        const TInt maxPacketSize = caps->MaxPacketSize();
+        if (!foundBulkIN &&
+            (caps->iTypesAndDir & (KUsbEpTypeBulk | KUsbEpDirIn)) == (KUsbEpTypeBulk | KUsbEpDirIn))
+            {
+            // InEndpoint is going to be our TX (IN, write) endpoint
+            ifc().iEndpointData[0].iType = KUsbEpTypeBulk;
+            if((d_caps().iFeatureWord1 & KUsbDevCapsFeatureWord1_EndpointResourceAllocV2) == KUsbDevCapsFeatureWord1_EndpointResourceAllocV2)
+                ifc().iEndpointData[0].iFeatureWord1  = KUsbcEndpointInfoFeatureWord1_DMA|KUsbcEndpointInfoFeatureWord1_DoubleBuffering;
+            ifc().iEndpointData[0].iDir  = KUsbEpDirIn;
+            ifc().iEndpointData[0].iSize = maxPacketSize;
+            ifc().iEndpointData[0].iInterval_Hs = 0;
+            ifc().iEndpointData[0].iBufferSize = KMaxScBufferSize;
+            foundBulkIN = ETrue;
+            if (++ep_found == KRequiredNumberOfEndpoints)
+                {
+                break;
+                }
+            continue;
+            }
+        if (!foundBulkOUT &&
+            (caps->iTypesAndDir & (KUsbEpTypeBulk | KUsbEpDirOut)) == (KUsbEpTypeBulk | KUsbEpDirOut))
+            {
+            // OutEndpoint is going to be our RX (OUT, read) endpoint
+            ifc().iEndpointData[1].iType = KUsbEpTypeBulk;
+            if((d_caps().iFeatureWord1 & KUsbDevCapsFeatureWord1_EndpointResourceAllocV2) == KUsbDevCapsFeatureWord1_EndpointResourceAllocV2)
+                ifc().iEndpointData[1].iFeatureWord1  = KUsbcEndpointInfoFeatureWord1_DMA|KUsbcEndpointInfoFeatureWord1_DoubleBuffering;
+            ifc().iEndpointData[1].iDir  = KUsbEpDirOut;
+            ifc().iEndpointData[1].iSize = maxPacketSize;
+            ifc().iEndpointData[1].iInterval_Hs = 0;
+            ifc().iEndpointData[1].iBufferSize = KMaxScBufferSize;
+            ifc().iEndpointData[1].iReadSize = KMaxScReadSize;
 
-			foundBulkOUT = ETrue;
-			if (++ep_found == KRequiredNumberOfEndpoints)
-				{
-				break;
-				}
-			continue;
-			}
-		}
-	if (ep_found != KRequiredNumberOfEndpoints)
-		{
-		return KErrHardwareNotAvailable;
-		}
+            foundBulkOUT = ETrue;
+            if (++ep_found == KRequiredNumberOfEndpoints)
+                {
+                break;
+                }
+            continue;
+            }
+        }
+    if (ep_found != KRequiredNumberOfEndpoints)
+        {
+        return KErrHardwareNotAvailable;
+        }
 
-	_LIT16(string, "USB Mass Storage Interface");
-	ifc().iString = const_cast<TDesC16*>(&string);
-	ifc().iTotalEndpointsUsed = KRequiredNumberOfEndpoints;
-	ifc().iClass.iClassNum    = 0x08;	// Mass Storage
-	ifc().iClass.iSubClassNum = 0x06;	// SCSI Transparent Command Set
-	ifc().iClass.iProtocolNum = 0x50;	// Bulk Only Transport
+    _LIT16(string, "USB Mass Storage Interface");
+    ifc().iString = const_cast<TDesC16*>(&string);
+    ifc().iTotalEndpointsUsed = KRequiredNumberOfEndpoints;
+    ifc().iClass.iClassNum    = 0x08;   // Mass Storage
+    ifc().iClass.iSubClassNum = 0x06;   // SCSI Transparent Command Set
+    ifc().iClass.iProtocolNum = 0x50;   // Bulk Only Transport
 
-	if (d_caps().iHighSpeed)
-		{
-		// Tell the Protocol about it, because it might want to do some
-		// optimizing too.
-		iProtocol->ReportHighSpeedDevice();
-		}
+    if (d_caps().iHighSpeed)
+        {
+        // Tell the Protocol about it, because it might want to do some
+        // optimizing too.
+        iProtocol->ReportHighSpeedDevice();
+        }
 
-	if ((ret = iLdd.SetInterface(0, ifc)) == KErrNone)
-		{
-		return (iLdd.FinalizeInterface(iChunk));
-		}
-	return ret;
-	}
+    if ((ret = iLdd.SetInterface(0, ifc)) == KErrNone)
+        {
+        return (iLdd.FinalizeInterface(iChunk));
+        }
+    return ret;
+    }
 
 void CBulkOnlyTransportUsbcScLdd::ReleaseInterface()
-	{
-	iLdd.ReleaseInterface(0);
-	}
+    {
+    iLdd.ReleaseInterface(0);
+    }
 
 
 TInt CBulkOnlyTransportUsbcScLdd::StartControlInterface()
-	{
-	return iControlInterface->Start();
-	}
+    {
+    return iControlInterface->Start();
+    }
 
 void CBulkOnlyTransportUsbcScLdd::CancelControlInterface()
-	{
-	iControlInterface->Cancel();
-	}
+    {
+    iControlInterface->Cancel();
+    }
 
 void CBulkOnlyTransportUsbcScLdd::ActivateDeviceStateNotifier()
-	{
-	iDeviceStateNotifier->Activate();
-	}
+    {
+    iDeviceStateNotifier->Activate();
+    }
 
 void CBulkOnlyTransportUsbcScLdd::CancelDeviceStateNotifier()
-	{
-	iDeviceStateNotifier->Cancel();
-	}
+    {
+    iDeviceStateNotifier->Cancel();
+    }
 
 
 void CBulkOnlyTransportUsbcScLdd::CancelReadWriteRequests()
-	{
-	__FNLOG("CBulkOnlyTransportUsbcScLdd::CancelReadWriteRequests");
-	TUsbcScChunkHeader chunkHeader(*iChunk);
-	for (TInt i = 0; i < chunkHeader.iAltSettings->iNumOfAltSettings; i++)
-		{
-		TInt8* endpoint = (TInt8*) (chunkHeader.iAltSettings->iAltTableOffset[i] + (TInt) iChunk->Base());
-		TInt numOfEps = chunkHeader.GetNumberOfEndpoints(i);
+    {
+    TUsbcScChunkHeader chunkHeader(*iChunk);
+    for (TInt i = 0; i < chunkHeader.iAltSettings->iNumOfAltSettings; i++)
+        {
+        TInt8* endpoint = (TInt8*) (chunkHeader.iAltSettings->iAltTableOffset[i] + (TInt) iChunk->Base());
+        TInt numOfEps = chunkHeader.GetNumberOfEndpoints(i);
         __ASSERT_DEBUG(numOfEps >= 0, User::Invariant());
-		for (TInt j = 1; j <= numOfEps; j++)
-			{
-			TUsbcScHdrEndpointRecord* endpointInf = (TUsbcScHdrEndpointRecord*) &(endpoint[j * chunkHeader.iAltSettings->iEpRecordSize]);
-			if (endpointInf->Direction() == KUsbScHdrEpDirectionOut)
-				{
-				iLdd.ReadCancel(endpointInf->iBufferNo);
-				}
-			if (endpointInf->Direction() == KUsbScHdrEpDirectionIn)
-				{
-				iLdd.WriteCancel(endpointInf->iBufferNo);
-				}
-			}
-		}
-	}
+        for (TInt j = 1; j <= numOfEps; j++)
+            {
+            TUsbcScHdrEndpointRecord* endpointInf = (TUsbcScHdrEndpointRecord*) &(endpoint[j * chunkHeader.iAltSettings->iEpRecordSize]);
+            if (endpointInf->Direction() == KUsbScHdrEpDirectionOut)
+                {
+                iLdd.ReadCancel(endpointInf->iBufferNo);
+                }
+            if (endpointInf->Direction() == KUsbScHdrEpDirectionIn)
+                {
+                iLdd.WriteCancel(endpointInf->iBufferNo);
+                }
+            }
+        }
+    }
 
 void CBulkOnlyTransportUsbcScLdd::AllocateEndpointResources()
-	{
-	TUsbcScChunkHeader chunkHeader(*iChunk);
-	for (TInt i = 0; i < chunkHeader.iAltSettings->iNumOfAltSettings; i++)
-		{
-		TInt8* endpoint = (TInt8*) (chunkHeader.iAltSettings->iAltTableOffset[i] + (TInt) iChunk->Base()); 
+    {
+    TUsbcScChunkHeader chunkHeader(*iChunk);
+    for (TInt i = 0; i < chunkHeader.iAltSettings->iNumOfAltSettings; i++)
+        {
+        TInt8* endpoint = (TInt8*) (chunkHeader.iAltSettings->iAltTableOffset[i] + (TInt) iChunk->Base());
 
-		for (TInt j = 1; j <= chunkHeader.GetNumberOfEndpoints(i); j++) 
-			{
-			TUsbcScHdrEndpointRecord* endpointInf = (TUsbcScHdrEndpointRecord*) &(endpoint[j * chunkHeader.iAltSettings->iEpRecordSize]);
-			if (endpointInf->Direction() == KUsbScHdrEpDirectionOut)
-				{
-				iOutEndpoint = j;
-				}
-			if (endpointInf->Direction() == KUsbScHdrEpDirectionIn)
-				{
-				iInEndpoint = j;
-				}
-			}
-		}
+        for (TInt j = 1; j <= chunkHeader.GetNumberOfEndpoints(i); j++)
+            {
+            TUsbcScHdrEndpointRecord* endpointInf = (TUsbcScHdrEndpointRecord*) &(endpoint[j * chunkHeader.iAltSettings->iEpRecordSize]);
+            if (endpointInf->Direction() == KUsbScHdrEpDirectionOut)
+                {
+                iOutEndpoint = j;
+                }
+            if (endpointInf->Direction() == KUsbScHdrEpDirectionIn)
+                {
+                iInEndpoint = j;
+                }
+            }
+        }
 
-	TUsbDeviceCaps d_caps;
-	TInt err;
-	TInt ret = iLdd.DeviceCaps(d_caps);
-	if (ret == KErrNone)
-		{
-		if((d_caps().iFeatureWord1 & KUsbDevCapsFeatureWord1_EndpointResourceAllocV2) != KUsbDevCapsFeatureWord1_EndpointResourceAllocV2)
-			{		
-			__PRINT(_L("CBulkOnlyTransportUsbcScLdd::Start  - Setting up DMA and double buffering\n"));
-				// Set up DMA if possible (errors are non-critical)
-			err = iLdd.AllocateEndpointResource(iOutEndpoint, EUsbcEndpointResourceDMA);
-			if (err != KErrNone)
-				{
-				__PRINT1(_L("Set DMA on OUT endpoint failed with error code: %d"), err);
-				}
-			err = iLdd.AllocateEndpointResource(iInEndpoint, EUsbcEndpointResourceDMA);
-			if (err != KErrNone)
-				{
-				__PRINT1(_L("Set DMA on IN endpoint failed with error code: %d"), err);
-				}
+    TUsbDeviceCaps d_caps;
+    TInt err;
+    TInt ret = iLdd.DeviceCaps(d_caps);
+    if (ret == KErrNone)
+        {
+        if((d_caps().iFeatureWord1 & KUsbDevCapsFeatureWord1_EndpointResourceAllocV2) != KUsbDevCapsFeatureWord1_EndpointResourceAllocV2)
+            {
+            // Set up DMA if possible (errors are non-critical)
+            err = iLdd.AllocateEndpointResource(iOutEndpoint, EUsbcEndpointResourceDMA);
+            if (err != KErrNone)
+                {
+                OstTrace1(TRACE_SMASSSTORAGE_BOT, A1_SC, "Set DMA on OUT endpoint failed with error code: %d", err);
+                }
+            err = iLdd.AllocateEndpointResource(iInEndpoint, EUsbcEndpointResourceDMA);
+            if (err != KErrNone)
+                {
+                OstTrace1(TRACE_SMASSSTORAGE_BOT, A2_SC, "Set DMA on IN endpoint failed with error code: %d", err);
+                }
 
-				// Set up Double Buffering if possible (errors are non-critical)
-			err = iLdd.AllocateEndpointResource(iOutEndpoint, EUsbcEndpointResourceDoubleBuffering);
-			if (err != KErrNone)
-				{
-				__PRINT1(_L("Set Double Buffering on OUT endpoint failed with error code: %d"), err);
-				}
-			err = iLdd.AllocateEndpointResource(iInEndpoint, EUsbcEndpointResourceDoubleBuffering);
-				if (err != KErrNone)
-				{
-				__PRINT1(_L("Set Double Buffering on IN endpoint failed with error code: %d"), err);
-				}
-			}
-		}
-	
-	err = OpenEndpoints();
-	}
+                // Set up Double Buffering if possible (errors are non-critical)
+            err = iLdd.AllocateEndpointResource(iOutEndpoint, EUsbcEndpointResourceDoubleBuffering);
+            if (err != KErrNone)
+                {
+                OstTrace1(TRACE_SMASSSTORAGE_BOT, A3_SC, "Set Double Buffering on OUT endpoint failed with error code: %d", err);
+                }
+            err = iLdd.AllocateEndpointResource(iInEndpoint, EUsbcEndpointResourceDoubleBuffering);
+                if (err != KErrNone)
+                {
+                OstTrace1(TRACE_SMASSSTORAGE_BOT, A4_SC, "Set Double Buffering on IN endpoint failed with error code: %d", err);
+                }
+            }
+        }
+
+    err = OpenEndpoints();
+    }
 
 TInt CBulkOnlyTransportUsbcScLdd::OpenEndpoints()
-	{
-	TInt res = iLdd.OpenEndpoint(iSCReadEndpointBuf, iOutEndpoint);
-	if (res == KErrNone)
-		{
-		res = iLdd.OpenEndpoint(iSCWriteEndpointBuf, iInEndpoint);
-		if (res == KErrNone)
-			{
-			iSCWriteEndpointBuf.GetInBufferRange((TAny*&)iDataPtr, iInBufferLength);
-			res = iControlInterface->OpenEp0();
-			}
-		return res;
-		}
+    {
+    TInt res = iLdd.OpenEndpoint(iSCReadEndpointBuf, iOutEndpoint);
+    if (res == KErrNone)
+        {
+        res = iLdd.OpenEndpoint(iSCWriteEndpointBuf, iInEndpoint);
+        if (res == KErrNone)
+            {
+            iSCWriteEndpointBuf.GetInBufferRange((TAny*&)iDataPtr, iInBufferLength);
+            res = iControlInterface->OpenEp0();
+            }
+        return res;
+        }
 
-	return res;
-	}
+    return res;
+    }
 
 
 TInt CBulkOnlyTransportUsbcScLdd::GetDeviceStatus(TUsbcDeviceState& deviceStatus)
-	{
-	return iLdd.DeviceStatus(deviceStatus);
-	}
+    {
+    return iLdd.DeviceStatus(deviceStatus);
+    }
 
 void CBulkOnlyTransportUsbcScLdd::FlushData()
-	{
-	// Intentionally Left Blank Do Nothing 
-	}
+    {
+    // Intentionally Left Blank Do Nothing
+    }
 
 /**
  * Read out rest data from OutEndpoint and discard them
  */
 void CBulkOnlyTransportUsbcScLdd::ReadAndDiscardData(TInt /*aBytes*/)
-	{
-	__FNLOG("CBulkOnlyTransport::ReadAndDiscardData");
-	TRequestStatus status;
-	TInt r = KErrNone; // Lets assume there is no data
-	do
-		{
-		iSCReadSize = 0;
-		status = KErrNone;
-		r = iSCReadEndpointBuf.TakeBuffer(iSCReadData,iSCReadSize,iReadZlp,status);
-		iSCReadEndpointBuf.Expire();
-		}
-	while (r == KErrCompletion);
+    {
+    TRequestStatus status;
+    TInt r = KErrNone; // Lets assume there is no data
+    do
+        {
+        iSCReadSize = 0;
+        status = KErrNone;
+        r = iSCReadEndpointBuf.TakeBuffer(iSCReadData,iSCReadSize,iReadZlp,status);
+        iSCReadEndpointBuf.Expire();
+        }
+    while (r == KErrCompletion);
 
-	if (r == KErrNone)
-		{
-		TRequestStatus* stat = &status;
-		User::RequestComplete(stat, KErrNone);
-		}
-	}
+    if (r == KErrNone)
+        {
+        TRequestStatus* stat = &status;
+        User::RequestComplete(stat, KErrNone);
+        }
+    }
 
 /**
 Called by the protocol to determine how many bytes of data are available in the read buffer.
@@ -654,91 +641,87 @@
 @return The number of bytes available in the read buffer
 */
 TInt CBulkOnlyTransportUsbcScLdd::BytesAvailable()
-	{
-	// Intentionally Left Blank Do Nothing 
-	return 0;
-	}
+    {
+    // Intentionally Left Blank Do Nothing
+    return 0;
+    }
 
 void CBulkOnlyTransportUsbcScLdd::StallEndpointAndWaitForClear()
-	{
-	__FNLOG("CBulkOnlyTransportUsbcScLdd::StallEndpointAndWaitForClear");
-
-	// Now stall this endpoint
-	__PRINT1(_L("Stalling endpoint %d"), iInEndpoint);
-	TInt r = iLdd.HaltEndpoint(iInEndpoint);
-	if (r != KErrNone)
-		{
-		__PRINT2(_L("Error: stalling ep %d failed: %d"), iInEndpoint, r);
-		}
-	TEndpointState ep_state;
-	TInt i = 0;
-	do
-		{
-		// Wait for 10ms before checking the ep status
-		User::After(10000);
-		iLdd.EndpointStatus(iInEndpoint, ep_state);
-		if (++i >= 550)
-			{
-			// 5.5 secs should be enough (see 9.2.6.1 Request Processing Timing)
-			__PRINT1(_L("Error: Checked for ep %d de-stall for 5.5s - giving up now"), iInEndpoint);
-			// We can now only hope for a Reset Recovery
-			return;
-			}
-		} while ((ep_state == EEndpointStateStalled) && iStarted);
-	__PRINT2(_L("Checked for ep %d de-stall: %d time(s)"), iInEndpoint, i);
-	}
+    {
+    // Now stall this endpoint
+    OstTrace1(TRACE_SMASSSTORAGE_BOT, D1_SC, "Stalling endpoint %d", iInEndpoint);
+    TInt r = iLdd.HaltEndpoint(iInEndpoint);
+    if (r != KErrNone)
+        {
+        OstTraceExt2(TRACE_SMASSSTORAGE_BOT, D2_SC, "Error: stalling ep %d failed: %d", iInEndpoint, r);
+        }
+    TEndpointState ep_state;
+    TInt i = 0;
+    do
+        {
+        // Wait for 10ms before checking the ep status
+        User::After(10000);
+        iLdd.EndpointStatus(iInEndpoint, ep_state);
+        if (++i >= 550)
+            {
+            // 5.5 secs should be enough (see 9.2.6.1 Request Processing Timing)
+            OstTrace1(TRACE_SMASSSTORAGE_BOT, D3_SC, "Error: Checked for ep %d de-stall for 5.5s - giving up now", iInEndpoint);
+            // We can now only hope for a Reset Recovery
+            return;
+            }
+        } while ((ep_state == EEndpointStateStalled) && iStarted);
+    OstTraceExt2(TRACE_SMASSSTORAGE_BOT, D4_SC, "Checked for ep %d de-stall: %d time(s)", iInEndpoint, i);
+    }
 
 /**
 Read CBW data from the host and decode it.
 */
 void CBulkOnlyTransportUsbcScLdd::ReadCBW()
-	{
-	__FNLOG("CBulkOnlyTransportUsbcScLdd::ReadCBW");
-	if (IsActive())
-		{
-		__PRINT(_L("Still active\n"));
-		__ASSERT_DEBUG(EFalse, User::Panic(KUsbMsSvrPncCat, EMsBulkOnlyStillActive)); 
-		return;
-		}
-	TInt r = KErrNone;
-	do
-		{
-		r = ReadUsb();
-		if ((r == KErrCompletion) && (iSCReadSize == KCbwLength))  
-			{
-			iCurrentState = EWaitForCBW;
-			iStatus = KErrNone;
-			DecodeCBW();
-			iSCReadSize = 0;
-			}
-		else if (r == KErrNone)
-			{
-			iCurrentState = EWaitForCBW;
-			SetActive();
-			}
-		else if ((r == KErrCompletion) && (iSCReadSize != KCbwLength))
-			{
-			ExpireData(iSCReadData);
-			}
-		}while ((r == KErrCompletion) && (!IsActive()));
-	}
+    {
+    if (IsActive())
+        {
+        __ASSERT_DEBUG(EFalse, User::Panic(KUsbMsSvrPncCat, EMsBulkOnlyStillActive));
+        return;
+        }
+    TInt r = KErrNone;
+    do
+        {
+        r = ReadUsb();
+        if ((r == KErrCompletion) && (iSCReadSize == KCbwLength))
+            {
+            iCurrentState = EWaitForCBW;
+            iStatus = KErrNone;
+            DecodeCBW();
+            iSCReadSize = 0;
+            }
+        else if (r == KErrNone)
+            {
+            iCurrentState = EWaitForCBW;
+            SetActive();
+            }
+        else if ((r == KErrCompletion) && (iSCReadSize != KCbwLength))
+            {
+            ExpireData(iSCReadData);
+            }
+        }while ((r == KErrCompletion) && (!IsActive()));
+    }
 
 void CBulkOnlyTransportUsbcScLdd::ExpireData(TAny* aAddress)
-	{
-	if (aAddress)
-		{
-		iSCReadEndpointBuf.Expire(aAddress);
-		}
-	else
-		{
-		iSCReadEndpointBuf.Expire();
-		}
-	}
+    {
+    if (aAddress)
+        {
+        iSCReadEndpointBuf.Expire(aAddress);
+        }
+    else
+        {
+        iSCReadEndpointBuf.Expire();
+        }
+    }
 
 void CBulkOnlyTransportUsbcScLdd::ProcessCbwEvent()
-	{
-	ReadCBW();
-	}
+    {
+    ReadCBW();
+    }
 
 /**
 Request data form the host for the protocol
@@ -746,201 +729,198 @@
 @param aLength amount of data (in bytes) to be received from the host
 */
 void CBulkOnlyTransportUsbcScLdd::ReadData(TUint /*aLength*/)
-	{
-	__FNLOG("CBulkOnlyTransportUsbcScLdd::ReadData");
-	if (IsActive())
-		{
-		__PRINT(_L("Still active\n"));
-		__ASSERT_DEBUG(EFalse, User::Panic(KUsbMsSvrPncCat, EMsBulkOnlyStillActive));
-		return;
-		}
-	TInt r = KErrNone;
-	do
-		{
-		r = ReadUsb();
-		iCurrentState = EReadingData;
-		if (r == KErrCompletion)
-			{
-			iReadBufPtr.Set((TUint8*) iSCReadData, iSCReadSize, iSCReadSize);
-			iStatus = KErrNone;
-			ProcessDataFromHost();
-			iSCReadSize = 0;
-			}
-		else if (r == KErrNone)
-			{
-			iSCReadSize = 0;
-			SetActive();
-			}
+    {
+    if (IsActive())
+        {
+        __ASSERT_DEBUG(EFalse, User::Panic(KUsbMsSvrPncCat, EMsBulkOnlyStillActive));
+        return;
+        }
+    TInt r = KErrNone;
+    do
+        {
+        r = ReadUsb();
+        iCurrentState = EReadingData;
+        if (r == KErrCompletion)
+            {
+            iReadBufPtr.Set((TUint8*) iSCReadData, iSCReadSize, iSCReadSize);
+            iStatus = KErrNone;
+            ProcessDataFromHost();
+            iSCReadSize = 0;
+            }
+        else if (r == KErrNone)
+            {
+            iSCReadSize = 0;
+            SetActive();
+            }
 
-		}while ((r == KErrCompletion) && (!IsActive()));
-	}
+        }while ((r == KErrCompletion) && (!IsActive()));
+    }
 
 void CBulkOnlyTransportUsbcScLdd::ProcessDataFromHost()
-	{
-	TInt ret = KErrNone;
-		{
-		if (iReadSetUp)
-			{
-			ret = iProtocol->ReadComplete(KErrNone);
-			}
+    {
+    TInt ret = KErrNone;
+        {
+        if (iReadSetUp)
+            {
+            ret = iProtocol->ReadComplete(KErrNone);
+            }
 #ifndef MSDC_MULTITHREADED
-		ExpireData(iSCReadData);
+        ExpireData(iSCReadData);
 #endif
-		TUint deviceDataLength = iSCReadSize; // What was written to the disk // static_cast<TUint>(iReadBuf.Length());
-		if(ret == KErrCompletion)
-			{
-			// The protocol has indicated with KErrCompletion that sufficient
-			// data is available in the buffer to process the transfer immediately.
+        TUint deviceDataLength = iSCReadSize; // What was written to the disk // static_cast<TUint>(iReadBuf.Length());
+        if(ret == KErrCompletion)
+            {
+            // The protocol has indicated with KErrCompletion that sufficient
+            // data is available in the buffer to process the transfer immediately.
 
-			//iDataResidue is initially set to host data length as we do not know how much data is there in the 'LDD transfer'. 
-			//After a TakeBuffer call, iSCReadSize in updated and set to deviceDataLength
-			iDataResidue -= deviceDataLength;
-			}
-		else
-			{
-			iDataResidue -= deviceDataLength;
+            //iDataResidue is initially set to host data length as we do not know how much data is there in the 'LDD transfer'.
+            //After a TakeBuffer call, iSCReadSize in updated and set to deviceDataLength
+            iDataResidue -= deviceDataLength;
+            }
+        else
+            {
+            iDataResidue -= deviceDataLength;
 
-			// The protocol has indicated that transfer is
-			// complete, so send the CSW response to the host.
-			iReadSetUp = EFalse;
+            // The protocol has indicated that transfer is
+            // complete, so send the CSW response to the host.
+            iReadSetUp = EFalse;
 
-			if (ret != KErrNone)
-				{
-				iCmdStatus = ECommandFailed;
-				}
+            if (ret != KErrNone)
+                {
+                iCmdStatus = ECommandFailed;
+                }
 
-			if (iDataResidue)
-				{
-				__PRINT(_L("Discarding residue"));
-				// we have to read as much data as available that host PC sends;
-				// otherwise, bulk-out endpoint will need to keep sending NAK back.
-				ReadAndDiscardData(iDataResidue); 
-				}
+            if (iDataResidue)
+                {
+                OstTrace0(TRACE_SMASSSTORAGE_BOT, E2_SC, "Discarding residue");
+                // we have to read as much data as available that host PC sends;
+                // otherwise, bulk-out endpoint will need to keep sending NAK back.
+                ReadAndDiscardData(iDataResidue);
+                }
 
-			SendCSW(iCbwTag, iDataResidue, iCmdStatus);
-			}
-		}
-	}
+            SendCSW(iCbwTag, iDataResidue, iCmdStatus);
+            }
+        }
+    }
 
 void CBulkOnlyTransportUsbcScLdd::WriteUsb(TRequestStatus& aStatus, TPtrC8& aDes, TUint aLength, TBool aZlpRequired)
-	{
-	TUint aOffset = (TUint) aDes.Ptr() - (TUint) iChunk->Base();
-	iSCWriteEndpointBuf.WriteBuffer(aOffset, aLength, aZlpRequired, aStatus);
-	}
+    {
+    TUint aOffset = (TUint) aDes.Ptr() - (TUint) iChunk->Base();
+    iSCWriteEndpointBuf.WriteBuffer(aOffset, aLength, aZlpRequired, aStatus);
+    }
 
 void CBulkOnlyTransportUsbcScLdd::SetCbwPtr()
-	{
-	iCbwBufPtr.Set((TUint8*)iSCReadData, iSCReadSize);
-	}
+    {
+    iCbwBufPtr.Set((TUint8*)iSCReadData, iSCReadSize);
+    }
 
 TPtr8& CBulkOnlyTransportUsbcScLdd::SetCommandBufPtr(TUint aLength)
-	{
-	TPtr8 writeBuf((TUint8*) iDataPtr, aLength);
-	iCommandBufPtr.Set(writeBuf);
-	return iCommandBufPtr;
-	}
+    {
+    TPtr8 writeBuf((TUint8*) iDataPtr, aLength);
+    iCommandBufPtr.Set(writeBuf);
+    return iCommandBufPtr;
+    }
 
 void CBulkOnlyTransportUsbcScLdd::SetReadDataBufPtr(TUint /*aLength*/)
-	{
-	// Do nothing for now 
-	}
+    {
+    // Do nothing for now
+    }
 
 TPtr8& CBulkOnlyTransportUsbcScLdd::SetDataBufPtr()
-	{
-	TPtr8 writeBuf((TUint8*) iDataPtr, iInBufferLength);
-	iDataBufPtr.Set(writeBuf);
-	return iDataBufPtr;
-	}
+    {
+    TPtr8 writeBuf((TUint8*) iDataPtr, iInBufferLength);
+    iDataBufPtr.Set(writeBuf);
+    return iDataBufPtr;
+    }
 
 void CBulkOnlyTransportUsbcScLdd::SetPaddingBufPtr(TUint aLength)
-	{
-	TPtr8 writeBuf((TUint8*) iDataPtr, aLength, aLength);
-	iPaddingBufPtr.Set(writeBuf);
-	}
+    {
+    TPtr8 writeBuf((TUint8*) iDataPtr, aLength, aLength);
+    iPaddingBufPtr.Set(writeBuf);
+    }
 
 void CBulkOnlyTransportUsbcScLdd::SetCswBufPtr(TUint aLength)
-	{
-	TPtr8 writeBuf((TUint8*) iDataPtr, aLength, aLength);
-	iCswBufPtr.Set(writeBuf);
-	}
+    {
+    TPtr8 writeBuf((TUint8*) iDataPtr, aLength, aLength);
+    iCswBufPtr.Set(writeBuf);
+    }
 
 void CBulkOnlyTransportUsbcScLdd::ProcessReadingDataEvent()
-	{
-	ReadData();
-	}
+    {
+    ReadData();
+    }
 
 TInt CBulkOnlyTransportUsbcScLdd::ReadUsb(TUint /*aLength*/)
-	{
-	__FNLOG("CBulkOnlyTransportUsbcScLdd::ReadUSB");
-	return iSCReadEndpointBuf.TakeBuffer(iSCReadData,iSCReadSize,iReadZlp,iStatus);
-	}
+    {
+    return iSCReadEndpointBuf.TakeBuffer(iSCReadData,iSCReadSize,iReadZlp,iStatus);
+    }
 
 void CBulkOnlyTransportUsbcScLdd::DiscardData(TUint aLength)
-	{
-	TUint c = 0;
-	TRequestStatus status;
-	TInt r = KErrNone;
-	while (c < aLength)
-		{
-		iSCReadSize = 0;
-		status = KErrNone;
-		r = iSCReadEndpointBuf.TakeBuffer(iSCReadData,iSCReadSize,iReadZlp,status);
-		c += iSCReadSize;
-		if (r == KErrNone)
-			User::WaitForRequest(status);
-		if (r == KErrCompletion)
-			{
-			iSCReadEndpointBuf.Expire();
-			}
-		iSCReadSize = 0;
-		}
-	}
+    {
+    TUint c = 0;
+    TRequestStatus status;
+    TInt r = KErrNone;
+    while (c < aLength)
+        {
+        iSCReadSize = 0;
+        status = KErrNone;
+        r = iSCReadEndpointBuf.TakeBuffer(iSCReadData,iSCReadSize,iReadZlp,status);
+        c += iSCReadSize;
+        if (r == KErrNone)
+            User::WaitForRequest(status);
+        if (r == KErrCompletion)
+            {
+            iSCReadEndpointBuf.Expire();
+            }
+        iSCReadSize = 0;
+        }
+    }
 
 void CBulkOnlyTransportUsbcScLdd::WriteToClient(TUint aLength)
-	{
-	TUint c = 0;
-	TRequestStatus status;
-	TInt r = KErrNone;
-	while (c < aLength)
-		{
-		iSCReadSize = 0;
-		status = KErrNone;
-		r = iSCReadEndpointBuf.TakeBuffer(iSCReadData,iSCReadSize,iReadZlp,status);
-		c += iSCReadSize;
-		iProtocol->ReadComplete(KErrGeneral);
-		if (r == KErrNone)
-			User::WaitForRequest(status);
-		if (r == KErrCompletion)
-			{
-			iSCReadEndpointBuf.Expire();
-			}
-		iSCReadSize = 0;
-		}
-	}
+    {
+    TUint c = 0;
+    TRequestStatus status;
+    TInt r = KErrNone;
+    while (c < aLength)
+        {
+        iSCReadSize = 0;
+        status = KErrNone;
+        r = iSCReadEndpointBuf.TakeBuffer(iSCReadData,iSCReadSize,iReadZlp,status);
+        c += iSCReadSize;
+        iProtocol->ReadComplete(KErrGeneral);
+        if (r == KErrNone)
+            User::WaitForRequest(status);
+        if (r == KErrCompletion)
+            {
+            iSCReadEndpointBuf.Expire();
+            }
+        iSCReadSize = 0;
+        }
+    }
 
 #ifdef MSDC_MULTITHREADED
 void CBulkOnlyTransportUsbcScLdd::GetBufferPointers(TPtr8& aDes1, TPtr8& aDes2)
-	{
-	//for DB
-	TUint length = (TUint) (iInBufferLength - KCswBufferSize) / 2;
+    {
+    //for DB
+    TUint length = (TUint) (iInBufferLength - KCswBufferSize) / 2;
 
-	TUint8* start = (TUint8*) (iDataPtr) + KCswBufferSize ; // 'first' buffer
-	aDes1.Set(start, length, length);
+    TUint8* start = (TUint8*) (iDataPtr) + KCswBufferSize ; // 'first' buffer
+    aDes1.Set(start, length, length);
 
-	start = (TUint8*) (iDataPtr) + KCswBufferSize + length; // 'second' buffer
-	aDes2.Set(start, length, length);
-	}
+    start = (TUint8*) (iDataPtr) + KCswBufferSize + length; // 'second' buffer
+    aDes2.Set(start, length, length);
+    }
 #endif
 
 void CBulkOnlyTransportUsbcScLdd::Activate(TRequestStatus& aStatus, TUint& aDeviceState)
     {
-	iLdd.AlternateDeviceStatusNotify(aStatus, aDeviceState);
+    iLdd.AlternateDeviceStatusNotify(aStatus, aDeviceState);
     }
 
 
 void CBulkOnlyTransportUsbcScLdd::Cancel()
     {
-	iLdd.AlternateDeviceStatusNotifyCancel();
+    iLdd.AlternateDeviceStatusNotifyCancel();
     }