diff -r 000000000000 -r 96e5fb8b040d kerneltest/f32test/shostmassstorage/msman/test/tmsprintdrive.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kerneltest/f32test/shostmassstorage/msman/test/tmsprintdrive.cpp Thu Dec 17 09:24:54 2009 +0200 @@ -0,0 +1,236 @@ +// Copyright (c) 2009 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" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + + +#include +#include +#include +#include + +#include "tmsprintdrive.h" + +extern RTest test; +extern RFs fsSession; + +void TMsPrintDrive::FormatDriveInfo(TDes& aBuffer, const TDriveInfo& aDriveInfo) + { + // Append battery, media and drive information to aBuffer + // Define descriptor constants using the _LIT macro + _LIT(KFormatString,"Type=0x%02x,Battery=0x%02x,DriveAtt=0x%02x,MediaAtt=0x%02x\r\n"); + _LIT(KBatLow,"Battery low\r\n"); + _LIT(KBatGood,"Battery good\r\n"); + _LIT(KBatNotSupported,"Battery not supported\r\n"); + _LIT(KNotPresent,"No media present\r\n"); + _LIT(KFloppy,"Media is floppy disk\r\n"); + _LIT(KHard,"Media is hard disk\r\n"); + _LIT(KCDROM,"Media is CD-ROM\r\n"); + _LIT(KRam,"Media is RAM\r\n"); + _LIT(KFlash,"Media is flash\r\n"); + _LIT(KRom,"Media is ROM\r\n"); + _LIT(KRemote,"Media is remote\r\n"); + _LIT(KNANDFlash,"Media is NAND flash\r\n"); + _LIT(KUnknown,"Media unknown\r\n"); + _LIT(KDriveAtts,"Drive attributes:"); + _LIT(KLocal," local"); + _LIT(KROMDrive," ROM"); + _LIT(KRedirected," redirected"); + _LIT(KSubstituted," substituted"); + _LIT(KInternal," internal"); + _LIT(KRemovable," removable"); + _LIT(KMediaAtts,"\r\nMedia attributes:"); + _LIT(KDynamic," dynamic"); + _LIT(KDual," dual-density"); + _LIT(KFormattable," formattable"); + _LIT(KLockable," lockable"); + _LIT(KLocked," locked"); + _LIT(KHasPassword," has password"); + _LIT(KWriteProtected," write-protected"); + _LIT(KNewLine,"\r\n"); + + aBuffer.AppendFormat(KFormatString, TInt(aDriveInfo.iType), + TInt(aDriveInfo.iBattery), + TInt(aDriveInfo.iDriveAtt), + TInt(aDriveInfo.iMediaAtt)); + + switch (aDriveInfo.iBattery) + { + case EBatLow: + aBuffer.Append(KBatLow); + break; + case EBatGood: + aBuffer.Append(KBatGood); + break; + default: + aBuffer.Append(KBatNotSupported); + } + + switch (aDriveInfo.iType) + { + case EMediaNotPresent: + aBuffer.Append(KNotPresent); + break; + case EMediaFloppy: + aBuffer.Append(KFloppy); + break; + case EMediaHardDisk: + aBuffer.Append(KHard); + break; + case EMediaCdRom: + aBuffer.Append(KCDROM); + break; + case EMediaRam: + aBuffer.Append(KRam); + break; + case EMediaFlash: + aBuffer.Append(KFlash); + break; + case EMediaRom: + aBuffer.Append(KRom); + break; + case EMediaRemote: + aBuffer.Append(KRemote); + break; + case EMediaNANDFlash: + aBuffer.Append(KNANDFlash); + break; + default: + aBuffer.Append(KUnknown); + + } + aBuffer.Append(KDriveAtts); + if (aDriveInfo.iDriveAtt & KDriveAttLocal) + aBuffer.Append(KLocal); + if (aDriveInfo.iDriveAtt & KDriveAttRom) + aBuffer.Append(KROMDrive); + if (aDriveInfo.iDriveAtt & KDriveAttRedirected) + aBuffer.Append(KRedirected); + if (aDriveInfo.iDriveAtt & KDriveAttSubsted) + aBuffer.Append(KSubstituted); + if (aDriveInfo.iDriveAtt & KDriveAttInternal) + aBuffer.Append(KInternal); + if (aDriveInfo.iDriveAtt & KDriveAttRemovable) + aBuffer.Append(KRemovable); + aBuffer.Append(KMediaAtts); + if (aDriveInfo.iMediaAtt & KMediaAttVariableSize) + aBuffer.Append(KDynamic); + if (aDriveInfo.iMediaAtt & KMediaAttDualDensity) + aBuffer.Append(KDual); + if (aDriveInfo.iMediaAtt & KMediaAttFormattable) + aBuffer.Append(KFormattable); + if (aDriveInfo.iMediaAtt & KMediaAttWriteProtected) + aBuffer.Append(KWriteProtected); + if (aDriveInfo.iMediaAtt & KMediaAttLockable) + aBuffer.Append(KLockable); + if (aDriveInfo.iMediaAtt & KMediaAttLocked) + aBuffer.Append(KLocked); + if (aDriveInfo.iMediaAtt & KMediaAttHasPassword) + aBuffer.Append(KHasPassword); + aBuffer.Append(KNewLine); + } + + +void TMsPrintDrive::FormatVolumeInfo(TDes& aBuffer, const TVolumeInfo& aVolumeInfo) + { + // Append volume information to aBuffer + _LIT(KUID,"Unique ID: %08x\r\n"); + _LIT(KSize,"Size: 0x%Lx bytes\r\n"); + _LIT(KFree,"Free space: 0x%Lx bytes\r\n"); + _LIT(KVolName,"Volume name: %S\r\n"); + aBuffer.AppendFormat(KUID, aVolumeInfo.iUniqueID); + aBuffer.AppendFormat(KSize, aVolumeInfo.iSize); + aBuffer.AppendFormat(KFree, aVolumeInfo.iFree); + aBuffer.AppendFormat(KVolName, &aVolumeInfo.iName); + } + + +void TMsPrintDrive::VolInfoL(TInt aDriveNumber) + { + _LIT(KMessage,"Drive Info\r\n"); + _LIT(KValidDriveMsg,"Valid drives as characters (and as numbers) are:"); + _LIT(KDriveChar,"%c"); + _LIT(KDriveNum,"(%d) "); + _LIT(KNewLine,"\r\n"); + _LIT(KAvailDriveMsg,"Using DriveList(), available drives are: "); + _LIT(KDriveAtts,"%c: %02x "); + _LIT(KDriveInfo,"Drive information for %c: drive is:\r\n%S\r\n"); + _LIT(KVolInfo,"Volume information for %c: is:\r\n%S\r\n"); + + test.Printf(KMessage); + test.Printf(KValidDriveMsg); + + TChar driveLetter; + + if (fsSession.IsValidDrive(aDriveNumber)) + { + fsSession.DriveToChar(aDriveNumber,driveLetter); + test.Printf(KDriveChar,TUint(driveLetter)); + fsSession.CharToDrive(driveLetter, aDriveNumber); + test.Printf(KDriveNum, aDriveNumber); + } + + test.Printf(KNewLine); + + TDriveList drivelist; + User::LeaveIfError(fsSession.DriveList(drivelist)); + // A TDriveList (the list of available drives), is an array of + // 26 bytes. Each byte with a non zero value signifies that the + // corresponding drive is available. + + test.Printf(KAvailDriveMsg); + + if (drivelist[aDriveNumber]) // if drive-list entry non-zero, drive is available + { + User::LeaveIfError(fsSession.DriveToChar(aDriveNumber,driveLetter)); + // The following line prints the drive letter followed by the hex value + // of the integer indicating that drive's attributes + test.Printf(KDriveAtts,TUint(driveLetter), drivelist[aDriveNumber]); + } + + test.Printf(KNewLine); + + // Print information about available drives + TBuf<200> buffer; + TDriveInfo driveInfo; + + fsSession.Drive(driveInfo, aDriveNumber); + if (driveInfo.iDriveAtt == KDriveAbsent) + { + } + else + { + FormatDriveInfo(buffer, driveInfo); + User::LeaveIfError(fsSession.DriveToChar(aDriveNumber, driveLetter)); + test.Printf(KDriveInfo, TUint(driveLetter), &buffer); + buffer.Zero(); + } + + // Print volume information for all available drives. TVolumeInfo + // provides drive information, and additional information about + // the volume. Just print out the volume information. + + TVolumeInfo volumeInfo; + + TInt err=fsSession.Volume(volumeInfo, aDriveNumber); + if (err!=KErrNotReady) + // Volume() returns KErrNotReady if no volume present. + // In this case, check next drive number + { + buffer.Zero(); + FormatVolumeInfo(buffer, volumeInfo); + User::LeaveIfError(fsSession.DriveToChar(aDriveNumber,driveLetter)); + test.Printf(KVolInfo, (TUint)driveLetter, &buffer); + } + } +