diff -r 000000000000 -r 96e5fb8b040d kerneltest/f32test/fileutils/inc/f32_test_utils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kerneltest/f32test/fileutils/inc/f32_test_utils.h Thu Dec 17 09:24:54 2009 +0200 @@ -0,0 +1,201 @@ +// Copyright (c) 1996-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: +// @file +// various FAT utilities header file +// +// + + + +#ifndef F32_TEST_UTILS_HEADER +#define F32_TEST_UTILS_HEADER + +#include + +namespace F32_Test_Utils +{ + +const TUint32 K1KiloByte = 1<<10; +const TUint32 K1MegaByte = 1<<20; +const TUint32 K1GigaByte = 1<<30; + +const TUint K1uSec = 1; ///< 1 misrosecond in TTimeIntervalMicroSeconds32 +const TUint K1mSec = 1000; ///< 1 millisecond in TTimeIntervalMicroSeconds32 +const TUint K1Sec = 1000*K1mSec; ///< 1 second in TTimeIntervalMicroSeconds32 + +//----------------------------------------------------------------------------- + +void SetConsole(CConsoleBase* apConsole); + +TBool EnablePrintOutput(TBool bEnable); + + +//############################################################################# +//# File System independent functions and classes +//############################################################################# + +TInt PrintDrvInfo(RFs &aFs, TInt aDrive); +TInt MediaRawRead(RFs &aFs, TInt aDrive, TInt64 aMediaPos, TUint32 aLen, TDes8& aData); +TInt MediaRawWrite(RFs &aFs, TInt aDrive, TInt64 aMediaPos, const TDesC8& aData); +TInt FillMedia(RFs &aFs, TInt aDrive, TInt64 aMediaStartPos, TInt64 aMediaEndPos, TUint8 aBytePattern=0); + +TInt CreateCheckableStuffedFile(RFs& aFs, const TDesC& aFileName, TUint64 aSize); +TInt VerifyCheckableFile(RFs& aFs, const TDesC& aFileName); + +TInt CreateEmptyFile(RFs& aFs, const TDesC& aFileName, TUint64 aSize); + +TInt RemountFS(RFs& aFs, TInt aDrive, TTime* apTimeMountStart=NULL); + +TInt FormatDrive(RFs &aFs, TInt aDrive, TBool aQuickFormat); + + +//----------------------------------------------------------------------------- +/** + a file system descriptor. Contains the information about file system. + support for non-primary FS extensions is not implemented yet, it suports primary extensions only +*/ +class TFSDescriptor +{ + public: + TFSDescriptor(); + void Init(); + + TBool operator==(const TFSDescriptor& aRhs) const; + + public: + + TBuf<32> iFsName; ///< file system name. + TBuf<32> iPExtName; ///< primary extension name if it is present. Length == 0 means that there is no primary extension + TBool iDriveSynch;///< ETrue if the drive is synchronous + +}; + +TInt GetFileSystemDescriptor(RFs &aFs, TInt aDrive, TFSDescriptor& aFsDesc); +TInt MountFileSystem(RFs &aFs, TInt aDrive, const TFSDescriptor& aFsDesc); + +//----------------------------------------------------------------------------- + + +/** +Indicates if a number passed in is a power of two +@return ETrue if aVal is a power of 2 +*/ +TBool IsPowerOf2(TUint32 aVal); + +/** +Calculates the log2 of a number + +@param aNum Number to calulate the log two of +@return The log two of the number passed in +*/ +TUint32 Log2(TUint32 aVal); + +//----------------------------------------------------------------------------- + +/** + This is normal implementation that unlike Symbian's doesn't have 2^32 max. bits message length limitation. +*/ +class TMD5 +{ + public: + + enum {HashSize = 16}; ///< MD5 hash size in bytes + TMD5(); + + void Reset(); + void Update(const TDesC8& aMessage); + TPtrC8 Final(const TDesC8& aMessage); + TPtrC8 Final(); + + private: + + void Md5_process(const TUint8 *data /*[64]*/); + void Md5_finish(); + void Md5_append(const TUint8 *data, TInt nbytes); + + struct TState + { + TUint32 count[2]; ///< message length in bits, lsw first + TUint32 abcd[4]; ///< digest buffer + TUint8 buf[64]; ///< accumulate block + }; + + TState iState; + TUint8 iDigest[HashSize]; +}; + + + + +TBool Is_Lffs(RFs &aFs, TInt aDrive); //-- returns ETrue if "lffs" FS is mounted on this drive +TBool Is_Win32(RFs &aFs, TInt aDrive); //-- returns ETrue if "win32" FS is mounted on this drive (i.e this is emulator's drive c:) +TBool Is_ExFat(RFs &aFs, TInt aDrive); //-- returns ETrue if "exFAT" FS is mounted on this drive +TBool Is_Automounter(RFs &aFs, TInt aDrive); //-- returns ETrue if "Automounter" FS is mounted on this drive + + +TBool Is_Fat(RFs &aFs, TInt aDrive); //-- returns ETrue if "FAT" FS (FAT12/16/32) is mounted on this drive + +TBool Is_Fat32(RFs &aFs, TInt aDrive); //-- returns ETrue if "FAT" FS is mounted on this drive and it is FAT32 type +TBool Is_Fat16(RFs &aFs, TInt aDrive); //-- returns ETrue if "FAT" FS is mounted on this drive and it is FAT16 type +TBool Is_Fat12(RFs &aFs, TInt aDrive); //-- returns ETrue if "FAT" FS is mounted on this drive and it is FAT12 type + + + +//############################################################################# +//# some private helper functions +//############################################################################# +void DoPrintf(TRefByValue aFmt,...); +void DoMediaRawReadL(RFs &aFs, TInt aDrive, TInt64 aMediaPos, TUint32 aLen, TDes8& aData); +void DoMediaRawWriteL(RFs &aFs, TInt aDrive, TInt64 aMediaPos, const TDesC8& aData); + + + +}//F32_Test_Utils + + +#endif //F32_TEST_UTILS_HEADER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +