kerneltest/e32test/mediaext/t_nfe.cpp
branchRCL_3
changeset 294 039a3e647356
parent 268 345b1ca54e88
child 295 5460f47b94ad
--- 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;
-	}
-
-