sapi_location/tsrc/dev/tlocationprovidertest/src/ttrace.cpp
changeset 0 14df0fbfcc4e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sapi_location/tsrc/dev/tlocationprovidertest/src/ttrace.cpp	Mon Mar 30 12:51:10 2009 +0300
@@ -0,0 +1,270 @@
+/*
+* Copyright (c) 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:  
+*
+*/
+
+#include <e32svr.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include <LbsRequestor.h>
+#include <LiwServiceHandler.h>
+#include <LiwCommon.h>
+
+#include "tcomplugin.h"
+
+
+_LIT(LogFileName , "C:\\Notifications.txt") ;
+
+//---------------------------------------------------------------------------------------------------------
+/** 
+  *@ This call back interface is for testing Trace 
+ */
+ //---------------------------------------------------------------------------------------------------------
+  
+ class LocUpdateCallBack : public MLiwNotifyCallback
+ {
+   TInt iCount ;
+   TInt iRetStatus ;
+    public :
+    	TInt HandleNotifyL(
+            TInt aCmdId,
+            TInt aEventId,
+            CLiwGenericParamList& aEventParamList,
+            const CLiwGenericParamList& aInParamList);
+    
+    	LocUpdateCallBack() :iCount(0) , iRetStatus(KErrGeneral)  //Default constructor 
+    	{
+    		;
+    	}
+  };
+  
+  
+  
+TInt LocUpdateCallBack ::  HandleNotifyL(
+            TInt aCmdId,
+            TInt aEventId,
+            CLiwGenericParamList& aEventParamList,
+            const CLiwGenericParamList& aInParamList)
+{
+
+   TBuf8<50> data ;
+   TRealFormat format ;
+
+	iCount++ ;
+
+	RFile LogFile ;
+	RFs LogSession ;
+	TBuf8<50> Buffer(_L8("Latitude = ")) ;
+
+
+
+	LogSession.Connect() ;
+
+	if(LogFile.Open(LogSession ,LogFileName , EFileWrite | EFileShareAny )  == KErrNotFound)
+	{
+		LogFile.Create(LogSession ,LogFileName , EFileWrite | EFileShareAny ) ;
+
+	}
+
+	TInt End = 0 ;
+	TInt index = 0 ;
+	const TLiwGenericParam *GenericParam =  aEventParamList.FindFirst(index , KErrorCode) ;
+
+	if(!GenericParam)
+	{
+		return KErrGeneral ;
+	}
+
+	if((GenericParam->Value()).AsTInt32() != KErrNone)
+	{
+		return (GenericParam->Value()).AsTInt32() ;
+	}
+		
+	index = 0 ;
+
+	LogFile.Seek(ESeekEnd , End) ; //Seek to end of the file before writing 
+
+		const TLiwGenericParam *MapParam = aEventParamList.FindFirst(index ,KLocationMap) ;
+		
+		if(!MapParam)
+		{
+			return KErrGeneral ;
+		}
+
+		TLiwVariant Variant ;
+
+		Variant = MapParam->Value() ;
+		const CLiwMap *LocMap = Variant.AsMap() ;
+
+		TLiwVariant PosVariant ;
+
+		LocMap->FindL(KLongitudeKey , PosVariant) ;
+
+
+	TReal64 LongData = (TReal64)PosVariant.AsTReal() ; //Longitude
+		data.Num(LongData , format) ;
+		LogFile.Write(_L8("\n")) ;
+		LogFile.Write(_L8("Logitude = ")) ;
+		LogFile.Write(data) ;
+
+		LocMap->FindL(KLatitudeKey ,PosVariant) ; //Latitude 
+
+	TReal64 LatData = (TReal64)PosVariant.AsTReal() ;
+		data.Num(LatData , format) ;
+		LogFile.Write(_L8("   Latitude = ")) ;
+		LogFile.Write(data) ;
+
+		LocMap->FindL(KAltitudeKey , PosVariant) ; //Altitude
+	TReal32 AltData = PosVariant.AsTReal() ;
+		data.Num(AltData , format) ;
+
+		LogFile.Write(_L8("   Altitude = "))	 ;
+		LogFile.Write(data) ;
+		//LocMap->DecRef() ;
+	 	
+
+	LogFile.Close() ;
+	LogSession.Close() ;
+	
+	if(iCount)
+	{
+		iRetStatus = KErrNone ;
+		CActiveScheduler *Current = CActiveScheduler :: Current() ;
+		Current->Stop() ;
+		
+	}
+	
+	return KErrNone ;
+}
+   
+    	
+TInt GetLocFunctionL()
+{
+ 	__UHEAP_MARK;
+	LocUpdateCallBack MyUpdates ;
+	
+	
+	
+    CActiveScheduler *Scheduler  = CActiveScheduler :: Current() ;
+    
+    if(!Scheduler)
+    {
+    	Scheduler = new CActiveScheduler ;
+    }
+    
+   
+    CActiveScheduler :: Install(Scheduler) ;
+     
+    
+	
+  
+    CLiwServiceHandler* ServiceHandler = CLiwServiceHandler::NewL();
+  
+    // Input and output parameter list
+    CLiwGenericParamList* inputlist = &(ServiceHandler->InParamListL());
+    CLiwGenericParamList* outputlist = &(ServiceHandler->OutParamListL());
+    
+    
+
+
+	CLiwCriteriaItem* crit = CLiwCriteriaItem::NewL(1, KDataSource , KService);
+	
+
+	crit->SetServiceClass(TUid::Uid(KLiwClassBase));
+
+	RCriteriaArray a;
+	a.AppendL(crit);
+	
+	TRAPD (err ,ServiceHandler->AttachL(a) );
+   
+	
+	
+	
+	
+	
+	
+	ServiceHandler->ExecuteServiceCmdL(*crit, *inputlist, *outputlist);
+
+	 
+ 	 
+
+	TInt pos = 0;
+	
+	const TLiwGenericParam *errorprm = outputlist->FindFirst(pos , KErrorCode) ;
+	
+	if(!errorprm)
+	{
+		return KErrGeneral ;
+	}
+	
+
+	_LIT8(KDataSource, "ILocation");
+	 
+	 pos = 0 ;
+
+ 	const TLiwGenericParam *genericparm = outputlist->FindFirst(pos,KLocationInterface);
+	
+	if(!genericparm)
+	{
+		return KErrGeneral ;
+	}
+	
+   MLiwInterface* locinterface = (genericparm->Value()).AsInterface();
+  
+  
+   
+
+  // CLiwGenericParamList *OutParmList = CLiwGenericParamList :: NewL() ;
+
+    
+
+	CLiwGenericParamList *InputList = CLiwGenericParamList :: NewL() ;
+	CLiwGenericParamList *OutParmList = CLiwGenericParamList :: NewL() ;
+	TBuf8<20>CmdBuf(KCmdTraceLocation) ;
+	
+
+	locinterface->ExecuteCmdL(CmdBuf , *InputList , *OutParmList ,KLiwOptASyncronous ,  &MyUpdates);
+    
+   CActiveScheduler :: Start() ;
+    
+   
+    
+    
+    locinterface->Close();
+    delete ServiceHandler ; 	
+    delete InputList ;
+    delete  OutParmList ;
+    delete Scheduler ;
+    __UHEAP_MARKEND;
+    return 0 ; 
+}
+
+TInt GetLocUpdates(TAny */*Arg*/)
+{
+//;
+	CTrapCleanup* cleanup = CTrapCleanup::New();
+	TInt val = 0 ;
+   
+  //Install a new active scheduler to this thread 
+  TRAPD(err , (val =GetLocFunctionL())) ;
+   
+    delete cleanup ;
+    if(err)
+        {
+            return err ;
+        }
+    return val ;
+}
+