kerneltest/f32test/ext/t_bitproxydrive.cpp
author hgs
Wed, 23 Jun 2010 12:52:28 +0100
changeset 176 af6ec97d9189
permissions -rw-r--r--
201023_13
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
176
af6ec97d9189 201023_13
hgs
parents:
diff changeset
     1
// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
af6ec97d9189 201023_13
hgs
parents:
diff changeset
     2
// All rights reserved.
af6ec97d9189 201023_13
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
af6ec97d9189 201023_13
hgs
parents:
diff changeset
     4
// under the terms of the License "Eclipse Public License v1.0"
af6ec97d9189 201023_13
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
af6ec97d9189 201023_13
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
af6ec97d9189 201023_13
hgs
parents:
diff changeset
     7
//
af6ec97d9189 201023_13
hgs
parents:
diff changeset
     8
// Initial Contributors:
af6ec97d9189 201023_13
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    10
//
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    11
// Contributors:
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    12
//
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    13
// Description:
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    14
// f32test\ext\bitproxydrive.cpp
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    15
// extension to do XOR on every byte on 32 byte boundary read or written to media subsystem in same thread
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    16
// therefore RFile::Read/Write does not have this operation carried out on it
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    17
// 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    18
//
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    19
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    20
#include <f32fsys.h>
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    21
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    22
class CBitExtProxyDrive : public CExtProxyDrive
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    23
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    24
public:
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    25
	CBitExtProxyDrive(CMountCB* aMount, CExtProxyDriveFactory* aDevice);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    26
	~CBitExtProxyDrive();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    27
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    28
public:
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    29
	virtual TInt Initialise();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    30
	virtual TInt Dismounted();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    31
	virtual TInt Enlarge(TInt aLength);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    32
	virtual TInt ReduceSize(TInt aPos, TInt aLength);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    33
	virtual TInt Read(TInt64 aPos, TInt aLength, const TAny* aTrg, TInt aThreadHandle, TInt aOffset, TInt aFlags);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    34
	virtual TInt Read(TInt64 aPos, TInt aLength, const TAny* aTrg, TInt aThreadHandle, TInt anOffset);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    35
	virtual TInt Read(TInt64 aPos, TInt aLength, TDes8& aTrg);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    36
	virtual TInt Write(TInt64 aPos, TInt aLength,const TAny* aSrc, TInt aThreadHandle, TInt aOffset, TInt aFlags);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    37
	virtual TInt Write(TInt64 aPos, TInt aLength, const TAny* aSrc, TInt aThreadHandle, TInt anOffset);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    38
	virtual TInt Write(TInt64 aPos,const TDesC8& aSrc);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    39
	virtual TInt Caps(TDes8& anInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    40
	virtual TInt Format(TFormatInfo& aInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    41
	virtual TInt Format(TInt64 aPos,TInt aLength);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    42
	virtual TInt SetInfo(const RMessage2 &msg, TAny* aMessageParam2, TAny* aMessageParam3);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    43
	virtual TInt NotifyChange(TDes8 &aChanged,TRequestStatus* aStatus);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    44
	virtual void NotifyChangeCancel();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    45
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    46
    TInt SetMountInfo(const TDesC8* aMountInfo,TInt aMountInfoThreadHandle=KCurrentThreadHandle);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    47
    TInt ForceRemount(TUint aFlags = 0);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    48
    TInt Unlock(TMediaPassword& aPassword, TBool aStorePassword);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    49
    TInt Lock(TMediaPassword& aOldPassword, TMediaPassword& aNewPassword, TBool aStorePassword);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    50
    TInt Clear(TMediaPassword& aPassword);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    51
    TInt ErasePassword();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    52
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    53
	TInt GetInterface(TInt aInterfaceId,TAny*& aInterface,TAny* aInput);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    54
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    55
private:
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    56
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    57
	TBusLocalDrive iDrive;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    58
	TInt iLocalDriveNumber;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    59
	TBool iChanged;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    60
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    61
	TRequestStatus* iNotifyChangeStatus;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    62
	};
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    63
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    64
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    65
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    66
class CBitProxyDriveFactory : public CExtProxyDriveFactory
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    67
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    68
public:
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    69
	CBitProxyDriveFactory();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    70
	~CBitProxyDriveFactory();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    71
	virtual TInt Install();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    72
	virtual TInt CreateProxyDrive(CProxyDrive*& aMountProxyDrive,CMountCB* aMount);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    73
	};
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    74
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    75
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    76
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    77
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    78
CBitExtProxyDrive::CBitExtProxyDrive(CMountCB* aMount, CExtProxyDriveFactory* aDevice)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    79
:   CExtProxyDrive(aMount,aDevice)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    80
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    81
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    82
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    83
CBitExtProxyDrive::~CBitExtProxyDrive()
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    84
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    85
	iDrive.Disconnect();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    86
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    87
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    88
/**
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    89
Initialise the proxy drive.
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    90
@return system wide error code.
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    91
*/
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    92
TInt CBitExtProxyDrive::Initialise()
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    93
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    94
	TInt r = KErrNone;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    95
    return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    96
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    97
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    98
TInt CBitExtProxyDrive::SetInfo(const RMessage2 &msg, TAny* /*aMessageParam2*/, TAny* /*aMessageParam3*/)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
    99
    {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   100
	TInt r = KErrNone;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   101
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   102
    TPckg<TInt> infoPckg(iLocalDriveNumber);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   103
	TRAP(r, msg.ReadL(2, infoPckg));
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   104
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   105
	if(r != KErrNone)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   106
		{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   107
		RDebug::Print(_L("CBitExtProxyDrive::SetInfo(): cant read from the RMessage %d"), r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   108
		return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   109
		}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   110
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   111
	r = iDrive.Connect(iLocalDriveNumber, iChanged);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   112
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   113
	if(r != KErrNone)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   114
		{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   115
		RDebug::Print(_L("CBitExtProxyDrive::SetInfo(): failed to connect to drive %d, r %d"), iDriveNumber, r);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   116
		return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   117
		}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   118
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   119
    return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   120
    }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   121
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   122
TInt CBitExtProxyDrive::Dismounted()
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   123
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   124
	TInt r = KErrNone;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   125
    return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   126
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   127
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   128
TInt CBitExtProxyDrive::Enlarge(TInt /*aLength*/)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   129
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   130
	return KErrNotSupported;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   131
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   132
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   133
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   134
TInt CBitExtProxyDrive::ReduceSize(TInt /*aPos*/, TInt /*aLength*/)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   135
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   136
	return KErrNotSupported;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   137
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   138
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   139
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   140
TInt CBitExtProxyDrive::Read(TInt64 aPos, TInt aLength, const TAny* aTrg, TInt aThreadHandle, TInt aOffset)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   141
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   142
	TInt r = iDrive.Read(aPos, aLength, aTrg, aThreadHandle, aOffset);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   143
    return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   144
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   145
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   146
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   147
TInt CBitExtProxyDrive::Read(TInt64 aPos, TInt aLength, const TAny* aTrg, TInt aThreadHandle, TInt aOffset, TInt aFlags)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   148
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   149
	TInt r = iDrive.Read(aPos, aLength, aTrg, aThreadHandle, aOffset, aFlags);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   150
    return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   151
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   152
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   153
TInt CBitExtProxyDrive::Read(TInt64 aPos, TInt aLength, TDes8& aTrg)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   154
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   155
	TInt r = iDrive.Read(aPos, aLength, aTrg);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   156
    return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   157
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   158
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   159
TInt CBitExtProxyDrive::Write(TInt64 aPos, TInt aLength, const TAny* aSrc, TInt aThreadHandle, TInt aOffset)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   160
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   161
	TInt r = iDrive.Write(aPos, aLength, aSrc, aThreadHandle, aOffset);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   162
    return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   163
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   164
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   165
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   166
TInt CBitExtProxyDrive::Write(TInt64 aPos, TInt aLength, const TAny* aSrc, TInt aThreadHandle, TInt aOffset, TInt aFlags)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   167
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   168
	TInt r = iDrive.Write(aPos, aLength, aSrc, aThreadHandle, aOffset, aFlags);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   169
    return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   170
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   171
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   172
TInt CBitExtProxyDrive::Write(TInt64 aPos,const TDesC8& aSrc)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   173
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   174
	TInt r = iDrive.Write(aPos, aSrc);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   175
    return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   176
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   177
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   178
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   179
TInt CBitExtProxyDrive::Caps(TDes8& anInfo)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   180
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   181
	TLocalDriveCapsV6Buf caps;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   182
    caps.FillZ();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   183
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   184
//    TLocalDriveCapsV6& c = caps();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   185
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   186
	TInt r = iDrive.Caps(caps);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   187
	caps.SetLength( Min(caps.Length(), anInfo.MaxLength()) );
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   188
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   189
	anInfo.Copy(caps);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   190
    
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   191
	return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   192
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   193
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   194
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   195
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   196
TInt CBitExtProxyDrive::Format(TInt64 aPos, TInt aLength)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   197
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   198
	TInt r = iDrive.Format(aPos, aLength);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   199
    return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   200
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   201
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   202
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   203
TInt CBitExtProxyDrive::Format(TFormatInfo& aInfo)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   204
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   205
	TInt r = iDrive.Format(aInfo);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   206
    return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   207
    }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   208
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   209
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   210
TInt CBitExtProxyDrive::NotifyChange(TDes8& /*aChanged*/, TRequestStatus* aStatus)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   211
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   212
//	iDrive.NotifyChange(aStatus);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   213
	iNotifyChangeStatus = aStatus;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   214
	return KErrNone;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   215
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   216
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   217
void CBitExtProxyDrive::NotifyChangeCancel()
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   218
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   219
//	iDrive.NotifyChangeCancel();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   220
	if (iNotifyChangeStatus)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   221
		User::RequestComplete(iNotifyChangeStatus, KErrCancel);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   222
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   223
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   224
TInt CBitExtProxyDrive::SetMountInfo(const TDesC8* aMountInfo,TInt aMountInfoThreadHandle)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   225
    {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   226
	TInt r = iDrive.SetMountInfo(aMountInfo, aMountInfoThreadHandle);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   227
    return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   228
    }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   229
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   230
TInt CBitExtProxyDrive::ForceRemount(TUint aFlags)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   231
    {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   232
	TInt r = iDrive.ForceRemount(aFlags);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   233
    return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   234
    }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   235
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   236
TInt CBitExtProxyDrive::Unlock(TMediaPassword& aPassword, TBool aStorePassword)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   237
    {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   238
	TInt r = iDrive.Unlock(aPassword, aStorePassword);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   239
    return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   240
    }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   241
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   242
TInt CBitExtProxyDrive::Lock(TMediaPassword& aOldPassword, TMediaPassword& aNewPassword, TBool aStorePassword)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   243
    {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   244
	TInt r = iDrive.SetPassword(aOldPassword, aNewPassword, aStorePassword);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   245
    return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   246
    }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   247
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   248
TInt CBitExtProxyDrive::Clear(TMediaPassword& aPassword)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   249
    {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   250
	TInt r = iDrive.Clear(aPassword);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   251
    return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   252
    }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   253
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   254
TInt CBitExtProxyDrive::ErasePassword()
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   255
    {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   256
	TInt r = iDrive.ErasePassword();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   257
    return r;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   258
    }
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   259
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   260
TInt CBitExtProxyDrive::GetInterface(TInt aInterfaceId, TAny*& /*aInterface*/, TAny* /*aInput*/)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   261
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   262
	switch(aInterfaceId)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   263
		{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   264
		case ELocalBufferSupport:
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   265
			return KErrNone;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   266
		default:
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   267
			return KErrNotSupported;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   268
		}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   269
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   270
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   271
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   272
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   273
CBitProxyDriveFactory::CBitProxyDriveFactory()
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   274
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   275
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   276
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   277
CBitProxyDriveFactory::~CBitProxyDriveFactory()
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   278
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   279
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   280
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   281
TInt CBitProxyDriveFactory::Install()
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   282
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   283
	_LIT(KProxyName,"bitproxydrive");
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   284
	return SetName(&KProxyName);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   285
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   286
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   287
TInt CBitProxyDriveFactory::CreateProxyDrive(CProxyDrive*& aMountProxyDrive,CMountCB* aMount)
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   288
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   289
    aMountProxyDrive = new CBitExtProxyDrive(aMount,this);
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   290
    return (aMountProxyDrive==NULL) ? KErrNoMemory : KErrNone;
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   291
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   292
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   293
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   294
extern "C" {
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   295
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   296
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   297
/* 
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   298
Create the proxy drive factory object for the usbhost mass storage proxy
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   299
*/
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   300
EXPORT_C CExtProxyDriveFactory* CreateFileSystem()
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   301
	{
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   302
	return new CBitProxyDriveFactory();
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   303
	}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   304
}
af6ec97d9189 201023_13
hgs
parents:
diff changeset
   305