diff -r 94f2adf59133 -r b2826f67641f kerneltest/f32test/shostmassstorage/testclient/usbtestmsclient/drivepublisher.cpp --- a/kerneltest/f32test/shostmassstorage/testclient/usbtestmsclient/drivepublisher.cpp Tue Oct 26 11:12:58 2010 +0100 +++ b/kerneltest/f32test/shostmassstorage/testclient/usbtestmsclient/drivepublisher.cpp Tue Oct 26 12:49:20 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of the License "Eclipse Public License v1.0" @@ -20,7 +20,7 @@ // CUsbTransferPublisher, // CUsbReadTransferPublisher, // CUsbReadTransferPublisher. -// +// // @@ -42,39 +42,38 @@ #include "drivepublisher.h" #include "drivemanager.h" #include "debug.h" -#include "msdebug.h" // // Use Lookup table to translate from the internal pair of state variables // to the externally published drive state code. // -LOCAL_D const TUint8 table[][5] = +LOCAL_D const TUint8 table[][5] = { //TMountState=EDisconnected - {EUsbMsDriveState_Disconnected, - EUsbMsDriveState_Disconnected, - EUsbMsDriveState_Disconnected, - EUsbMsDriveState_Disconnected, - EUsbMsDriveState_Disconnected}, + {EUsbMsDriveState_Disconnected, + EUsbMsDriveState_Disconnected, + EUsbMsDriveState_Disconnected, + EUsbMsDriveState_Disconnected, + EUsbMsDriveState_Disconnected}, //TMountState=EConnecting - {EUsbMsDriveState_Connecting, - EUsbMsDriveState_Connecting, - EUsbMsDriveState_Connecting, - EUsbMsDriveState_Connecting, - EUsbMsDriveState_Connecting}, + {EUsbMsDriveState_Connecting, + EUsbMsDriveState_Connecting, + EUsbMsDriveState_Connecting, + EUsbMsDriveState_Connecting, + EUsbMsDriveState_Connecting}, //TMountState=EConnected - //EIdle,EActive,ELocked,EMediaNotPresent,EErrDisMounted - {EUsbMsDriveState_Connected, - EUsbMsDriveState_Active, - EUsbMsDriveState_Locked, - EUsbMsDriveState_MediaNotPresent, - EUsbMsDriveState_Removed}, + //EIdle,EActive,ELocked,EMediaNotPresent,EErrDisMounted + {EUsbMsDriveState_Connected, + EUsbMsDriveState_Active, + EUsbMsDriveState_Locked, + EUsbMsDriveState_MediaNotPresent, + EUsbMsDriveState_Removed}, //TMountState=EDisconnecting - {EUsbMsDriveState_Disconnecting, - EUsbMsDriveState_Disconnecting, - EUsbMsDriveState_Disconnecting, - EUsbMsDriveState_Disconnecting, - EUsbMsDriveState_Disconnecting} + {EUsbMsDriveState_Disconnecting, + EUsbMsDriveState_Disconnecting, + EUsbMsDriveState_Disconnecting, + EUsbMsDriveState_Disconnecting, + EUsbMsDriveState_Disconnecting} }; @@ -83,27 +82,25 @@ Constructor */ RDriveMediaErrorPublisher::RDriveMediaErrorPublisher() - { - __MSFNLOG - _LIT_SECURITY_POLICY_PASS(KMassStorageReadPolicy); - _LIT_SECURITY_POLICY_S0(KMassStorageWritePolicy, KUsbMsDriveState_Category.iUid); + { + _LIT_SECURITY_POLICY_PASS(KMassStorageReadPolicy); + _LIT_SECURITY_POLICY_S0(KMassStorageWritePolicy, KUsbMsDriveState_Category.iUid); - TInt result = RProperty::Define(EUsbMsDriveState_MediaError, RProperty::EInt, - KMassStorageReadPolicy, KMassStorageWritePolicy); + TInt result = RProperty::Define(EUsbMsDriveState_MediaError, RProperty::EInt, + KMassStorageReadPolicy, KMassStorageWritePolicy); - __ASSERT_DEBUG(result == KErrAlreadyExists || result == KErrNone, User::Invariant()); + __ASSERT_DEBUG(result == KErrAlreadyExists || result == KErrNone, User::Invariant()); - result = iMediaErrorProperty.Attach(KUsbMsDriveState_Category, EUsbMsDriveState_MediaError); - __ASSERT_DEBUG(result == KErrNone, User::Invariant()); - } + result = iMediaErrorProperty.Attach(KUsbMsDriveState_Category, EUsbMsDriveState_MediaError); + __ASSERT_DEBUG(result == KErrNone, User::Invariant()); + } RDriveMediaErrorPublisher::~RDriveMediaErrorPublisher() - { - __MSFNLOG - iMediaErrorProperty.Close(); - RProperty::Delete(KUsbMsDriveState_Category, EUsbMsDriveState_MediaError); - } + { + iMediaErrorProperty.Close(); + RProperty::Delete(KUsbMsDriveState_Category, EUsbMsDriveState_MediaError); + } /** Publishing method @@ -113,18 +110,17 @@ @param aError ETrue if drive media has an error else EFalse for no error */ void RDriveMediaErrorPublisher::PublishErrorL(TBool aError) - { - __MSFNLOG - __PRINT1(_L("<< RDriveMediaErrorPublisher::PublishError %x"), aError); + { + __PRINT1(_L("<< RDriveMediaErrorPublisher::PublishError %x"), aError); + + TInt oldValue; + iMediaErrorProperty.Get(oldValue); - TInt oldValue; - iMediaErrorProperty.Get(oldValue); - - if (oldValue != aError) - { - User::LeaveIfError(iMediaErrorProperty.Set(aError)); - } - } + if (oldValue != aError) + { + User::LeaveIfError(iMediaErrorProperty.Set(aError)); + } + } //---------------------------------------------------------------------------- /** @@ -134,29 +130,27 @@ @param aDriveMap */ RDriveStateChangedPublisher::RDriveStateChangedPublisher(const TMsDriveList& aDrives, - const TLunToDriveMap& aDriveMap) - : - iDrives(aDrives), - iDriveMap(aDriveMap) - { - __MSFNLOG - _LIT_SECURITY_POLICY_PASS(KMassStorageReadPolicy); - _LIT_SECURITY_POLICY_S0(KMassStorageWritePolicy, KUsbMsDriveState_Category.iUid); + const TLunToDriveMap& aDriveMap) + : + iDrives(aDrives), + iDriveMap(aDriveMap) + { + _LIT_SECURITY_POLICY_PASS(KMassStorageReadPolicy); + _LIT_SECURITY_POLICY_S0(KMassStorageWritePolicy, KUsbMsDriveState_Category.iUid); - TInt result = RProperty::Define(KUsbMsDriveState_Category, - EUsbMsDriveState_DriveStatus, RProperty::EByteArray, - KMassStorageReadPolicy, KMassStorageWritePolicy, - KUsbMsMaxDrives*2); - __ASSERT_DEBUG(result == KErrAlreadyExists || result == KErrNone, User::Invariant()); - result = result; // remove urel warning - } + TInt result = RProperty::Define(KUsbMsDriveState_Category, + EUsbMsDriveState_DriveStatus, RProperty::EByteArray, + KMassStorageReadPolicy, KMassStorageWritePolicy, + KUsbMsMaxDrives*2); + __ASSERT_DEBUG(result == KErrAlreadyExists || result == KErrNone, User::Invariant()); + result = result; // remove urel warning + } RDriveStateChangedPublisher::~RDriveStateChangedPublisher() - { - __MSFNLOG - RProperty::Delete(KUsbMsDriveState_Category, EUsbMsDriveState_DriveStatus); - } + { + RProperty::Delete(KUsbMsDriveState_Category, EUsbMsDriveState_DriveStatus); + } /** @@ -166,36 +160,35 @@ values encoded into one 32-bit word. */ void RDriveStateChangedPublisher::DriveStateChanged() - { - __MSFNLOG - TUsbMsDrivesStatus allDrivesStatus; + { + TUsbMsDrivesStatus allDrivesStatus; - for(TUint8 i = 0; i < iDrives.Count(); i++) - { - allDrivesStatus.Append(iDriveMap[i]); + for(TUint8 i = 0; i < iDrives.Count(); i++) + { + allDrivesStatus.Append(iDriveMap[i]); - CMassStorageDrive::TMountState ms = iDrives[i]->MountState(); - TLocalDriveRef::TDriveState ds = iDrives[i]->DriveState(); - TInt driveStatus = EUsbMsDriveState_Error; - if((TUint8)ds < sizeof(table[0]) && (TUint8)ms < sizeof(table)/sizeof(table[0])) - { - driveStatus = table[ms][ds]; - __PRINT3(_L("ms=%d ds=%d %d"), ms, ds, driveStatus); - } - allDrivesStatus.Append(driveStatus); - } + CMassStorageDrive::TMountState ms = iDrives[i]->MountState(); + TLocalDriveRef::TDriveState ds = iDrives[i]->DriveState(); + TInt driveStatus = EUsbMsDriveState_Error; + if((TUint8)ds < sizeof(table[0]) && (TUint8)ms < sizeof(table)/sizeof(table[0])) + { + driveStatus = table[ms][ds]; + __PRINT3(_L("ms=%d ds=%d %d"), ms, ds, driveStatus); + } + allDrivesStatus.Append(driveStatus); + } - __PRINT1(_L("Publishing EUsbMsDriveState_DriveStatus for %d drives\n"), - allDrivesStatus.Length()/2); + __PRINT1(_L("Publishing EUsbMsDriveState_DriveStatus for %d drives\n"), + allDrivesStatus.Length()/2); - if(KErrNone != RProperty::Set(KUsbMsDriveState_Category, - EUsbMsDriveState_DriveStatus, - allDrivesStatus)) - { - __ASSERT_DEBUG(EFalse,User::Invariant()); - } - } + if(KErrNone != RProperty::Set(KUsbMsDriveState_Category, + EUsbMsDriveState_DriveStatus, + allDrivesStatus)) + { + __ASSERT_DEBUG(EFalse,User::Invariant()); + } + } //---------------------------------------------------------------------------- @@ -209,53 +202,49 @@ CUsbTransferPublisher::CUsbTransferPublisher(TUsbMsDriveState_Subkey aSubKey, const TBytesTransferedList& aArray) : iSubKey(aSubKey), - iArray(aArray) - { - __MSFNLOG - } + iArray(aArray) + { + } void CUsbTransferPublisher::ConstructL() - { - __MSFNLOG + { + _LIT_SECURITY_POLICY_PASS(KMassStorageReadPolicy); + _LIT_SECURITY_POLICY_S0(KMassStorageWritePolicy, KUsbMsDriveState_Category.iUid); - _LIT_SECURITY_POLICY_PASS(KMassStorageReadPolicy); - _LIT_SECURITY_POLICY_S0(KMassStorageWritePolicy, KUsbMsDriveState_Category.iUid); - - TInt r = RProperty::Define(iSubKey, RProperty::EByteArray, - KMassStorageReadPolicy, KMassStorageWritePolicy, - KUsbMsMaxDrives*sizeof(TInt)); + TInt r = RProperty::Define(iSubKey, RProperty::EByteArray, + KMassStorageReadPolicy, KMassStorageWritePolicy, + KUsbMsMaxDrives*sizeof(TInt)); - if (r != KErrAlreadyExists) - { - User::LeaveIfError(r); - } + if (r != KErrAlreadyExists) + { + User::LeaveIfError(r); + } - // Attach to the properties here. Only do this once, continuously attaching - // will currently cause a memory leak - User::LeaveIfError(iProperty.Attach(KUsbMsDriveState_Category, iSubKey)); + // Attach to the properties here. Only do this once, continuously attaching + // will currently cause a memory leak + User::LeaveIfError(iProperty.Attach(KUsbMsDriveState_Category, iSubKey)); - // Create the EDataTransferred timer - iTimer = CPeriodic::NewL(CActive::EPriorityStandard); - iTimerRunning = EFalse; - } + // Create the EDataTransferred timer + iTimer = CPeriodic::NewL(CActive::EPriorityStandard); + iTimerRunning = EFalse; + } /** Destructor */ CUsbTransferPublisher::~CUsbTransferPublisher() - { - __MSFNLOG - if(iTimer) - { - iTimer->Cancel(); - } - delete iTimer; - iProperty.Close(); + { + if(iTimer) + { + iTimer->Cancel(); + } + delete iTimer; + iProperty.Close(); - RProperty::Delete(KUsbMsDriveState_Category, iSubKey); - } + RProperty::Delete(KUsbMsDriveState_Category, iSubKey); + } /** @@ -266,11 +255,10 @@ @return not used in CPeriodic callback (see TCallback) */ TInt CUsbTransferPublisher::PublishDataTransferredEvent(TAny* obj) - { - __MSFNSLOG - static_cast(obj)->DoPublishDataTransferredEvent(); - return 1; - } + { + static_cast(obj)->DoPublishDataTransferredEvent(); + return 1; + } /** @@ -278,22 +266,21 @@ the last update. */ void CUsbTransferPublisher::DoPublishDataTransferredEvent() - { - __MSFNLOG - if (PublishDataTransferred()) - { - // some data has been transfered so reset the counter - iTimerCancelCnt = ETimerCancelDelay; - } + { + if (PublishDataTransferred()) + { + // some data has been transfered so reset the counter + iTimerCancelCnt = ETimerCancelDelay; + } - // Update the cancel count if no data was transferred the last - // (few) times this has been called - if (--iTimerCancelCnt == 0) - { - StopTimer(); - iTimerCancelCnt = ETimerCancelDelay; - } - } + // Update the cancel count if no data was transferred the last + // (few) times this has been called + if (--iTimerCancelCnt == 0) + { + StopTimer(); + iTimerCancelCnt = ETimerCancelDelay; + } + } /** @@ -301,43 +288,42 @@ the last update. */ TBool CUsbTransferPublisher::PublishDataTransferred() - { - __MSFNLOG - TUsbMsBytesTransferred bytesTransferred; - TBool dataTransferred = EFalse; + { + TUsbMsBytesTransferred bytesTransferred; + TBool dataTransferred = EFalse; + + for (TInt i = 0; i < iArray.Count(); i++) + { + bytesTransferred[i] = GetBytesTransferred(i); + } - for (TInt i = 0; i < iArray.Count(); i++) - { - bytesTransferred[i] = GetBytesTransferred(i); - } + // Update the properties only if they have changed + // (or if there's an error reading the old value.) + // Possible optimisation: keep a copy of the value + // as a member variable so we don't need the Get. + TUsbMsBytesTransferred oldValue; - // Update the properties only if they have changed - // (or if there's an error reading the old value.) - // Possible optimisation: keep a copy of the value - // as a member variable so we don't need the Get. - TUsbMsBytesTransferred oldValue; - - if ((iProperty.Get(oldValue) != KErrNone) || (oldValue != bytesTransferred)) - { + if ((iProperty.Get(oldValue) != KErrNone) || (oldValue != bytesTransferred)) + { #ifdef __PRINT3 - // trace of the bytes transferred - for (TInt j=0; j < iArray.Count(); j++) - { - if(oldValue[j] != bytesTransferred[j]) - { - __PRINT3(_L("CDrivePublisher: KBytes[%d] %d->%d\n"), j, oldValue[j], bytesTransferred[j]); - } - } + // trace of the bytes transferred + for (TInt j=0; j < iArray.Count(); j++) + { + if(oldValue[j] != bytesTransferred[j]) + { + __PRINT3(_L("CDrivePublisher: KBytes[%d] %d->%d\n"), j, oldValue[j], bytesTransferred[j]); + } + } #endif - if (KErrNone != iProperty.Set(bytesTransferred)) - { - __ASSERT_DEBUG(EFalse, User::Invariant()); - } - dataTransferred = ETrue; - } + if (KErrNone != iProperty.Set(bytesTransferred)) + { + __ASSERT_DEBUG(EFalse, User::Invariant()); + } + dataTransferred = ETrue; + } - return dataTransferred; - } + return dataTransferred; + } /** @@ -345,33 +331,31 @@ If the timer is not yet running then start it. */ void CUsbTransferPublisher::StartTimer() - { - __MSFNLOG - if (!iTimerRunning) - { - // EDataTransferred event every second - const TTimeIntervalMicroSeconds32 interval = 1 * 1000 * 1000; - TCallBack callback(PublishDataTransferredEvent, this); - __PRINT(_L("Starting timer")); - iTimer->Start(interval, interval, callback); - iTimerRunning = ETrue; - } - } + { + if (!iTimerRunning) + { + // EDataTransferred event every second + const TTimeIntervalMicroSeconds32 interval = 1 * 1000 * 1000; + TCallBack callback(PublishDataTransferredEvent, this); + __PRINT(_L("Starting timer")); + iTimer->Start(interval, interval, callback); + iTimerRunning = ETrue; + } + } /** Ensure that the Timer is stopped */ void CUsbTransferPublisher::StopTimer() - { - __MSFNLOG - if (iTimerRunning) - { - __PRINT(_L("Stopping timer")); - iTimer->Cancel(); - iTimerRunning = EFalse; - } - } + { + if (iTimerRunning) + { + __PRINT(_L("Stopping timer")); + iTimer->Cancel(); + iTimerRunning = EFalse; + } + } //---------------------------------------------------------------------------- @@ -381,21 +365,19 @@ @param aArray */ CUsbWriteTransferPublisher* CUsbWriteTransferPublisher::NewL(const TBytesTransferedList& aArray) - { - __MSFNSLOG - CUsbWriteTransferPublisher* self = new (ELeave) CUsbWriteTransferPublisher(aArray); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } + { + CUsbWriteTransferPublisher* self = new (ELeave) CUsbWriteTransferPublisher(aArray); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(); + return self; + } CUsbWriteTransferPublisher::CUsbWriteTransferPublisher(const TBytesTransferedList& aArray) : CUsbTransferPublisher(EUsbMsDriveState_KBytesWritten, aArray) - { - __MSFNLOG - } + { + } //---------------------------------------------------------------------------- @@ -405,21 +387,19 @@ @param aArray */ CUsbReadTransferPublisher* CUsbReadTransferPublisher::NewL(const TBytesTransferedList& aArray) - { - __MSFNSLOG - CUsbReadTransferPublisher* self = new (ELeave) CUsbReadTransferPublisher(aArray); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } + { + CUsbReadTransferPublisher* self = new (ELeave) CUsbReadTransferPublisher(aArray); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(); + return self; + } CUsbReadTransferPublisher::CUsbReadTransferPublisher(const TBytesTransferedList& aArray) : CUsbTransferPublisher(EUsbMsDriveState_KBytesRead, aArray) - { - __MSFNLOG - } + { + } /** Transfer function for the property @@ -430,5 +410,5 @@ */ TUint CUsbTransferPublisher::GetBytesTransferred(TLun aLun) const { - return I64LOW(iArray[aLun] / (TUint64)1000); + return I64LOW(iArray[aLun] / (TUint64)1000); }