diff -r 24e4ef208cca -r 3a747a240983 imgtools/imglib/filesystem/source/fat32bootsector.cpp --- a/imgtools/imglib/filesystem/source/fat32bootsector.cpp Wed Jul 14 14:50:01 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,283 +0,0 @@ -/* -* Copyright (c) 2006-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: -* This class represents the boot sector of a FAT32 image. -* This class is derived from basebootsector class which is constitutes -* the common boot sector fields for FAT16 and FAT32 class. -* @internalComponent -* @released -* -*/ - -#include "fat32bootsector.h" - -/** -Constructor of the fat16 boot sector class - -@internalComponent -@released -*/ -TFAT32BootSector::TFAT32BootSector() -{ -} - -/** -Destructor of the fat16 boot sector class - -@internalComponent -@released -*/ -TFAT32BootSector::~TFAT32BootSector() -{ -} -/** -Set the file system type - -@internalComponent -@released -*/ -void TFAT32BootSector::SetFileSysType() -{ - strcpy(reinterpret_cast(iFileSysType),"FAT32 "); -} - - -//Number of entries allowed in the root directory, specific to Fat12/16, zero for FAT32 -void TFAT32BootSector::SetRootDirEntries() -{ - iRootDirEntries = KFat32RootDirEntries;; -} - - -//Sets the number of reserved sectors on the volume -void TFAT32BootSector::SetReservedSectors() -{ - iReservedSectors = KDefaultFat32ReservedSectors; -} - -/** -Set the sectors per cluster ratio - -@internalComponent -@released - -@param aPartitionSize partition size in bytes -*/ -void TFAT32BootSector::ComputeSectorsPerCluster(Long64 aPartitionSize) -{ - if (aPartitionSize > K32GB) - { - iSectorsPerCluster = K64SectorsPerCluster; - } - else if(aPartitionSize > K16GB) - { - iSectorsPerCluster = K32SectorsPerCluster; - } - else if(aPartitionSize > K8GB) - { - iSectorsPerCluster = K16SectorsPerCluster; - } - else if ( aPartitionSize > K260MB) - { - iSectorsPerCluster = K8SectorsPerCluster; - } - else - { - iSectorsPerCluster = K1SectorsPerCluster; - } -} - -/** -Set the sectors per cluster ratio - - -To refer this mathematical computation, Please see: -Microsoft Extensible Firmware Initiative FAT32 File System -Specification document - -@internalComponent -@released - -@param aPartitionSize partition size in bytes -*/ -void TFAT32BootSector::ComputeFatSectors(Long64 aPartitionSize) -{ - int iRootDirSectors = ((iRootDirEntries*32) + (iBytesPerSector - 1)) / iBytesPerSector; - int Log2OfBytesPerSector = Log2(iBytesPerSector); - Long64 TotalSectors64 = aPartitionSize >> Log2OfBytesPerSector; - Long64 tmpval1 = TotalSectors64 - (iReservedSectors + iRootDirSectors); - Long64 tmpval2 =(256 * iSectorsPerCluster) + iNumberOfFats; - tmpval2 = tmpval2 / 2; - Long64 FatSectors = (tmpval1 + (tmpval2 - 1)) / tmpval2; - iFatSectors = 0; - iFatSectors32 = (unsigned int)FatSectors; -} -/** -Sets the Fat flags - -@internalComponent -@released -*/ -void TFAT32BootSector::SetExtFlags() -{ - iExtFlags = KDefaultExtFlags; -} - -/** -Returns the Fat flags - -@internalComponent -@released - -@return fat flags -*/ -unsigned short TFAT32BootSector::ExtFlags() -{ - return iExtFlags; -} - -/** -Sets the version number of the file system - -@internalComponent -@released -*/ -void TFAT32BootSector::SetFileSystemVersion() -{ - iFileSystemVersion = KDefaultVersion; -} - -/** -Returns the version number of the file system - -@internalComponent -@released - -@return file system version -*/ -unsigned short TFAT32BootSector::FileSystemVersion() -{ - return iFileSystemVersion; -} - -/** -Sets the cluster number of the root directory - -@internalComponent -@released -*/ -void TFAT32BootSector::SetRootCluster() -{ - iRootCluster = KDefaultRootDirClusterNumber; -} - -/** -Returns the cluster number of the root directory - -@internalComponent -@released - -@return cluster number allocated to root directory,usually 2. -*/ -unsigned int TFAT32BootSector::RootCluster() -{ - return iRootCluster; -} - -/** -Set the sector number containing the FSIInfo structure - -@internalComponent -@released -*/ -void TFAT32BootSector::SetFSInfo() -{ - iFSInfo = KDefaultFSInfoSector; -} - -/** -Returns the sector number containing the FSIInfo structure - -@internalComponent -@released - -@return FSInfo structure -*/ -unsigned short TFAT32BootSector::FSInfo() -{ - return iFSInfo; -} - -/** -Set the backup boot sector - -@internalComponent -@released -*/ -void TFAT32BootSector::SetBackUpBootSector() -{ - iBackUpBootSector = KDefaultBkUpBootSec; -} - -/** -Returns the backup boot sector - -@internalComponent -@released - -@return backup boot sector -*/ -unsigned short TFAT32BootSector::BackUpBootSector() -{ - return iBackUpBootSector; -} - -/** -Reserved for future expansion. Code that formats FAT32 volumes should always -set all of the bytes of this field to 0. - -@internalComponent -@released -*/ -void TFAT32BootSector::SetFutureReserved() -{ - for(int i = 0;i < KMaxSizeFutureExpansion;i++) - iFutureReserved[i] = 0; -} - -/** -Returns field value reserved for future expansion - -@internalComponent -@released - -@return zero as this field is initialized to null value here -*/ -unsigned char* TFAT32BootSector::FutureReserved() -{ - return iFutureReserved; -} - - -/**Returns the file system type - -@internalComponent -@released - -@return file system type -*/ -unsigned char* TFAT32BootSector::FileSysType() -{ - return iFileSysType; -}