diff -r 000000000000 -r a41df078684a kerneltest/e32test/lffs/loadlffs.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kerneltest/e32test/lffs/loadlffs.cpp Mon Oct 19 15:55:17 2009 +0100 @@ -0,0 +1,121 @@ +// 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: +// e32test\lffs\loadlffs.cpp +// +// + +#include + +LOCAL_D RFs TheFs; + +LOCAL_C void FormatLFFS(TDes &drive) + { + + RFormat format; + TInt count; + TInt r; + + RDebug::Print(_L("Format LFFS drive %S\r\n"), &drive); + r = format.Open(TheFs, drive, EHighDensity, count); + + while (count) + { + format.Next(count); + } + + format.Close(); + } + + +//LOCAL_C void ForceMediaRemount( TMediaDevice aMedia ) +// // +// // Force a remount on next access +// // +// { +// UserSvr::ForceRemountMedia( aMedia ); +// } + + + +TInt MountLFFS() + { + RDebug::Print(_L("Read machine information")); + + TInt LFFSdriveNumber; + TBuf<4> LFFSdriveLetter; + + LFFSdriveLetter.Zero(); + LFFSdriveLetter.Append(_L("K:\\")); + LFFSdriveNumber = EDriveK; + + RDebug::Print(_L("Load device driver: MEDLFS")); + TInt r=User::LoadPhysicalDevice(_L("MEDLFS")); + if(r != KErrNone && r != KErrAlreadyExists) + { + RDebug::Print(_L("Loading device driver failed")); + return(-1); + } + + RDebug::Print(_L("Add file system: ELFFS")); + r=TheFs.AddFileSystem(_L("ELFFS")); + if(r != KErrNone && r != KErrAlreadyExists) + RDebug::Print(_L("Failed to add ELFFS")); + + + TFullName name; + r = TheFs.FileSystemName(name, LFFSdriveNumber); + + if (name.Length() != 0) + { + RDebug::Print(_L("Dismounting %S on drive %S\r\n"), &name, &LFFSdriveLetter); + r=TheFs.DismountFileSystem(name, LFFSdriveNumber); + RDebug::Print(_L("Dismount ret=%d"), r); + } + +// ForceMediaRemount( EFixedMedia1 ); + + RDebug::Print(_L("Mount LFFS on drive %S\r\n"), &LFFSdriveLetter); + r=TheFs.MountFileSystem(_L("Lffs"), LFFSdriveNumber); + RDebug::Print(_L("Mount r=%d"),r); +//uncommented + if (r == KErrCorrupt || r == KErrNotReady) + { + RDebug::Print(_L("FS Corrupt, formatting")); + FormatLFFS(LFFSdriveLetter); + } + ///to here + TheFs.SetSessionPath(LFFSdriveLetter); + return(LFFSdriveNumber); + } + +GLDEF_C TInt E32Main() +// +// Load the LFFS on C: +// + { + + CTrapCleanup* cleanup; + cleanup=CTrapCleanup::New(); + + TInt r=TheFs.Connect(); + RDebug::Print(_L("Connect ret %d"),r); + + TRAP(r,MountLFFS()); + RDebug::Print(_L("Mount LFFS ret %d"),r); + + TheFs.Close(); + delete cleanup; + return(KErrNone); + } +