--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/userlibandfileserver/fileserver/sfat/inc/fat_table.h Thu Dec 17 09:24:54 2009 +0200
@@ -0,0 +1,140 @@
+// Copyright (c) 1998-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:
+// f32\sfat\inc\fat_table.h
+// FAT12/16 File Allocation Table classes definitions
+//
+//
+
+/**
+ @file
+ @internalTechnology
+*/
+
+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+//!!
+//!! WARNING!! DO NOT edit this file !! '\sfat' component is obsolete and is not being used. '\sfat32'replaces it
+//!!
+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+
+
+#ifndef FAT_TABLE_H
+#define FAT_TABLE_H
+
+
+//---------------------------------------------------------------------------------------------------------------------------------------
+
+/**
+ Fat table used for all media except RAM, manages the Fat table for all cluster requests.
+*/
+class CAtaFatTable : public CFatTable
+ {
+public:
+ static CAtaFatTable* NewL(CFatMountCB& aOwner);
+
+ //-- overrides from the base class
+ void FlushL();
+ void Dismount(TBool aDiscardDirtyData);
+ void ReMountL();
+ void InvalidateCacheL(TInt64 aPos, TUint32 aLength);
+ void InvalidateCacheL();
+
+ TUint32 ReadL(TUint32 aFatIndex) const;
+ void WriteL(TUint32 aFatIndex, TUint32 aValue);
+
+ TInt64 DataPositionInBytes(TUint32 aCluster) const;
+
+private:
+ CAtaFatTable(CFatMountCB& aOwner);
+ void InitializeL();
+ void CreateCacheL();
+
+private:
+ CFatCacheBase* iCache; ///< FAT cache, fixed or LRU depending on the FAT type
+ };
+
+//---------------------------------------------------------------------------------------------------------------------------------------
+
+/**
+ Fat table used for RAM media, manages the Fat table for all cluster requests.
+ RAM media only supports Fat12/16.
+*/
+class CRamFatTable : public CFatTable
+ {
+public:
+ static CRamFatTable* NewL(CFatMountCB& aOwner);
+
+ void ReMountL();
+ TUint32 ReadL(TUint32 aFatIndex) const;
+ void WriteL(TUint32 aFatIndex, TUint32 aValue);
+ TInt64 DataPositionInBytes(TUint32 aCluster) const;
+ void FreeClusterListL(TUint32 aCluster);
+ TUint32 AllocateSingleClusterL(TUint32 aNearestCluster);
+ void ExtendClusterListL(TUint32 aNumber,TInt& aCluster);
+
+private:
+ CRamFatTable(CFatMountCB& aOwner);
+
+ void InitializeL();
+
+ inline TUint8 *RamDiskBase() const;
+ inline TInt AllocateClusterNumber();
+ inline void WriteFatTable(TInt aFatIndex,TInt aValue);
+ inline void WriteFatTable(TInt aFatIndex,TInt aFatValue,TInt anIndirectionTableValue);
+ inline void ReadIndirectionTable(TUint32& aCluster) const;
+ inline void WriteIndirectionTable(TInt aFatIndex,TInt aValue);
+ inline TUint8* MemCopy(TAny* aTrg,const TAny* aSrc,TInt aLength);
+ inline TUint8* MemCopyFillZ(TAny* aTrg, TAny* aSrc, TInt aLength);
+ inline void ZeroFillCluster(TInt aCluster);
+
+ void UpdateIndirectionTable(TUint32 aStartCluster,TUint32 anEndCluster,TInt aNum);
+
+protected:
+
+ TInt iFatTablePos; ///< Current position in the fat table
+ TInt iIndirectionTablePos; ///< Current position in indirection table, second fat used for this
+ TUint8* iRamDiskBase; ///< Pointer to the Ram disk base
+ };
+
+
+
+//---------------------------------------------------------------------------------------------------------------------------------
+
+
+#endif //FAT_TABLE_H
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+