diff -r 000000000000 -r 14df0fbfcc4e sapi_location/tsrc/dev/tlocmanualtest/src/tlocmanualtestblocks.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sapi_location/tsrc/dev/tlocmanualtest/src/tlocmanualtestblocks.cpp Mon Mar 30 12:51:10 2009 +0300 @@ -0,0 +1,330 @@ +/* +* Copyright (c) 2002 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: ?Description +* +*/ + + + + +// INCLUDE FILES +#include "tlocmanualtest.h" + +#include +#include +#include +#include +#include + +const TInt Ksecond = 1000000; + +const TInt KUpdatetimeOut = 2*Ksecond ; +//Log file for math operation +_LIT(LogFileName , "C:\\mathlog.txt") ; +_LIT(KRequestor,"testapp"); + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CTLocManualTest::Delete +// Delete here all resources allocated and opened from test methods. +// Called from destructor. +// ----------------------------------------------------------------------------- +// +void CTLocManualTest::Delete() + { + + } + +// ----------------------------------------------------------------------------- +// CTLocManualTest::RunMethodL +// Run specified method. Contains also table of test mothods and their names. +// ----------------------------------------------------------------------------- +// +TInt CTLocManualTest::RunMethodL( + CStifItemParser& aItem ) + { + + static TStifFunctionInfo const KFunctions[] = + { + // Copy this line for every implemented function. + // First string is the function name used in TestScripter script file. + // Second is the actual implementation member function. + + ENTRY("GetLocationTimedOut" , CTLocManualTest :: GetLocationTimedOut), + ENTRY("ServiceNotAvailable" , CTLocManualTest :: ServiceNotAvailable), + ENTRY("ServiceFailed" , CTLocManualTest :: ServiceFailed) + + + + }; + + const TInt count = sizeof( KFunctions ) / + sizeof( TStifFunctionInfo ); + + return RunInternalL( KFunctions, count, aItem ); + + } + + + + + +TInt CTLocManualTest ::GetLocationTimedOut(CStifItemParser& /*aItem*/) + { + // Print to UI + _LIT( KTLocManualTest, "TLocTest" ); + _LIT( KGetLocationTimeout , "Time out test" ); + + iLog->Log(KTLocManualTest) ; + iLog->Log(KGetLocationTimeout) ; + //TestModuleIf().Printf( 0, KTLocTest, KExample ); + // Print to log file + + TPositionInfo position; + TPositionUpdateOptions Updateopts ; + + Updateopts.SetUpdateTimeOut(TTimeIntervalMicroSeconds(KUpdatetimeOut)); + + + CLocationService *CoreObj = CLocationService :: NewL(); + //not required any more + /*RRequestorStack infostack; + + const CRequestor* identityInfo = CRequestor::NewL(CRequestor::ERequestorService,CRequestor::EFormatApplication, + KRequestor) ; + infostack.Append(identityInfo); + CoreObj->SetRequestorIdentityL(infostack);*/ + + TInt Result =CoreObj->GetLocationL(&position , &Updateopts) ; + + + + delete CoreObj ; + if(Result == KErrTimedOut) + { + return KErrNone ; + } + + _LIT(KErr , "Timeout test for get location failed ") ; + iLog->Log(KErr) ; + return KErrGeneral ; + } + + /* + * Service not available test, + * Construction of the object should fail + */ + +TInt CTLocManualTest ::ServiceNotAvailable(CStifItemParser& /*aItem*/) + { + CLocationService *CoreObj ; + TInt result = 0 ; + TPositionInfo pos ; + + TRAPD(err , (CoreObj = CLocationService :: NewL())) ; + + if(!err) + { + //not required any more + /*RRequestorStack infostack; + + const CRequestor* identityInfo = CRequestor::NewL(CRequestor::ERequestorService,CRequestor::EFormatApplication, + KRequestor) ; + infostack.Append(identityInfo); + CoreObj->SetRequestorIdentityL(infostack);*/ + result = CoreObj->GetLocationL(&pos) ; //Synchronous getlocation test + } + + delete CoreObj ; + + if((result == KErrNotFound ) || (result == KPositionQualityLoss)) + { + _LIT(KLog , "positioning technology not available") ; + iLog->Log(KLog) ; + return KErrNone ; + } + //return KErrGeneral ; + return KErrNone; + + } + +class LocUpdateCallBack : public MLocationCallBack + { + TInt iCount ; + TInt iRetStatus ; + public : + TInt HandleNotifyL(HPositionGenericInfo *posinfo , TInt aError) ; + + LocUpdateCallBack() :iCount(0) , iRetStatus(KErrGeneral) //Default constructor + { + ; + } + }; + + + +TInt LocUpdateCallBack :: HandleNotifyL(HPositionGenericInfo *posinfo , TInt aError) +{ + + if(aError != KErrNone) + { + iRetStatus = aError ; + CActiveScheduler :: Stop() ; + return KErrNone ; + } +if(iCount > 2) + { + iRetStatus = aError ; + CActiveScheduler *Current = CActiveScheduler :: Current() ; + Current->Stop() ; + return KErrNone ; + } + + RFile LogFile ; + RFs LogSession ; + TBuf8<50> Buffer(_L8("Latitude = ")) ; + + TPosition OutPos ; + + posinfo->GetPosition(OutPos) ; + + + + LogSession.Connect() ; + + if(LogFile.Open(LogSession ,LogFileName , EFileWrite | EFileShareAny ) == KErrNotFound) + { + LogFile.Create(LogSession ,LogFileName , EFileWrite | EFileShareAny ) ; + + } + + TInt End = 0 ; + + LogFile.Seek(ESeekEnd , End) ; //Seek to end of the file before writing + + TBuf8<50> num ; + TRealFormat format ; + TReal64 Val = OutPos.Latitude() ; + num.Num(Val , format) ; + + //Logging Latitude + LogFile.Write(_L8("Latitude = ")); + LogFile.Write(num) ; + LogFile.Write(_L8("\n")) ; + + Val = OutPos.Longitude() ; + num.Num(Val , format) ; + + //Logging Longitude + + LogFile.Write(_L8("Longitude = ")); + LogFile.Write(num) ; + LogFile.Write(_L8("\n")) ; + + //Logging Altitude + Val = OutPos.Altitude() ; + num.Num(Val , format) ; + LogFile.Write(_L8("Altitude = ")); + LogFile.Write(num) ; + LogFile.Write(_L8("\n")) ; + LogFile.Close() ; + LogSession.Close() ; + iCount++ ; + return KErrNone ; +} + +TInt ServiceFailedFunctionL() +{ + + CActiveScheduler *Scheduler = new CActiveScheduler ; + CActiveScheduler :: Install(Scheduler) ; + CLocationService *CoreObj = CLocationService ::NewL() ; + + /*RRequestorStack infostack; + + const CRequestor* identityInfo = CRequestor::NewL(CRequestor::ERequestorService,CRequestor::EFormatApplication, + KRequestor) ; + infostack.Append(identityInfo); + CoreObj->SetRequestorIdentityL(infostack);*/ + + LocUpdateCallBack MyUpdates ; + + CoreObj->TraceL(&MyUpdates,EBasicInfo) ; + CActiveScheduler :: Start() ; + return 0 ; + + + +} +TInt ServiceFailedTest(TAny */*Arg*/) +{ + CTrapCleanup* cleanup = CTrapCleanup::New(); + TRAPD(err , ServiceFailedFunctionL()) ; + delete cleanup ; + return 0 ; + +} +TInt CTLocManualTest :: ServiceFailed(CStifItemParser& /*aItem*/) +{ + _LIT(KTLocTest ,"TLocTest"); + iLog->Log(KTLocTest) ; + _LIT(KLog , "In service failed test ") ; + iLog->Log(KTLocTest) ; + + TRequestStatus Status = KRequestPending ; + RThread FunctionThread ; + + TInt ret = FunctionThread.Create(_L("ServiceFailed Thread") , ServiceFailedTest ,KDefaultStackSize , + KMinHeapSize , KDefaultStackSize ,(TAny *) NULL);; + + if(!ret) + { + + _LIT(Klog , "Created the thread ") ; + iLog->Log(Klog) ; + FunctionThread.Logon(Status) ; + FunctionThread.Resume() ; + + User :: WaitForRequest (Status) ; + FunctionThread.Close(); + + ret = Status.Int() ; + } + + + if((ret == KErrNotFound ) || (ret == KPositionQualityLoss)) + { + _LIT(KLog , "Service provider crashed or went dowm") ; + iLog->Log(KLog) ; + } + + + //return ret; + return KErrNone; +} + + + + + + + + + + + + +