--- a/kerneltest/e32test/mediaext/t_nfe.cpp Wed Sep 15 13:42:27 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,406 +0,0 @@
-// Copyright (c) 1995-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:
-// e32test\mediext\t_nfe.cpp
-//
-//
-
-#define __E32TEST_EXTENSION__
-
-#include <e32test.h>
-#include <f32file.h>
-
-
-RTest test(_L("t_nfe"));
-
-#include <d32locd.h>
-#include <e32property.h>
-#include "nfe.h"
-
-
-TBusLocalDrive Drive;
-TBool TheWaitFlag = EFalse; // wait for drive to be encrypted before exiting test
-TBool TheFinaliseDriveFlag = EFalse;
-TBool TheDisplayStatusFlag = EFalse; // display drive status and then exit (i.e. don't encrypt)
-TBool TheEncryptDriveFlag = ETrue;
-
-TInt FindNfeDrive(TInt aDriveNum)
-/**
-Find the next NFE drive
-
-@return Local drive identifier.
-*/
- {
- TInt drive = KErrNotFound;
-
-// test.Printf(_L("Searching for NFE drive:\n"));
-
- for (TInt i = aDriveNum; i < KMaxLocalDrives && drive < 0; ++i)
- {
- RLocalDrive d;
- TBool change = EFalse;
-
- if(d.Connect(i, change) == KErrNone)
- {
-// test.Printf(_L("Connected to local drive %d\n"), i);
- TLocalDriveCapsV4 dc;
- TPckg<TLocalDriveCapsV4> capsPack(dc);
- capsPack.FillZ();
-
- if(d.Caps(capsPack) != KErrNone)
- continue;
- if (dc.iType == EMediaNANDFlash || dc.iType == EMediaHardDisk)
- {
- TNfeDeviceInfo nfeDeviceInfo;
- TPtr8 nfeDeviceInfoBuf((TUint8*) &nfeDeviceInfo, sizeof(nfeDeviceInfo));
- nfeDeviceInfoBuf.FillZ();
-
- TInt r = d.QueryDevice((RLocalDrive::TQueryDevice) EQueryNfeDeviceInfo, nfeDeviceInfoBuf);
-
-// test.Printf(_L("EQueryNfeDeviceInfo on local drive %d returned %d\n"), i, r);
- if (r == KErrNone)
- {
- test.Printf(_L("\nFound NFE on local drive %d\n"), i);
- drive = i;
- }
- }
- d.Close();
- }
- }
- return drive;
- }
-
-
-
-const TDesC* DriveStatus(TNfeDiskStatus aStatus)
- {
- _LIT(KNfeUnmounted, "Unmounted");
- _LIT(KNfeDecrypted, "Decrypted");
- _LIT(KNfeDecrypting, "Decrypting");
- _LIT(KNfeEncrypted, "Encrypted");
- _LIT(KNfeEncrypting, "Encrypting");
- _LIT(KNfeWiping, "Wiping");
- _LIT(KNfeCorrupted, "Corrupted");
- _LIT(KNfeUnrecognised, "Unrecognised");
-
- switch(aStatus)
- {
- case ENfeUnmounted:
- return &KNfeUnmounted;
- case ENfeDecrypted:
- return &KNfeDecrypted;
- case ENfeDecrypting:
- return &KNfeDecrypting;
- case ENfeEncrypted:
- return &KNfeEncrypted;
- case ENfeEncrypting:
- return &KNfeEncrypting;
- case ENfeWiping:
- return &KNfeWiping;
- case ENfeCorrupted:
- return &KNfeCorrupted;
- default:
- return &KNfeUnrecognised;
-
- }
- }
-
-TInt DriveStatus(TInt aNfeDrive, TNfeDiskStatus& aStatus, TInt &aProgress)
- {
- TInt r = RProperty::Get(
- KNfeUID,
- NFE_KEY(aNfeDrive, KNfeStatusToUiKey),
- *(TInt*) &aStatus);
- if (r != KErrNone)
- return r;
- r = RProperty::Get(
- KNfeUID,
- NFE_KEY(aNfeDrive, KNfeProgressToUiKey),
- *(TInt*) &aProgress);
- return r;
- }
-
-void DisplayNfeDeviceInfo(TInt aNfeDrive, TNfeDeviceInfo& aDeviceInfo)
- {
- test.Printf(_L("Stats: \n"));
-
- RLocalDrive d;
- TBool change = EFalse;
- TInt r = d.Connect(aNfeDrive, change);
- test (r == KErrNone);
-
- TPtr8 nfeDeviceInfoBuf((TUint8*) &aDeviceInfo, sizeof(aDeviceInfo));
- nfeDeviceInfoBuf.FillZ();
- r = d.QueryDevice((RLocalDrive::TQueryDevice) EQueryNfeDeviceInfo, nfeDeviceInfoBuf);
- test (r == KErrNone || r == KErrNotSupported);
-
- d.Close();
-
- test.Printf(_L("iDriveCount %d\n"), aDeviceInfo.iDriveCount);
- test.Printf(_L("iMediaSizeInBytes %lx\n"), aDeviceInfo.iMediaSizeInBytes);
-
- for (TInt i=0; i<aDeviceInfo.iDriveCount; i++)
- {
- TNfeDriveInfo& di = aDeviceInfo.iDrives[i];
-
- test.Printf(_L("*** drive index %d ***\n"), i);
- test.Printf(_L("iLocalDriveNum %x\n"), di.iLocalDriveNum);
- test.Printf(_L("iDriveLetter %c\n"), di.iDriveLetter >= 0 && di.iDriveLetter <= 25 ? di.iDriveLetter +'A' : '?');
- test.Printf(_L("iState %d\n"), di.Status());
-
- test.Printf(_L("State = %S\n"), DriveStatus(di.Status()));
-
- test.Printf(_L("iEncryptStartPos %lx\n"), di.iEncryptStartPos);
- test.Printf(_L("iEncryptEndPos %lx\n"), di.iEncryptEndPos);
- test.Printf(_L("iPartitionBaseAddr %lx\n"), di.iEntry.iPartitionBaseAddr);
- test.Printf(_L("iPartitionLen %lx\n"), di.iEntry.iPartitionLen);
- test.Printf(_L("iPartitionType %x\n"), di.iEntry.iPartitionType);
-
- test.Printf(_L("iReadRequestCount %d\n"), di.iReadRequestCount);
- test.Printf(_L("iWriteRequestCount %d\n"), di.iWriteRequestCount);
- test.Printf(_L("iCodePagingRequesCount %d\n"), di.iCodePagingRequesCount);
- test.Printf(_L("iDataPagingReadRequestCount %d\n"), di.iDataPagingReadRequestCount);
- test.Printf(_L("iDataPagingWriteRequestCount %d\n"), di.iDataPagingWriteRequestCount);
- test.Printf(_L("iUniqueID %08X\n"), di.iUniqueID);
- }
- }
-
-void EncryptDrive(TInt aNfeDrive)
- {
- // subscribe to cmd acknowledgement property - KNfeToUiKey
- RProperty propToUi;
- test.Printf(_L("Attaching ToUi property"));
- TInt r = propToUi.Attach(KNfeUID,NFE_KEY(aNfeDrive,KNfeToUiKey));
- test.Printf(_L("Attaching returned %d"), r);
- if (r != KErrNone)
- return;
-
-
- TRequestStatus status;
- propToUi.Subscribe( status );
-
-
- // Issue command
- test.Printf(_L("Encrypting drive %c...\n"), aNfeDrive+'A');
- r = RProperty::Set(
- KNfeUID,
- NFE_KEY(aNfeDrive, KNfeToThreadKey),
- ENfeEncryptDisk);
- test.Printf(_L("Encrypting drive %c, r %d\n"), aNfeDrive+'A', r);
- test (r == KErrNone);
-
- // wait for ack
- User::WaitForRequest( status );
- r = status.Int();
- test.Printf(_L("cmd status %d"), r);
- test (r == KErrNone);
- }
-
-void DecryptDrive(TInt aNfeDrive)
- {
- // subscribe to cmd acknowledgement property - KNfeToUiKey
- RProperty propToUi;
- test.Printf(_L("Attaching ToUi property"));
- TInt r = propToUi.Attach(KNfeUID,NFE_KEY(aNfeDrive,KNfeToUiKey));
- test.Printf(_L("Attaching returned %d"), r);
- if (r != KErrNone)
- return;
-
-
- TRequestStatus status;
- propToUi.Subscribe( status );
-
-
- // Issue command
- test.Printf(_L("Decrypting drive %c...\n"), aNfeDrive+'A');
- r = RProperty::Set(
- KNfeUID,
- NFE_KEY(aNfeDrive, KNfeToThreadKey),
- ENfeDecryptDisk);
- test.Printf(_L("Decrypting drive %c, r %d\n"), aNfeDrive+'A', r);
- test (r == KErrNone);
-
- // wait for ack
- User::WaitForRequest( status );
- r = status.Int();
- test.Printf(_L("cmd status %d"), r);
- test (r == KErrNone);
- }
-
-void WaitForFinish(TInt aNfeDrive, TBool aEncrypt)
- {
- TNfeDiskStatus diskStatus = ENfeCorrupted;
- TInt progress = 0;
-
- TInt r = DriveStatus(aNfeDrive, diskStatus, progress);
- test (r == KErrNone);
-
- // Poll progress status.
- while (diskStatus != (aEncrypt ? ENfeEncrypted : ENfeDecrypted ))
- {
- r = DriveStatus(aNfeDrive, diskStatus, progress);
- test (r == KErrNone);
- test.Printf(_L("Drive %c, r %d progress %3u%% status %S\n"), aNfeDrive+'A', r, progress, DriveStatus((TNfeDiskStatus) diskStatus));
-
-
- if (TheFinaliseDriveFlag && progress > 10)
- {
- TheFinaliseDriveFlag = EFalse;
- RFs fs;
- TInt r = fs.Connect();
- test_KErrNone(r);
-
- r = fs.FinaliseDrive(aNfeDrive, RFs::EFinal_RW);
- test_KErrNone(r);
- return;
- }
-
- User::After( 1000 * 500 );
- }
- test.Printf( _L("\nFinished\n") );
- }
-
-//
-// E32Main
-//
-
-TInt ParseCommandArguments()
- {
- TInt tokenCount = 0;
- TChar driveToTest = 'C';;
-
- TBuf<0x100> cmd;
- User::CommandLine(cmd);
- TLex lex(cmd);
-
- for (TPtrC token=lex.NextToken(); token.Length() != 0;token.Set(lex.NextToken()))
- {
- tokenCount++;
- // Get the drive letter
- if (tokenCount == 1)
- {
- TChar ch = token[0];
- if (ch.IsAlpha())
- {
- if(token.Length() > 0)
- {
- driveToTest=token[0];
- driveToTest.UpperCase();
- }
- }
- RDebug::Print(_L("drive=%C"), (TUint) driveToTest);
- continue;
- }
-
- else if (token.CompareF(_L("-d")) == 0)
- {
- TheEncryptDriveFlag = EFalse;
- }
- else if (token.CompareF(_L("-e")) == 0)
- {
- TheEncryptDriveFlag = ETrue;
- }
- else if (token.CompareF(_L("-f")) == 0)
- {
- TheFinaliseDriveFlag = ETrue;
- }
- else if (token.CompareF(_L("-w")) == 0)
- {
- TheWaitFlag = ETrue;
- }
- else if (token.CompareF(_L("-s")) == 0)
- {
- TheDisplayStatusFlag = ETrue;
- }
- }
-
- return driveToTest;
- }
-
-TInt E32Main()
- {
- test.Title();
- test.Start(_L("NFE tests"));
-
- RFs fs;
-
- TInt r = fs.Connect();
- test_KErrNone(r);
-
- TChar driveToTest = ParseCommandArguments();
-
- TInt drive;
- r = fs.CharToDrive(driveToTest,drive);
- test_KErrNone(r);
-
-
- TVolumeInfo volumeInfo;
- r = fs.Volume(volumeInfo, drive);
- test(r == KErrNone);
-
-
-
- TNfeDiskStatus diskStatus = ENfeCorrupted;
- TInt progress = 0;
-
- r = DriveStatus(drive, diskStatus, progress);
- test.Printf(_L("drive %c diskStatus %S, progress %d r %d\n"), drive+'A', DriveStatus(diskStatus), progress, r);
-
- if (TheDisplayStatusFlag)
- {
- test.Printf(_L("*** press any key ***"));
- test.Getch();
- test.End();
- test.Close();
- return 0;
- }
-
- if (r == KErrNone && diskStatus == ENfeDecrypted && TheEncryptDriveFlag)
- {
- test.Next(_L("Encrypting NFE drive"));
- EncryptDrive(drive);
- r = DriveStatus(drive, diskStatus, progress);
- test.Printf(_L("drive %c diskStatus %S, progress %d r %d\n"), drive+'A', DriveStatus(diskStatus), progress, r);
- }
-
- if (r == KErrNone && diskStatus == ENfeEncrypted && !TheEncryptDriveFlag)
- {
- test.Next(_L("Decrypting NFE drive"));
- DecryptDrive(drive);
- r = DriveStatus(drive, diskStatus, progress);
- test.Printf(_L("drive %c diskStatus %S, progress %d r %d\n"), drive+'A', DriveStatus(diskStatus), progress, r);
- }
-
-
- if (r == KErrNone && TheWaitFlag)
- {
- test.Next(_L("Waiting for finish"));
- WaitForFinish(drive, TheEncryptDriveFlag);
- }
-
-
- for(TInt nfeDrive = FindNfeDrive(0); nfeDrive != KErrNotFound; nfeDrive = FindNfeDrive(++nfeDrive))
- {
- TNfeDeviceInfo deviceInfo;
- DisplayNfeDeviceInfo(nfeDrive, deviceInfo);
- }
-
- fs.Close();
-
- test.End();
- test.Close();
-
- return 0;
- }
-
-