// 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:
// f32\sfat\inc\sl_bpb.inl
// 
//

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!
//!! WARNING!! DO NOT edit this file !! '\sfat' component is obsolete and is not being used. '\sfat32'replaces it
//!!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

#ifndef SL_BPB_INL
#define SL_BPB_INL


#define pDir ((SFatDirEntry*)&iData[0])

// class TFatBootSector
inline const TPtrC8 TFatBootSector::VendorId() const
    {return TPtrC8(iVendorId,8);}
inline TInt TFatBootSector::BytesPerSector() const
    {return iBytesPerSector;}
inline TInt TFatBootSector::SectorsPerCluster() const
    {return iSectorsPerCluster;}
inline TInt TFatBootSector::ReservedSectors() const
    {return iReservedSectors;}
inline TInt TFatBootSector::NumberOfFats() const
    {return iNumberOfFats;}
inline TInt TFatBootSector::RootDirEntries() const
    {return iRootDirEntries;}
inline TInt TFatBootSector::TotalSectors() const
    {return iTotalSectors;}
inline TUint8 TFatBootSector::MediaDescriptor() const
    {return iMediaDescriptor;}
inline TInt TFatBootSector::FatSectors() const
    {return iFatSectors;}
inline TInt TFatBootSector::SectorsPerTrack() const
    {return iSectorsPerTrack;}
inline TInt TFatBootSector::NumberOfHeads() const
    {return iNumberOfHeads;}
inline TInt TFatBootSector::HiddenSectors() const
    {return iHiddenSectors;}
inline TInt TFatBootSector::HugeSectors() const
    {return iHugeSectors;}
inline TInt TFatBootSector::PhysicalDriveNumber() const
    {return iPhysicalDriveNumber;}
inline TInt TFatBootSector::ExtendedBootSignature() const
    {return iExtendedBootSignature;}
inline TUint32 TFatBootSector::UniqueID() const
    {return iUniqueID;}
inline const TPtrC8 TFatBootSector::VolumeLabel() const
    {return TPtrC8(iVolumeLabel,KVolumeLabelSize);}
inline const TPtrC8 TFatBootSector::FileSysType() const
    {return TPtrC8(iFileSysType,KFileSysTypeSize);}
inline TInt TFatBootSector::BootSectorSignature() const
    {return KBootSectorSignature;}

inline void TFatBootSector::SetJumpInstruction()
    {
    iJumpInstruction[0]=0xE9;iJumpInstruction[2]=0x90;
    }
inline void TFatBootSector::SetVendorID(const TDesC8& aDes)
    {
    __ASSERT_DEBUG(aDes.Length()<=8,Fault(EFatBadBootSectorParameter));
    TPtr8 buf(iVendorId,8);
    buf=aDes;
    }
inline void TFatBootSector::SetBytesPerSector(TInt aBytesPerSector)
    {
    __ASSERT_DEBUG(!(aBytesPerSector&~KMaxTUint16),Fault(EFatBadBootSectorParameter));
    iBytesPerSector=(TUint16)aBytesPerSector;
    }
inline void TFatBootSector::SetSectorsPerCluster(TInt aSectorsPerCluster)
    {
    __ASSERT_DEBUG(!(aSectorsPerCluster&~KMaxTUint8),Fault(EFatBadBootSectorParameter));
    iSectorsPerCluster=(TUint8)aSectorsPerCluster;
    }
inline void TFatBootSector::SetReservedSectors(TInt aReservedSectors)
    {
    __ASSERT_DEBUG(!(aReservedSectors&~KMaxTUint16),Fault(EFatBadBootSectorParameter));
    iReservedSectors=(TUint16)aReservedSectors;
    }
inline void TFatBootSector::SetNumberOfFats(TInt aNumberOfFats)
    {
    __ASSERT_DEBUG(!(aNumberOfFats&~KMaxTUint8),Fault(EFatBadBootSectorParameter));
    iNumberOfFats=(TUint8)aNumberOfFats;
    }
inline void TFatBootSector::SetRootDirEntries(TInt aRootDirEntries)
    {
    __ASSERT_DEBUG(!(aRootDirEntries&~KMaxTUint16),Fault(EFatBadBootSectorParameter));
    iRootDirEntries=(TUint16)aRootDirEntries;
    }
inline void TFatBootSector::SetTotalSectors(TInt aTotalSectors)
    {
    __ASSERT_DEBUG(!(aTotalSectors&~KMaxTUint16),Fault(EFatBadBootSectorParameter));
    iTotalSectors=(TUint16)aTotalSectors;
    }
inline void TFatBootSector::SetMediaDescriptor(TUint8 aMediaDescriptor)
    {iMediaDescriptor=aMediaDescriptor;}
inline void TFatBootSector::SetFatSectors(TInt aFatSectors)
    {
    __ASSERT_DEBUG(!(aFatSectors&~KMaxTUint16),Fault(EFatBadBootSectorParameter));
    iFatSectors=(TUint16)aFatSectors;
    }
inline void TFatBootSector::SetSectorsPerTrack(TInt aSectorsPerTrack)
    {
    __ASSERT_DEBUG(!(aSectorsPerTrack&~KMaxTUint16),Fault(EFatBadBootSectorParameter));
    iSectorsPerTrack=(TUint16)aSectorsPerTrack;
    }
inline void TFatBootSector::SetNumberOfHeads(TInt aNumberOfHeads)
    {
    __ASSERT_DEBUG(!(aNumberOfHeads&~KMaxTUint16),Fault(EFatBadBootSectorParameter));
    iNumberOfHeads=(TUint16)aNumberOfHeads;
    }
inline void TFatBootSector::SetHiddenSectors(TUint32 aHiddenSectors)
    {
    iHiddenSectors=(TUint32)(aHiddenSectors);
    }
inline void TFatBootSector::SetHugeSectors(TUint32 aHugeSectors)
    {iHugeSectors=aHugeSectors;}
inline void TFatBootSector::SetPhysicalDriveNumber(TInt aPhysicalDriveNumber)
    {
    __ASSERT_DEBUG(!(aPhysicalDriveNumber&~KMaxTUint8),Fault(EFatBadBootSectorParameter));
    iPhysicalDriveNumber=(TUint8)aPhysicalDriveNumber;
    }
inline void TFatBootSector::SetReservedByte(TUint8 aReservedByte)
    {iReserved=aReservedByte;}
inline void TFatBootSector::SetExtendedBootSignature(TInt anExtendedBootSignature)
    {
    __ASSERT_DEBUG(!(anExtendedBootSignature&~KMaxTUint8),Fault(EFatBadBootSectorParameter));
    iExtendedBootSignature=(TUint8)anExtendedBootSignature;
    }
inline void TFatBootSector::SetUniqueID(TUint32 anUniqueID)
    {iUniqueID=anUniqueID;}
inline void TFatBootSector::SetVolumeLabel(const TDesC8& aDes)
    {
    __ASSERT_DEBUG(aDes.Length()<=KVolumeLabelSize,Fault(EFatBadBootSectorParameter));
    TPtr8 buf(iVolumeLabel,KVolumeLabelSize);
    buf=aDes;
    }
inline void TFatBootSector::SetFileSysType(const TDesC8& aDes)
    {
    __ASSERT_DEBUG(aDes.Length()<=8,Fault(EFatBadBootSectorParameter));
    TPtr8 buf(iFileSysType,8);
    buf=aDes;
    }


#endif //SL_BPB_INL
