userlibandfileserver/fileserver/smassstorage/inc/tfatbootsector.inl
author Tom Cosgrove <tom.cosgrove@nokia.com>
Fri, 28 May 2010 16:29:07 +0100
changeset 30 8aab599e3476
parent 0 a41df078684a
permissions -rw-r--r--
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) 2004-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:
// Inline methods of TFatBootSector class.
// 
//

/**
 @file
 @internalTechnology
 
 Returns Sectors in Fat table for 32 bit volume
 
 @return iFatSectors32
*/
inline TUint32 TFatBootSector::FatSectors32() const	
	{return iFatSectors32;}
/**
Fat flags

@return iFATFlags
*/
inline TUint16 TFatBootSector::FATFlags() const		
	{return iFATFlags;}
/**
Version number of the file system

@return iVersionNumber
*/
inline TUint16 TFatBootSector::VersionNumber() const		
	{return iVersionNumber;}
/**
Cluster number of the root directory

@return iRootClusterNum
*/
inline TUint32 TFatBootSector::RootClusterNum() const	
	{return iRootClusterNum;}
/**
Sector number containing the FSIInfo structure

@return iFSInfoSectorNum
*/
inline TUint16 TFatBootSector::FSInfoSectorNum() const
	{return iFSInfoSectorNum;}
/**
Backup boot sector

@return iBkBootRecSector
*/
inline TUint16 TFatBootSector::BkBootRecSector() const
	{return iBkBootRecSector;}
/**
Sets the number of sectors in Fat table for 32 bit volume

@param aFatSectors32
*/
inline void TFatBootSector::SetFatSectors32(TUint32	aFatSectors32)
	{iFatSectors32 = aFatSectors32;}
/**
Sets the Fat flags

@param aFATFlags
*/
inline void TFatBootSector::SetFATFlags(TUint16 aFATFlags)
	{iFATFlags = aFATFlags;}
/**
Sets the version number of the file system

@param aVersionNumber
*/
inline void TFatBootSector::SetVersionNumber(TUint16 aVersionNumber)
	{iVersionNumber = aVersionNumber;}
/**
Sets the cluster number of the root directory

@param aRootClusterNum
*/
inline void TFatBootSector::SetRootClusterNum(TUint32 aRootClusterNum)	
	{iRootClusterNum = aRootClusterNum;}
/**
Set the sector number containing the FSIInfo structure

@param aFSInfoSectorNum
*/
inline void TFatBootSector::SetFSInfoSectorNum(TUint16 aFSInfoSectorNum)
	{iFSInfoSectorNum = aFSInfoSectorNum;}
/**
Set the backup boot sector

@param aBkBootRecSector
*/
inline void TFatBootSector::SetBkBootRecSector(TUint16 aBkBootRecSector)
	{iBkBootRecSector = aBkBootRecSector;}	
/**
Quick test as to whether the volume is Fat32

@return True for Fat32
*/
inline TBool TFatBootSector::Is32BitFat()
	{return(iRootDirEntries==0);}
/**
Returns the vendor ID of the file system that formatted the volume

@return A descriptor containing the vendor ID 
*/
inline const TPtrC8 TFatBootSector::VendorId() const
	{return TPtrC8(iVendorId,KVendorIdSize);}
/**
Return the bytes per sector

@return iBytesPerSector
*/
inline TUint16 TFatBootSector::BytesPerSector() const
	{return iBytesPerSector;}
/**
Returns the sectors per cluster ratio

@return iSectorsPerCluster
*/
inline TInt TFatBootSector::SectorsPerCluster() const
	{return iSectorsPerCluster;}
/**
Returns the number of reserved sectors on the volume

@return iReservedSectors
*/
inline TInt TFatBootSector::ReservedSectors() const
	{return iReservedSectors;}
/**
Returns the number of Fats on the volume

@return iNumberOfFats
*/
inline TInt TFatBootSector::NumberOfFats() const
	{return iNumberOfFats;}
/**
Returns the number of entries allowed in the root directory, specific to Fat12/16, zero for FAT32

@return iRootDirEntries
*/
inline TInt TFatBootSector::RootDirEntries() const
	{return iRootDirEntries;}
/**
Returns the total sectors on the volume, zero for FAT32

@return iTotalSectors
*/
inline TInt TFatBootSector::TotalSectors() const
	{return iTotalSectors;}
/**
Returns the media descriptor

@return iMediaDescriptor
*/
inline TUint8 TFatBootSector::MediaDescriptor() const
	{return iMediaDescriptor;}
/**
Returns sectors used for the Fat table, zero for FAT32

@return iFatSectors
*/
inline TInt TFatBootSector::FatSectors() const
	{return iFatSectors;}
/**
Returns sectors per track

@return iSectorsPerTrack
*/
inline TInt TFatBootSector::SectorsPerTrack() const
	{return iSectorsPerTrack;}
/**
Returns the number of heads 

@return iNumberOfHeads
*/
inline TInt TFatBootSector::NumberOfHeads() const
	{return iNumberOfHeads;}
/**
Returns the number of hidden sectors in the volume

@return iHiddenSectors
*/
inline TInt TFatBootSector::HiddenSectors() const
	{return iHiddenSectors;}
/**
Returns total sectors in the volume, Used if totalSectors > 65535

@return iHugeSectors
*/
inline TInt TFatBootSector::HugeSectors() const
	{return iHugeSectors;}
/**
Returns the physical drive number, not used in Symbian OS

@return iPhysicalDriveNumber
*/
inline TInt TFatBootSector::PhysicalDriveNumber() const
	{return iPhysicalDriveNumber;}
/**
Returns the extended boot signiture

@return iExtendedBootSignature
*/
inline TInt TFatBootSector::ExtendedBootSignature() const
	{return iExtendedBootSignature;}
/**
Returns the unique volume ID

@return iUniqueID
*/
inline TUint32 TFatBootSector::UniqueID() const
	{return iUniqueID;}
/**
Returns the volume's label

@return A descriptor containing the volume label
*/
inline const TPtrC8 TFatBootSector::VolumeLabel() const
	{return TPtrC8(iVolumeLabel,KVolumeLabelSize);}
/**
Returns the file system type

@return A descriptor containing the file system type
*/
inline const TPtrC8 TFatBootSector::FileSysType() const
	{return TPtrC8(iFileSysType,KFileSysTypeSize);}
/**
Returns the boot sector signiture

@return KBootSectorSignature
*/
inline TInt TFatBootSector::BootSectorSignature() const
	{return KBootSectorSignature;}
/**
Set the jump instruction 
*/
inline void TFatBootSector::SetJumpInstruction()
	{iJumpInstruction[0]=0xE9;iJumpInstruction[2]=0x90;}
/**
Set the vendor ID of the file system that formatted the volume

@param aDes Descriptor containing the Vendor ID
*/
inline void TFatBootSector::SetVendorID(const TDesC8& aDes)
	{
	__ASSERT_DEBUG(aDes.Length()<=KVendorIdSize,User::Panic(_L("FATFILESYS"),1));
	TPtr8 buf(iVendorId,KVendorIdSize);
	buf=aDes;
	}
/**
Sets the bytes per sector 

@param aBytesPerSector Number of bytes per sector
*/
inline void TFatBootSector::SetBytesPerSector(TInt aBytesPerSector)
	{
	__ASSERT_DEBUG(!(aBytesPerSector&~KMaxTUint16),User::Panic(_L("FATFILESYS"),1));
	iBytesPerSector=(TUint16)aBytesPerSector;
	}
/**
Set the sectors per cluster ratio

@param aSectorsPerCluster Number of sectors per cluster
*/
inline void TFatBootSector::SetSectorsPerCluster(TInt aSectorsPerCluster)
	{
	__ASSERT_DEBUG(!(aSectorsPerCluster&~KMaxTUint8),User::Panic(_L("FATFILESYS"),1));
	iSectorsPerCluster=(TUint8)aSectorsPerCluster;
	}
/**
Sets the number of reserved sectors on the volume

@param aReservedSectors Number of reserved sectors
*/
inline void TFatBootSector::SetReservedSectors(TInt aReservedSectors)
	{
	__ASSERT_DEBUG(!(aReservedSectors&~KMaxTUint16),User::Panic(_L("FATFILESYS"),1));
	iReservedSectors=(TUint16)aReservedSectors;
	}
/**
Sets the number of Fats on the volume

@param aNumberOfFats Number of fats
*/
inline void TFatBootSector::SetNumberOfFats(TInt aNumberOfFats)
	{
	__ASSERT_DEBUG(!(aNumberOfFats&~KMaxTUint8),User::Panic(_L("FATFILESYS"),1));
	iNumberOfFats=(TUint8)aNumberOfFats;
	}
/**
Number of entries allowed in the root directory, specific to Fat12/16, zero for FAT32

@param aRootDirEntries
*/
inline void TFatBootSector::SetRootDirEntries(TInt aRootDirEntries)
	{
	__ASSERT_DEBUG(!(aRootDirEntries&~KMaxTUint16),User::Panic(_L("FATFILESYS"),1));
	iRootDirEntries=(TUint16)aRootDirEntries;
	}
/**
Total sectors on the volume, zero for FAT32

@param aTotalSectors Total number of sectors
*/
inline void TFatBootSector::SetTotalSectors(TInt aTotalSectors)
	{
	__ASSERT_DEBUG(!(aTotalSectors&~KMaxTUint16),User::Panic(_L("FATFILESYS"),1));
	iTotalSectors=(TUint16)aTotalSectors;
	}
/**
Set the media descriptor

@param aMediaDescriptor
*/
inline void TFatBootSector::SetMediaDescriptor(TUint8 aMediaDescriptor)
	{iMediaDescriptor=aMediaDescriptor;}
/**
Sectors used for the Fat table, zero for FAT32

@param aFatSectors Number of Fat sectors
*/
inline void TFatBootSector::SetFatSectors(TInt aFatSectors)
	{
	__ASSERT_DEBUG(!(aFatSectors&~KMaxTUint16),User::Panic(_L("FATFILESYS"),1));
	iFatSectors=(TUint16)aFatSectors;
	}
/**
Set the sectors per track

@param aSectorsPerTrack Number of sectors per track
*/
inline void TFatBootSector::SetSectorsPerTrack(TInt aSectorsPerTrack)
	{
	__ASSERT_DEBUG(!(aSectorsPerTrack&~KMaxTUint16),User::Panic(_L("FATFILESYS"),1));
	iSectorsPerTrack=(TUint16)aSectorsPerTrack;
	}
/**
Set the number of heads

@param aNumberOfHeads Number of heads
*/
inline void TFatBootSector::SetNumberOfHeads(TInt aNumberOfHeads)
	{
	__ASSERT_DEBUG(!(aNumberOfHeads&~KMaxTUint16),User::Panic(_L("FATFILESYS"),1));
	iNumberOfHeads=(TUint16)aNumberOfHeads;
	}
/**
Set the number of hidden sectors in the volume

@param aHiddenSectors Number of hidden sectors
*/
inline void TFatBootSector::SetHiddenSectors(TUint32 aHiddenSectors)
	{
	iHiddenSectors=(TUint32)(aHiddenSectors);
	}
/**
Set the total sectors in the volume, Used if totalSectors > 65535

@param aHugeSectors
*/
inline void TFatBootSector::SetHugeSectors(TUint32 aHugeSectors)
	{iHugeSectors=aHugeSectors;}
/**
Physical drive number, not used in Symbian OS

@param aPhysicalDriveNumber Physical drive number 
*/
inline void TFatBootSector::SetPhysicalDriveNumber(TInt aPhysicalDriveNumber)
	{
	__ASSERT_DEBUG(!(aPhysicalDriveNumber&~KMaxTUint8),User::Panic(_L("FATFILESYS"),1));
	iPhysicalDriveNumber=(TUint8)aPhysicalDriveNumber;
	}
/**
Set the reserved byte value

@param aReservedByte Value for reserved byte
*/
inline void TFatBootSector::SetReservedByte(TUint8 aReservedByte)
	{iReserved=aReservedByte;}
/**
Set the extended boot signiture

@param anExtendedBootSignature The extended boot signiture
*/
inline void TFatBootSector::SetExtendedBootSignature(TInt anExtendedBootSignature)
	{
	__ASSERT_DEBUG(!(anExtendedBootSignature&~KMaxTUint8),User::Panic(_L("FATFILESYS"),1));
	iExtendedBootSignature=(TUint8)anExtendedBootSignature;
	}
/**
Set the unique volume ID

@param anUniqueID Set the unique ID
*/
inline void TFatBootSector::SetUniqueID(TUint32 anUniqueID)
	{iUniqueID=anUniqueID;}
/**
Set the volume's label

@param aDes A descriptor containg the volume label
*/
inline void TFatBootSector::SetVolumeLabel(const TDesC8& aDes)
	{
	__ASSERT_DEBUG(aDes.Length()<=KVolumeLabelSize,User::Panic(_L("FATFILESYS"),1));
	TPtr8 buf(iVolumeLabel,KVolumeLabelSize);
	buf=aDes;
	}
/**
Set the file system type

@param aDes A descriptor containing the file system type
*/
inline void TFatBootSector::SetFileSysType(const TDesC8& aDes)
	{
	__ASSERT_DEBUG(aDes.Length()<=8,User::Panic(_L("FATFILESYS"),1));
	TPtr8 buf(iFileSysType,8);
	buf=aDes;
	}
/**
Tests if the volume is Fat 16 or not

@return True if the volume is Fat16
*/
inline TBool TFatBootSector::Is16BitFat()
	{return(FileSysType()==_L8("FAT16   "));}
/**
Returns the position of the first sector of the first Fat

@return The first Fat sector's byte position
*/
inline TInt TFatBootSector::FirstFatSectorPos()
	{return(ReservedSectors()*BytesPerSector());}
/**
Returns the start sector number of the root directory

@return Start sector number of the root directory
*/
inline TInt TFatBootSector::RootDirStartSector()
	{return(ReservedSectors()+FatSectors()*NumberOfFats());}
/**
Returns the sector number of the first sector after the root directory 

@return 
*/
inline TInt TFatBootSector::FirstFreeSector()
	{return(RootDirStartSector()+(RootDirEntries()*KSizeOfFatDirEntry+BytesPerSector()-1)/BytesPerSector());}