Fix for bug 2283 (RVCT 4.0 support is missing from PDK 3.0.h)
Have multiple extension sections in the bld.inf, one for each version
of the compiler. The RVCT version building the tools will build the
runtime libraries for its version, but make sure we extract all the other
versions from zip archives. Also add the archive for RVCT4.
// Copyright (c) 2005-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:
// f32test\ext\t_testext.h
//
//
#ifndef __TEST_EXT_H__
#define __TEST_EXT_H__
#include <f32fsys.h>
//#define TESTEXT_DEBUG
#if (defined(_DEBUG) || defined(_DEBUG_RELEASE)) && defined(TESTEXT_DEBUG)
#define __PRINT(t) {RDebug::Print(t);}
#define __PRINT1(t,a) {RDebug::Print(t,a);}
#define __PRINT2(t,a,b) {RDebug::Print(t,a,b);}
#else
#define __PRINT(t)
#define __PRINT1(t,a)
#define __PRINT2(t,a,b)
#endif
#define EExtCustom (KMaxTInt/2)
/**
This is the test proxy drive extension base class.
Test proxy drives of specific file system should derive from this base class.
@internalTechnology
*/
class CTestProxyDrive : public CBaseExtProxyDrive
{
public:
enum TTestCmd
{
ESetEvent = EExtCustom,
EMark,
EUnmark,
EUnmarkAll,
EIsMarked,
EDiskSize,
ETestCmdEnd = EExtCustom + 100
};
enum TBadSectorEvent
{
ENone, ENext, EDeterministic, ERandom
};
protected:
CTestProxyDrive(CProxyDrive* aProxyDrive, CMountCB* aMount);
virtual ~CTestProxyDrive();
public:
// Derived functions from CBaseExtProxyDrive
// Commented out because they are not changed. Sub-classes reimplement them
// if interested.
// virtual TInt Initialise();
// virtual TInt Dismounted();
// virtual TInt Enlarge(TInt aLength);
// virtual TInt ReduceSize(TInt aPos, TInt aLength);
// virtual TInt Read(TInt64 aPos,TInt aLength,const TAny* aTrg,TInt aThreadHandle,TInt aOffset,TInt aFlags);
// virtual TInt Read(TInt64 aPos,TInt aLength,const TAny* aTrg,TInt aThreadHandle,TInt anOffset);
// virtual TInt Read(TInt64 aPos,TInt aLength,TDes8& aTrg);
// virtual TInt Write(TInt64 aPos,TInt aLength,const TAny* aSrc,TInt aThreadHandle,TInt aOffset,TInt aFlags);
// virtual TInt Write(TInt64 aPos,TInt aLength,const TAny* aSrc,TInt aThreadHandle,TInt anOffset);
// virtual TInt Write(TInt64 aPos,const TDesC8& aSrc);
// virtual TInt Caps(TDes8& anInfo);
// virtual TInt Format(TFormatInfo& anInfo);
// virtual TInt Format(TInt64 aPos,TInt aLength);
// virtual TInt SetMountInfo(const TDesC8* aMountInfo,TInt aMountInfoThreadHandle=KCurrentThreadHandle);
// virtual TInt ForceRemount(TUint aFlags=0);
// virtual TInt Unlock(TMediaPassword &aPassword, TBool aStorePassword);
// virtual TInt Lock(TMediaPassword &aOldPassword, TMediaPassword &aNewPassword, TBool aStorePassword);
// virtual TInt Clear(TMediaPassword &aPassword);
// virtual TInt ErasePassword();
virtual TInt ControlIO(const RMessagePtr2& aMessage,TInt aCommand,TAny* aParam1,TAny* aParam2);
virtual TInt GetLastErrorInfo(TDes8& aErrorInfo);
protected:
/**
Return a pointer to a specified interface extension - to allow future extension of this class without breaking
binary compatibility.
@param aInterfaceId Interface identifier of the interface to be retrieved.
@param aInterface A reference to a pointer that retrieves the specified interface.
@param aInput An arbitrary input argument.
@return KErrNone If the interface is supported, KErrNotSupported otherwise.
*/
// virtual TInt GetInterface(TInt aInterfaceId,TAny*& aInterface,TAny* aInput);
protected:
void InitL();
TInt SetEvent(TInt aType, TInt aValue);
TInt Mark(TInt aSector);
TInt Unmark(TInt aSector);
TInt UnmarkAll();
TBool IsMarked(TInt aSector) const;
TBool CheckEvent(TInt64 aPos, TInt aLength);
virtual void DoInitL() = 0;
virtual TBool DoCheckEvent(TInt64 aPos, TInt aLength) = 0;
virtual TInt DoControlIO(const RMessagePtr2& aMessage,TInt aCommand,TAny* aParam1,TAny* aParam2) = 0;
protected:
CMountCB* iMount; // in CProxyDrive
TUint8* iMap;
TInt iTotalSectors;
TBool iMountInitialised;
TInt iEventType;
TInt iCount;
TInt iSuccessBytes;
TErrorInfo::TReasonCode iLastErrorReason;
};
#endif