kerneltest/e32test/mediaext/nfe.h
author hgs
Wed, 22 Sep 2010 10:53:45 +0100
changeset 271 dc268b18d709
parent 123 fc55edbf3919
permissions -rw-r--r--
201037_07
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
123
fc55edbf3919 201015_11
hgs
parents:
diff changeset
     1
// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
fc55edbf3919 201015_11
hgs
parents:
diff changeset
     2
// All rights reserved.
fc55edbf3919 201015_11
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
fc55edbf3919 201015_11
hgs
parents:
diff changeset
     4
// under the terms of the License "Eclipse Public License v1.0"
fc55edbf3919 201015_11
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
fc55edbf3919 201015_11
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
fc55edbf3919 201015_11
hgs
parents:
diff changeset
     7
//
fc55edbf3919 201015_11
hgs
parents:
diff changeset
     8
// Initial Contributors:
fc55edbf3919 201015_11
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    10
//
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    11
// Contributors:
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    12
//
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    13
// Description:
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    14
// e32test\mediext\nfe.h
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    15
// 
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    16
//
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    17
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    18
#ifndef __NFE_H__
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    19
#define __NFE_H__
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    20
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    21
#include <d32locd.h>
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    22
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    23
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    24
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    25
// The following is stolen from the genuine NDE driver interface from nfe_interface.h
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    26
// >>>>>nfe_interface.h
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    27
enum TNfeCommands
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    28
    {
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    29
    ENfeDiskStatus   = 0, // No longer used, preserved for SC/BC.
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    30
    ENfeEncryptDisk  = 1,
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    31
    ENfeDecryptDisk  = 2,
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    32
    ENfeWipeDisk     = 3,
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    33
    // Debug commands below, enabled only in RnD compiled extension
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    34
    ENfePause        = 128,
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    35
    ENfeContinue     = 129,
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    36
    };
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    37
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    38
enum TNfeDiskStatus
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    39
    {
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    40
    ENfeUnmounted  = 0,
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    41
    ENfeDecrypted  = 8,
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    42
    ENfeDecrypting = 9,
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    43
    ENfeEncrypted  = 10,
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    44
    ENfeEncrypting = 11,
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    45
    ENfeWiping     = 12,
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    46
    ENfeCorrupted  = 13,
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    47
    };
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    48
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    49
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    50
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    51
// The keys under the KNfeUID category are generated by combining the constants
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    52
// below with drive number by using the NFE_KEY macro below.
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    53
const TUint KNfeToThreadKey     = 1;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    54
const TUint KNfeToUiKey         = 2;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    55
const TUint KNfeToExtKey        = 3; // No longer used, preserved for SC/BC.
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    56
const TUint KNfeProgressToUiKey = 4;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    57
const TUint KNfeStatusToUiKey   = 5; // Replaces ENfeDiskStatus command.
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    58
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    59
//- Macros ------------------------------------------------------------------
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    60
// Calculates pub&sub key for given drive and id. Top 8 bits are used for the
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    61
// drives. Bottom 8 bits are used for the ids. The rest of the bits are
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    62
// reserved and use zero value. The key layout:
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    63
//          dddddddd0000000000000000kkkkkkkk
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    64
//          ^bit 31                        ^bit 0
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    65
#define NFE_KEY(drive, id) (((drive) << 24) | (0xFF & (id)))
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    66
// <<<<nfe_interface.h 
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    67
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    68
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    69
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    70
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    71
// copy of TPartitionEntry from locmedia.h
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    72
#ifndef __KERNEL_MODE__
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    73
class TPartitionEntry
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    74
	{
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    75
public:
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    76
	Int64 iPartitionBaseAddr;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    77
	Int64 iPartitionLen;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    78
	TUint16 iBootIndicator;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    79
	TUint16 iPartitionType;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    80
	};
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    81
#endif
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    82
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    83
enum
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    84
	{
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    85
	EQueryNfeDeviceInfo = RLocalDrive::EQuerySymbianNfeTestFirst+0,
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    86
	};
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    87
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    88
class TNfeDriveInfo
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    89
	{
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    90
public:
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    91
	inline TBool IsUDADrive() 
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    92
		{return PartitionIsFAT(iEntry.iPartitionType) || PartitionIsFAT32(iEntry.iPartitionType); }
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    93
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    94
#ifdef __KERNEL_MODE__
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    95
	void SetStatus(TNfeDiskStatus aStatus);
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    96
#endif
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    97
	inline TNfeDiskStatus Status() { return iStatus; }
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    98
fc55edbf3919 201015_11
hgs
parents:
diff changeset
    99
private:
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   100
	TNfeDiskStatus iStatus;			// @see TNfeDiskStatus
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   101
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   102
public:
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   103
	TInt iLocalDriveNum;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   104
	TInt iDriveLetter;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   105
	TPartitionEntry iEntry;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   106
	Int64 iCompositeSize;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   107
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   108
	/** 
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   109
	position of first encrypted byte - normally the same as 
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   110
	iEntry.iPartitionBaseAddr unless the MBR has been changed
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   111
	*/
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   112
	TInt64 iEncryptStartPos;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   113
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   114
	/** 
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   115
	position of the last encrypted byte +1 - normally the same as 
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   116
	iEntry.iPartitionBaseAddr+iEntry.iPartitionLen if the drive is fully
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   117
	encrypted
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   118
	*/
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   119
	TInt64 iEncryptEndPos;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   120
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   121
	TInt iReadRequestCount;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   122
	TInt iWriteRequestCount;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   123
	TInt iCodePagingRequesCount;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   124
	TInt iDataPagingReadRequestCount;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   125
	TInt iDataPagingWriteRequestCount;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   126
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   127
	TAny* iStatusToUiProperty;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   128
	TAny* iToUiProperty;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   129
	TAny* iProgressToUiProperty;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   130
	TUint32 iUniqueID;		// FAT volume ID
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   131
	TBool iDriveFinalised;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   132
	};
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   133
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   134
/**
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   135
NFE media details - for testing purposes only
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   136
This is a structure used to communicate NFE-related information
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   137
from the NFE media driver to a test application
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   138
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   139
@internalTechnology
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   140
@prototype
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   141
*/
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   142
class TNfeDeviceInfo
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   143
	{
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   144
public:
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   145
	enum {ENfeMaxPartitionEntries = 2};
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   146
	TNfeDriveInfo iDrives[ENfeMaxPartitionEntries];
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   147
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   148
	TInt iDriveCount;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   149
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   150
	TInt64 iMediaSizeInBytes;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   151
	};
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   152
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   153
typedef TPckgBuf<TNfeDeviceInfo> TNfeDeviceInfoBuf;
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   154
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   155
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   156
// Publish & Subscribe is used to initiate an encryption pass - to emulate the behaviour of the genuine NFE UI & driver
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   157
//const TUid KNfeUID = TUid::Uid(0xA000E7C5);	// UID of NFE test mdia driver (D_NFE.MMP)
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   158
const TUid KNfeUID = {0x100039e3};
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   159
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   160
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   161
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   162
fc55edbf3919 201015_11
hgs
parents:
diff changeset
   163
#endif