userlibandfileserver/fileserver/smassstorage/inc/tfatbootsector.inl
branchRCL_3
changeset 22 2f92ad2dc5db
parent 21 e7d2d738d3c2
child 23 1df514389a47
equal deleted inserted replaced
21:e7d2d738d3c2 22:2f92ad2dc5db
     1 // Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of the License "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // Inline methods of TFatBootSector class.
       
    15 // 
       
    16 //
       
    17 
       
    18 /**
       
    19  @file
       
    20  @internalTechnology
       
    21  
       
    22  Returns Sectors in Fat table for 32 bit volume
       
    23  
       
    24  @return iFatSectors32
       
    25 */
       
    26 inline TUint32 TFatBootSector::FatSectors32() const	
       
    27 	{return iFatSectors32;}
       
    28 /**
       
    29 Fat flags
       
    30 
       
    31 @return iFATFlags
       
    32 */
       
    33 inline TUint16 TFatBootSector::FATFlags() const		
       
    34 	{return iFATFlags;}
       
    35 /**
       
    36 Version number of the file system
       
    37 
       
    38 @return iVersionNumber
       
    39 */
       
    40 inline TUint16 TFatBootSector::VersionNumber() const		
       
    41 	{return iVersionNumber;}
       
    42 /**
       
    43 Cluster number of the root directory
       
    44 
       
    45 @return iRootClusterNum
       
    46 */
       
    47 inline TUint32 TFatBootSector::RootClusterNum() const	
       
    48 	{return iRootClusterNum;}
       
    49 /**
       
    50 Sector number containing the FSIInfo structure
       
    51 
       
    52 @return iFSInfoSectorNum
       
    53 */
       
    54 inline TUint16 TFatBootSector::FSInfoSectorNum() const
       
    55 	{return iFSInfoSectorNum;}
       
    56 /**
       
    57 Backup boot sector
       
    58 
       
    59 @return iBkBootRecSector
       
    60 */
       
    61 inline TUint16 TFatBootSector::BkBootRecSector() const
       
    62 	{return iBkBootRecSector;}
       
    63 /**
       
    64 Sets the number of sectors in Fat table for 32 bit volume
       
    65 
       
    66 @param aFatSectors32
       
    67 */
       
    68 inline void TFatBootSector::SetFatSectors32(TUint32	aFatSectors32)
       
    69 	{iFatSectors32 = aFatSectors32;}
       
    70 /**
       
    71 Sets the Fat flags
       
    72 
       
    73 @param aFATFlags
       
    74 */
       
    75 inline void TFatBootSector::SetFATFlags(TUint16 aFATFlags)
       
    76 	{iFATFlags = aFATFlags;}
       
    77 /**
       
    78 Sets the version number of the file system
       
    79 
       
    80 @param aVersionNumber
       
    81 */
       
    82 inline void TFatBootSector::SetVersionNumber(TUint16 aVersionNumber)
       
    83 	{iVersionNumber = aVersionNumber;}
       
    84 /**
       
    85 Sets the cluster number of the root directory
       
    86 
       
    87 @param aRootClusterNum
       
    88 */
       
    89 inline void TFatBootSector::SetRootClusterNum(TUint32 aRootClusterNum)	
       
    90 	{iRootClusterNum = aRootClusterNum;}
       
    91 /**
       
    92 Set the sector number containing the FSIInfo structure
       
    93 
       
    94 @param aFSInfoSectorNum
       
    95 */
       
    96 inline void TFatBootSector::SetFSInfoSectorNum(TUint16 aFSInfoSectorNum)
       
    97 	{iFSInfoSectorNum = aFSInfoSectorNum;}
       
    98 /**
       
    99 Set the backup boot sector
       
   100 
       
   101 @param aBkBootRecSector
       
   102 */
       
   103 inline void TFatBootSector::SetBkBootRecSector(TUint16 aBkBootRecSector)
       
   104 	{iBkBootRecSector = aBkBootRecSector;}	
       
   105 /**
       
   106 Quick test as to whether the volume is Fat32
       
   107 
       
   108 @return True for Fat32
       
   109 */
       
   110 inline TBool TFatBootSector::Is32BitFat()
       
   111 	{return(iRootDirEntries==0);}
       
   112 /**
       
   113 Returns the vendor ID of the file system that formatted the volume
       
   114 
       
   115 @return A descriptor containing the vendor ID 
       
   116 */
       
   117 inline const TPtrC8 TFatBootSector::VendorId() const
       
   118 	{return TPtrC8(iVendorId,KVendorIdSize);}
       
   119 /**
       
   120 Return the bytes per sector
       
   121 
       
   122 @return iBytesPerSector
       
   123 */
       
   124 inline TUint16 TFatBootSector::BytesPerSector() const
       
   125 	{return iBytesPerSector;}
       
   126 /**
       
   127 Returns the sectors per cluster ratio
       
   128 
       
   129 @return iSectorsPerCluster
       
   130 */
       
   131 inline TInt TFatBootSector::SectorsPerCluster() const
       
   132 	{return iSectorsPerCluster;}
       
   133 /**
       
   134 Returns the number of reserved sectors on the volume
       
   135 
       
   136 @return iReservedSectors
       
   137 */
       
   138 inline TInt TFatBootSector::ReservedSectors() const
       
   139 	{return iReservedSectors;}
       
   140 /**
       
   141 Returns the number of Fats on the volume
       
   142 
       
   143 @return iNumberOfFats
       
   144 */
       
   145 inline TInt TFatBootSector::NumberOfFats() const
       
   146 	{return iNumberOfFats;}
       
   147 /**
       
   148 Returns the number of entries allowed in the root directory, specific to Fat12/16, zero for FAT32
       
   149 
       
   150 @return iRootDirEntries
       
   151 */
       
   152 inline TInt TFatBootSector::RootDirEntries() const
       
   153 	{return iRootDirEntries;}
       
   154 /**
       
   155 Returns the total sectors on the volume, zero for FAT32
       
   156 
       
   157 @return iTotalSectors
       
   158 */
       
   159 inline TInt TFatBootSector::TotalSectors() const
       
   160 	{return iTotalSectors;}
       
   161 /**
       
   162 Returns the media descriptor
       
   163 
       
   164 @return iMediaDescriptor
       
   165 */
       
   166 inline TUint8 TFatBootSector::MediaDescriptor() const
       
   167 	{return iMediaDescriptor;}
       
   168 /**
       
   169 Returns sectors used for the Fat table, zero for FAT32
       
   170 
       
   171 @return iFatSectors
       
   172 */
       
   173 inline TInt TFatBootSector::FatSectors() const
       
   174 	{return iFatSectors;}
       
   175 /**
       
   176 Returns sectors per track
       
   177 
       
   178 @return iSectorsPerTrack
       
   179 */
       
   180 inline TInt TFatBootSector::SectorsPerTrack() const
       
   181 	{return iSectorsPerTrack;}
       
   182 /**
       
   183 Returns the number of heads 
       
   184 
       
   185 @return iNumberOfHeads
       
   186 */
       
   187 inline TInt TFatBootSector::NumberOfHeads() const
       
   188 	{return iNumberOfHeads;}
       
   189 /**
       
   190 Returns the number of hidden sectors in the volume
       
   191 
       
   192 @return iHiddenSectors
       
   193 */
       
   194 inline TInt TFatBootSector::HiddenSectors() const
       
   195 	{return iHiddenSectors;}
       
   196 /**
       
   197 Returns total sectors in the volume, Used if totalSectors > 65535
       
   198 
       
   199 @return iHugeSectors
       
   200 */
       
   201 inline TInt TFatBootSector::HugeSectors() const
       
   202 	{return iHugeSectors;}
       
   203 /**
       
   204 Returns the physical drive number, not used in Symbian OS
       
   205 
       
   206 @return iPhysicalDriveNumber
       
   207 */
       
   208 inline TInt TFatBootSector::PhysicalDriveNumber() const
       
   209 	{return iPhysicalDriveNumber;}
       
   210 /**
       
   211 Returns the extended boot signiture
       
   212 
       
   213 @return iExtendedBootSignature
       
   214 */
       
   215 inline TInt TFatBootSector::ExtendedBootSignature() const
       
   216 	{return iExtendedBootSignature;}
       
   217 /**
       
   218 Returns the unique volume ID
       
   219 
       
   220 @return iUniqueID
       
   221 */
       
   222 inline TUint32 TFatBootSector::UniqueID() const
       
   223 	{return iUniqueID;}
       
   224 /**
       
   225 Returns the volume's label
       
   226 
       
   227 @return A descriptor containing the volume label
       
   228 */
       
   229 inline const TPtrC8 TFatBootSector::VolumeLabel() const
       
   230 	{return TPtrC8(iVolumeLabel,KVolumeLabelSize);}
       
   231 /**
       
   232 Returns the file system type
       
   233 
       
   234 @return A descriptor containing the file system type
       
   235 */
       
   236 inline const TPtrC8 TFatBootSector::FileSysType() const
       
   237 	{return TPtrC8(iFileSysType,KFileSysTypeSize);}
       
   238 /**
       
   239 Returns the boot sector signiture
       
   240 
       
   241 @return KBootSectorSignature
       
   242 */
       
   243 inline TInt TFatBootSector::BootSectorSignature() const
       
   244 	{return KBootSectorSignature;}
       
   245 /**
       
   246 Set the jump instruction 
       
   247 */
       
   248 inline void TFatBootSector::SetJumpInstruction()
       
   249 	{iJumpInstruction[0]=0xE9;iJumpInstruction[2]=0x90;}
       
   250 /**
       
   251 Set the vendor ID of the file system that formatted the volume
       
   252 
       
   253 @param aDes Descriptor containing the Vendor ID
       
   254 */
       
   255 inline void TFatBootSector::SetVendorID(const TDesC8& aDes)
       
   256 	{
       
   257 	__ASSERT_DEBUG(aDes.Length()<=KVendorIdSize,User::Panic(_L("FATFILESYS"),1));
       
   258 	TPtr8 buf(iVendorId,KVendorIdSize);
       
   259 	buf=aDes;
       
   260 	}
       
   261 /**
       
   262 Sets the bytes per sector 
       
   263 
       
   264 @param aBytesPerSector Number of bytes per sector
       
   265 */
       
   266 inline void TFatBootSector::SetBytesPerSector(TInt aBytesPerSector)
       
   267 	{
       
   268 	__ASSERT_DEBUG(!(aBytesPerSector&~KMaxTUint16),User::Panic(_L("FATFILESYS"),1));
       
   269 	iBytesPerSector=(TUint16)aBytesPerSector;
       
   270 	}
       
   271 /**
       
   272 Set the sectors per cluster ratio
       
   273 
       
   274 @param aSectorsPerCluster Number of sectors per cluster
       
   275 */
       
   276 inline void TFatBootSector::SetSectorsPerCluster(TInt aSectorsPerCluster)
       
   277 	{
       
   278 	__ASSERT_DEBUG(!(aSectorsPerCluster&~KMaxTUint8),User::Panic(_L("FATFILESYS"),1));
       
   279 	iSectorsPerCluster=(TUint8)aSectorsPerCluster;
       
   280 	}
       
   281 /**
       
   282 Sets the number of reserved sectors on the volume
       
   283 
       
   284 @param aReservedSectors Number of reserved sectors
       
   285 */
       
   286 inline void TFatBootSector::SetReservedSectors(TInt aReservedSectors)
       
   287 	{
       
   288 	__ASSERT_DEBUG(!(aReservedSectors&~KMaxTUint16),User::Panic(_L("FATFILESYS"),1));
       
   289 	iReservedSectors=(TUint16)aReservedSectors;
       
   290 	}
       
   291 /**
       
   292 Sets the number of Fats on the volume
       
   293 
       
   294 @param aNumberOfFats Number of fats
       
   295 */
       
   296 inline void TFatBootSector::SetNumberOfFats(TInt aNumberOfFats)
       
   297 	{
       
   298 	__ASSERT_DEBUG(!(aNumberOfFats&~KMaxTUint8),User::Panic(_L("FATFILESYS"),1));
       
   299 	iNumberOfFats=(TUint8)aNumberOfFats;
       
   300 	}
       
   301 /**
       
   302 Number of entries allowed in the root directory, specific to Fat12/16, zero for FAT32
       
   303 
       
   304 @param aRootDirEntries
       
   305 */
       
   306 inline void TFatBootSector::SetRootDirEntries(TInt aRootDirEntries)
       
   307 	{
       
   308 	__ASSERT_DEBUG(!(aRootDirEntries&~KMaxTUint16),User::Panic(_L("FATFILESYS"),1));
       
   309 	iRootDirEntries=(TUint16)aRootDirEntries;
       
   310 	}
       
   311 /**
       
   312 Total sectors on the volume, zero for FAT32
       
   313 
       
   314 @param aTotalSectors Total number of sectors
       
   315 */
       
   316 inline void TFatBootSector::SetTotalSectors(TInt aTotalSectors)
       
   317 	{
       
   318 	__ASSERT_DEBUG(!(aTotalSectors&~KMaxTUint16),User::Panic(_L("FATFILESYS"),1));
       
   319 	iTotalSectors=(TUint16)aTotalSectors;
       
   320 	}
       
   321 /**
       
   322 Set the media descriptor
       
   323 
       
   324 @param aMediaDescriptor
       
   325 */
       
   326 inline void TFatBootSector::SetMediaDescriptor(TUint8 aMediaDescriptor)
       
   327 	{iMediaDescriptor=aMediaDescriptor;}
       
   328 /**
       
   329 Sectors used for the Fat table, zero for FAT32
       
   330 
       
   331 @param aFatSectors Number of Fat sectors
       
   332 */
       
   333 inline void TFatBootSector::SetFatSectors(TInt aFatSectors)
       
   334 	{
       
   335 	__ASSERT_DEBUG(!(aFatSectors&~KMaxTUint16),User::Panic(_L("FATFILESYS"),1));
       
   336 	iFatSectors=(TUint16)aFatSectors;
       
   337 	}
       
   338 /**
       
   339 Set the sectors per track
       
   340 
       
   341 @param aSectorsPerTrack Number of sectors per track
       
   342 */
       
   343 inline void TFatBootSector::SetSectorsPerTrack(TInt aSectorsPerTrack)
       
   344 	{
       
   345 	__ASSERT_DEBUG(!(aSectorsPerTrack&~KMaxTUint16),User::Panic(_L("FATFILESYS"),1));
       
   346 	iSectorsPerTrack=(TUint16)aSectorsPerTrack;
       
   347 	}
       
   348 /**
       
   349 Set the number of heads
       
   350 
       
   351 @param aNumberOfHeads Number of heads
       
   352 */
       
   353 inline void TFatBootSector::SetNumberOfHeads(TInt aNumberOfHeads)
       
   354 	{
       
   355 	__ASSERT_DEBUG(!(aNumberOfHeads&~KMaxTUint16),User::Panic(_L("FATFILESYS"),1));
       
   356 	iNumberOfHeads=(TUint16)aNumberOfHeads;
       
   357 	}
       
   358 /**
       
   359 Set the number of hidden sectors in the volume
       
   360 
       
   361 @param aHiddenSectors Number of hidden sectors
       
   362 */
       
   363 inline void TFatBootSector::SetHiddenSectors(TUint32 aHiddenSectors)
       
   364 	{
       
   365 	iHiddenSectors=(TUint32)(aHiddenSectors);
       
   366 	}
       
   367 /**
       
   368 Set the total sectors in the volume, Used if totalSectors > 65535
       
   369 
       
   370 @param aHugeSectors
       
   371 */
       
   372 inline void TFatBootSector::SetHugeSectors(TUint32 aHugeSectors)
       
   373 	{iHugeSectors=aHugeSectors;}
       
   374 /**
       
   375 Physical drive number, not used in Symbian OS
       
   376 
       
   377 @param aPhysicalDriveNumber Physical drive number 
       
   378 */
       
   379 inline void TFatBootSector::SetPhysicalDriveNumber(TInt aPhysicalDriveNumber)
       
   380 	{
       
   381 	__ASSERT_DEBUG(!(aPhysicalDriveNumber&~KMaxTUint8),User::Panic(_L("FATFILESYS"),1));
       
   382 	iPhysicalDriveNumber=(TUint8)aPhysicalDriveNumber;
       
   383 	}
       
   384 /**
       
   385 Set the reserved byte value
       
   386 
       
   387 @param aReservedByte Value for reserved byte
       
   388 */
       
   389 inline void TFatBootSector::SetReservedByte(TUint8 aReservedByte)
       
   390 	{iReserved=aReservedByte;}
       
   391 /**
       
   392 Set the extended boot signiture
       
   393 
       
   394 @param anExtendedBootSignature The extended boot signiture
       
   395 */
       
   396 inline void TFatBootSector::SetExtendedBootSignature(TInt anExtendedBootSignature)
       
   397 	{
       
   398 	__ASSERT_DEBUG(!(anExtendedBootSignature&~KMaxTUint8),User::Panic(_L("FATFILESYS"),1));
       
   399 	iExtendedBootSignature=(TUint8)anExtendedBootSignature;
       
   400 	}
       
   401 /**
       
   402 Set the unique volume ID
       
   403 
       
   404 @param anUniqueID Set the unique ID
       
   405 */
       
   406 inline void TFatBootSector::SetUniqueID(TUint32 anUniqueID)
       
   407 	{iUniqueID=anUniqueID;}
       
   408 /**
       
   409 Set the volume's label
       
   410 
       
   411 @param aDes A descriptor containg the volume label
       
   412 */
       
   413 inline void TFatBootSector::SetVolumeLabel(const TDesC8& aDes)
       
   414 	{
       
   415 	__ASSERT_DEBUG(aDes.Length()<=KVolumeLabelSize,User::Panic(_L("FATFILESYS"),1));
       
   416 	TPtr8 buf(iVolumeLabel,KVolumeLabelSize);
       
   417 	buf=aDes;
       
   418 	}
       
   419 /**
       
   420 Set the file system type
       
   421 
       
   422 @param aDes A descriptor containing the file system type
       
   423 */
       
   424 inline void TFatBootSector::SetFileSysType(const TDesC8& aDes)
       
   425 	{
       
   426 	__ASSERT_DEBUG(aDes.Length()<=8,User::Panic(_L("FATFILESYS"),1));
       
   427 	TPtr8 buf(iFileSysType,8);
       
   428 	buf=aDes;
       
   429 	}
       
   430 /**
       
   431 Tests if the volume is Fat 16 or not
       
   432 
       
   433 @return True if the volume is Fat16
       
   434 */
       
   435 inline TBool TFatBootSector::Is16BitFat()
       
   436 	{return(FileSysType()==_L8("FAT16   "));}
       
   437 /**
       
   438 Returns the position of the first sector of the first Fat
       
   439 
       
   440 @return The first Fat sector's byte position
       
   441 */
       
   442 inline TInt TFatBootSector::FirstFatSectorPos()
       
   443 	{return(ReservedSectors()*BytesPerSector());}
       
   444 /**
       
   445 Returns the start sector number of the root directory
       
   446 
       
   447 @return Start sector number of the root directory
       
   448 */
       
   449 inline TInt TFatBootSector::RootDirStartSector()
       
   450 	{return(ReservedSectors()+FatSectors()*NumberOfFats());}
       
   451 /**
       
   452 Returns the sector number of the first sector after the root directory 
       
   453 
       
   454 @return 
       
   455 */
       
   456 inline TInt TFatBootSector::FirstFreeSector()
       
   457 	{return(RootDirStartSector()+(RootDirEntries()*KSizeOfFatDirEntry+BytesPerSector()-1)/BytesPerSector());}
       
   458