kerneltest/f32test/shostmassstorage/msman/test/tmsprintdrive.cpp
changeset 9 96e5fb8b040d
child 6 0173bcd7697c
equal deleted inserted replaced
-1:000000000000 9:96e5fb8b040d
       
     1 // Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of the License "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 
       
    17 #include <e32def.h>
       
    18 #include <e32cmn.h>
       
    19 #include <f32file.h>
       
    20 #include <e32test.h>
       
    21 
       
    22 #include "tmsprintdrive.h"
       
    23 
       
    24 extern RTest test;
       
    25 extern RFs fsSession;
       
    26 
       
    27 void TMsPrintDrive::FormatDriveInfo(TDes& aBuffer, const TDriveInfo& aDriveInfo)
       
    28     {
       
    29     // Append battery, media and drive information to aBuffer
       
    30     // Define descriptor constants using the _LIT macro
       
    31     _LIT(KFormatString,"Type=0x%02x,Battery=0x%02x,DriveAtt=0x%02x,MediaAtt=0x%02x\r\n");
       
    32     _LIT(KBatLow,"Battery low\r\n");
       
    33     _LIT(KBatGood,"Battery good\r\n");
       
    34     _LIT(KBatNotSupported,"Battery not supported\r\n");
       
    35     _LIT(KNotPresent,"No media present\r\n");
       
    36     _LIT(KFloppy,"Media is floppy disk\r\n");
       
    37     _LIT(KHard,"Media is hard disk\r\n");
       
    38     _LIT(KCDROM,"Media is CD-ROM\r\n");
       
    39     _LIT(KRam,"Media is RAM\r\n");
       
    40     _LIT(KFlash,"Media is flash\r\n");
       
    41     _LIT(KRom,"Media is ROM\r\n");
       
    42     _LIT(KRemote,"Media is remote\r\n");
       
    43     _LIT(KNANDFlash,"Media is NAND flash\r\n");
       
    44     _LIT(KUnknown,"Media unknown\r\n");
       
    45     _LIT(KDriveAtts,"Drive attributes:");
       
    46     _LIT(KLocal," local");
       
    47     _LIT(KROMDrive," ROM");
       
    48     _LIT(KRedirected," redirected");
       
    49     _LIT(KSubstituted," substituted");
       
    50     _LIT(KInternal," internal");
       
    51     _LIT(KRemovable," removable");
       
    52     _LIT(KMediaAtts,"\r\nMedia attributes:");
       
    53     _LIT(KDynamic," dynamic");
       
    54     _LIT(KDual," dual-density");
       
    55     _LIT(KFormattable," formattable");
       
    56     _LIT(KLockable," lockable");
       
    57     _LIT(KLocked," locked");
       
    58     _LIT(KHasPassword," has password");
       
    59     _LIT(KWriteProtected," write-protected");
       
    60     _LIT(KNewLine,"\r\n");
       
    61 
       
    62     aBuffer.AppendFormat(KFormatString, TInt(aDriveInfo.iType),
       
    63                          TInt(aDriveInfo.iBattery),
       
    64                          TInt(aDriveInfo.iDriveAtt),
       
    65                          TInt(aDriveInfo.iMediaAtt));
       
    66 
       
    67     switch (aDriveInfo.iBattery)
       
    68         {
       
    69         case EBatLow:
       
    70             aBuffer.Append(KBatLow);
       
    71             break;
       
    72         case EBatGood:
       
    73             aBuffer.Append(KBatGood);
       
    74             break;
       
    75         default:
       
    76             aBuffer.Append(KBatNotSupported);
       
    77         }
       
    78 
       
    79     switch (aDriveInfo.iType)
       
    80             {
       
    81         case EMediaNotPresent:
       
    82             aBuffer.Append(KNotPresent);
       
    83             break;
       
    84         case EMediaFloppy:
       
    85             aBuffer.Append(KFloppy);
       
    86             break;
       
    87         case EMediaHardDisk:
       
    88             aBuffer.Append(KHard);
       
    89             break;
       
    90         case EMediaCdRom:
       
    91             aBuffer.Append(KCDROM);
       
    92             break;
       
    93         case EMediaRam:
       
    94             aBuffer.Append(KRam);
       
    95             break;
       
    96         case EMediaFlash:
       
    97             aBuffer.Append(KFlash);
       
    98             break;
       
    99         case EMediaRom:
       
   100             aBuffer.Append(KRom);
       
   101             break;
       
   102         case EMediaRemote:
       
   103             aBuffer.Append(KRemote);
       
   104             break;
       
   105         case EMediaNANDFlash:
       
   106             aBuffer.Append(KNANDFlash);
       
   107             break;
       
   108         default:
       
   109             aBuffer.Append(KUnknown);
       
   110 
       
   111         }
       
   112         aBuffer.Append(KDriveAtts);
       
   113         if (aDriveInfo.iDriveAtt & KDriveAttLocal)
       
   114            aBuffer.Append(KLocal);
       
   115         if (aDriveInfo.iDriveAtt & KDriveAttRom)
       
   116             aBuffer.Append(KROMDrive);
       
   117         if (aDriveInfo.iDriveAtt & KDriveAttRedirected)
       
   118            aBuffer.Append(KRedirected);
       
   119         if (aDriveInfo.iDriveAtt & KDriveAttSubsted)
       
   120            aBuffer.Append(KSubstituted);
       
   121         if (aDriveInfo.iDriveAtt & KDriveAttInternal)
       
   122            aBuffer.Append(KInternal);
       
   123         if (aDriveInfo.iDriveAtt & KDriveAttRemovable)
       
   124            aBuffer.Append(KRemovable);
       
   125         aBuffer.Append(KMediaAtts);
       
   126         if (aDriveInfo.iMediaAtt & KMediaAttVariableSize)
       
   127             aBuffer.Append(KDynamic);
       
   128         if (aDriveInfo.iMediaAtt & KMediaAttDualDensity)
       
   129             aBuffer.Append(KDual);
       
   130         if (aDriveInfo.iMediaAtt & KMediaAttFormattable)
       
   131             aBuffer.Append(KFormattable);
       
   132         if (aDriveInfo.iMediaAtt & KMediaAttWriteProtected)
       
   133             aBuffer.Append(KWriteProtected);
       
   134         if (aDriveInfo.iMediaAtt & KMediaAttLockable)
       
   135             aBuffer.Append(KLockable);
       
   136         if (aDriveInfo.iMediaAtt & KMediaAttLocked)
       
   137             aBuffer.Append(KLocked);
       
   138         if (aDriveInfo.iMediaAtt & KMediaAttHasPassword)
       
   139             aBuffer.Append(KHasPassword);
       
   140         aBuffer.Append(KNewLine);
       
   141     }
       
   142 
       
   143 
       
   144 void TMsPrintDrive::FormatVolumeInfo(TDes& aBuffer, const TVolumeInfo& aVolumeInfo)
       
   145     {
       
   146     // Append volume information to aBuffer
       
   147     _LIT(KUID,"Unique ID: %08x\r\n");
       
   148     _LIT(KSize,"Size: 0x%Lx bytes\r\n");
       
   149     _LIT(KFree,"Free space: 0x%Lx bytes\r\n");
       
   150     _LIT(KVolName,"Volume name: %S\r\n");
       
   151     aBuffer.AppendFormat(KUID, aVolumeInfo.iUniqueID);
       
   152     aBuffer.AppendFormat(KSize, aVolumeInfo.iSize);
       
   153     aBuffer.AppendFormat(KFree, aVolumeInfo.iFree);
       
   154     aBuffer.AppendFormat(KVolName, &aVolumeInfo.iName);
       
   155     }
       
   156 
       
   157 
       
   158 void TMsPrintDrive::VolInfoL(TInt aDriveNumber)
       
   159     {
       
   160     _LIT(KMessage,"Drive Info\r\n");
       
   161     _LIT(KValidDriveMsg,"Valid drives as characters (and as numbers) are:");
       
   162     _LIT(KDriveChar,"%c");
       
   163     _LIT(KDriveNum,"(%d) ");
       
   164     _LIT(KNewLine,"\r\n");
       
   165     _LIT(KAvailDriveMsg,"Using DriveList(), available drives are: ");
       
   166     _LIT(KDriveAtts,"%c: %02x ");
       
   167     _LIT(KDriveInfo,"Drive information for %c: drive is:\r\n%S\r\n");
       
   168     _LIT(KVolInfo,"Volume information for %c: is:\r\n%S\r\n");
       
   169 
       
   170     test.Printf(KMessage);
       
   171     test.Printf(KValidDriveMsg);
       
   172 
       
   173     TChar driveLetter;
       
   174 
       
   175     if (fsSession.IsValidDrive(aDriveNumber))
       
   176         {
       
   177         fsSession.DriveToChar(aDriveNumber,driveLetter);
       
   178         test.Printf(KDriveChar,TUint(driveLetter));
       
   179         fsSession.CharToDrive(driveLetter, aDriveNumber);
       
   180         test.Printf(KDriveNum, aDriveNumber);
       
   181         }
       
   182 
       
   183     test.Printf(KNewLine);
       
   184 
       
   185     TDriveList drivelist;
       
   186     User::LeaveIfError(fsSession.DriveList(drivelist));
       
   187     // A TDriveList (the list of available drives), is an array of
       
   188     // 26 bytes. Each byte with a non zero value signifies that the
       
   189     // corresponding drive is available.
       
   190 
       
   191     test.Printf(KAvailDriveMsg);
       
   192 
       
   193     if (drivelist[aDriveNumber]) // if drive-list entry non-zero, drive is available
       
   194         {
       
   195         User::LeaveIfError(fsSession.DriveToChar(aDriveNumber,driveLetter));
       
   196         // The following line prints the drive letter followed by the hex value
       
   197         // of the integer indicating that drive's attributes
       
   198         test.Printf(KDriveAtts,TUint(driveLetter), drivelist[aDriveNumber]);
       
   199         }
       
   200 
       
   201     test.Printf(KNewLine);
       
   202 
       
   203     // Print information about available drives
       
   204     TBuf<200> buffer;
       
   205     TDriveInfo driveInfo;
       
   206 
       
   207     fsSession.Drive(driveInfo, aDriveNumber);
       
   208     if (driveInfo.iDriveAtt == KDriveAbsent)
       
   209         {
       
   210         }
       
   211     else
       
   212         {
       
   213         FormatDriveInfo(buffer, driveInfo);
       
   214         User::LeaveIfError(fsSession.DriveToChar(aDriveNumber, driveLetter));
       
   215         test.Printf(KDriveInfo, TUint(driveLetter), &buffer);
       
   216         buffer.Zero();
       
   217         }
       
   218 
       
   219     // Print volume information for all available drives. TVolumeInfo
       
   220     // provides drive information, and additional information about
       
   221     // the volume. Just print out the volume information.
       
   222 
       
   223     TVolumeInfo volumeInfo;
       
   224 
       
   225     TInt err=fsSession.Volume(volumeInfo, aDriveNumber);
       
   226     if (err!=KErrNotReady)
       
   227         // Volume() returns KErrNotReady if no volume present.
       
   228         // In this case, check next drive number
       
   229         {
       
   230         buffer.Zero();
       
   231         FormatVolumeInfo(buffer, volumeInfo);
       
   232         User::LeaveIfError(fsSession.DriveToChar(aDriveNumber,driveLetter));
       
   233         test.Printf(KVolInfo, (TUint)driveLetter, &buffer);
       
   234         }
       
   235     }
       
   236