datasourcemodules/locationapesuplpsy/src/suplpsyinfostoremanager.cpp
changeset 0 9cfd9a3ee49c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datasourcemodules/locationapesuplpsy/src/suplpsyinfostoremanager.cpp	Tue Feb 02 01:50:39 2010 +0200
@@ -0,0 +1,240 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "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:  Store Manager in SUPL PSY.
+*
+*/
+
+
+// INCLUDE FILES
+
+#include "suplpsylogging.h" 
+#include "suplpsyinfostoremanager.h"
+#include "suplpsycrkeys.h"
+
+
+//const TUid KCRUidSuplFW = { 0x102750A0 };
+//const TUint32 KSuplFwCId = 0x0000000c;
+
+_LIT(KFileName,"\\private\\101F97b2\\SuplPsyLocationInfo.dat");
+
+// ============================ MEMBER FUNCTIONS OF CSuplPsyInfoStoreManager ===============================
+
+// -----------------------------------------------------------------------------
+// CSuplPsyInfoStoreManager::CSuplPsyInfoStoreManager,constructor
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+
+CSuplPsyInfoStoreManager::CSuplPsyInfoStoreManager() 
+					    : iRepoSuplPsy( NULL ),
+					      iRepoSuplFw( NULL ) 
+	{
+    }
+
+// -----------------------------------------------------------------------------
+// CSuplPsyInfoStoreManager::ConstructL,two phase constuctor
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CSuplPsyInfoStoreManager::ConstructL()
+    {
+    TRACESTRING( "CSuplPsyInfoStoreManager::ConstructL start" )
+    
+    TRACESTRING( "Opening Supl psy cenrep" )
+    iRepoSuplPsy = CRepository::NewL( KCRUidSuplPsy );
+
+    
+    TRACESTRING( "Opening Supl fw cenrep" )
+    // TODO put back
+    //iRepoSuplFw = CRepository::NewL( KCRUidSuplFW );
+    
+    TRACESTRING( "Opening File server" )
+    User::LeaveIfError( iFs.Connect() );
+    iFs.CreatePrivatePath( EDriveC );
+    
+    TRACESTRING( "Set session path" )
+    User::LeaveIfError( iFs.SetSessionToPrivate( EDriveC ) );
+
+    TInt err = iFile.Open( iFs, KFileName, EFileRead|EFileWrite|EFileStream );
+    if ( err )
+        {
+        err = iFile.Create( iFs, KFileName, EFileRead|EFileWrite|EFileStream );
+        TRACESTRING( "File didnt exist,file created" )
+        }
+    User::LeaveIfError( err );
+    TRACESTRING( "CSuplPsyInfoStoreManager::ConstructL end" )
+    }
+
+// -----------------------------------------------------------------------------
+// CSuplPsyInfoStoreManager::NewL,two phase constuctor
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CSuplPsyInfoStoreManager* CSuplPsyInfoStoreManager::NewL()
+    {
+    CSuplPsyInfoStoreManager* self = new( ELeave ) CSuplPsyInfoStoreManager();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CSuplPsyInfoStoreManager::~CSuplPsyInfoStoreManager,Destructor
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CSuplPsyInfoStoreManager::~CSuplPsyInfoStoreManager()
+    {
+	TRACESTRING( "CSuplPsyInfoStoreManager::~CSuplPsyInfoStoreManager start" )
+	delete iRepoSuplPsy;
+	iRepoSuplPsy = NULL;
+	
+	delete iRepoSuplFw;
+	iRepoSuplFw = NULL;
+	
+	iFile.Close();
+    iFs.Close();
+	TRACESTRING( "CSuplPsyInfoStoreManager::~CSuplPsyInfoStoreManager end" )
+	}
+            
+// -----------------------------------------------------------------------------
+// CSuplPsyInfoStoreManager::ReadSuplPsyLocationInfo,Reads stored Location Information from file.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CSuplPsyInfoStoreManager::ReadSuplPsyLocationInfo( HPositionGenericInfo& aPosInfo )
+    {
+	TRACESTRING( "CSuplPsyInfoStoreManager::ReadSuplPsyLocationInfo start" )
+	if ( iFs.Handle() && iFile.SubSessionHandle() )
+        {
+        TPckg<HPositionGenericInfo> positionDes( aPosInfo );
+        TInt pos = 0;
+        TInt seekErr = iFile.Seek( ESeekStart,pos );
+		if( KErrNone != seekErr )
+			{
+			return seekErr;	
+			}
+		TInt err = iFile.Read( positionDes );
+		if( KErrNone == err )
+			{
+			TInt size = positionDes.Size();
+			TRACESTRING2("pos data size=%d",size )
+			if( positionDes.Size() > 0 )
+				{
+				TRACESTRING( "File contains data" )
+				return KErrNone;	
+				}	
+			TRACESTRING( "File doesnt contain any data" )
+			return KErrNotFound;
+			}
+		return err;	
+		}
+	
+	TRACESTRING( "CSuplPsyInfoStoreManager::ReadSuplPsyLocationInfo end" )
+	return KErrNotFound;
+	}  
+      
+// -----------------------------------------------------------------------------
+// CSuplPsyInfoStoreManager::WriteSuplPsyLocationInfo,Writes Location Information to file.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CSuplPsyInfoStoreManager::WriteSuplPsyLocationInfo( const HPositionGenericInfo& aPosInfo )
+    {
+	TRACESTRING( "CSuplPsyInfoStoreManager::WriteSuplPsyLocationInfo start" )
+	if ( iFs.Handle() && iFile.SubSessionHandle() )
+        {
+        TPckg<HPositionGenericInfo> positionDes( aPosInfo );
+        TInt err1 = iFile.Write( 0, positionDes );
+        TInt err2 = iFile.Flush(); 
+               
+        return ( err1 + err2 );
+        }
+    TRACESTRING( "CSuplPsyInfoStoreManager::WriteSuplPsyLocationInfo end" )
+    return KErrNotFound;       
+    }
+
+// -----------------------------------------------------------------------------
+// CSuplPsyInfoStoreManager::ReadSuplPsyCellIdInfo,Reads stored Cell Id Information from SUPL PSY CR Key.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CSuplPsyInfoStoreManager::ReadSuplPsyCellIdInfo( TCellIdInfo& aCellIdInfo )
+    {
+	TRACESTRING( "CSuplPsyInfoStoreManager::ReadSuplPsyCellIdInfo start" )
+	TPckg<TCellIdInfo> positionDes( aCellIdInfo );
+	TInt err = iRepoSuplPsy->Get( KPSYCIdInfo,positionDes );
+	TRACESTRING2("Read psy CR key error code=%d",err )
+	
+	if( KErrNone == err)
+		{
+		if( positionDes.Size() > 0 )
+			{
+			TRACESTRING( "CId data present" )
+			return KErrNone;	
+			}	
+		
+		TRACESTRING( "No CId data" )
+		return KErrNotFound; 
+		}
+		
+	TRACESTRING( "CSuplPsyInfoStoreManager::ReadSuplPsyCellIdInfo end" )
+	return err; 
+    }
+    
+// -----------------------------------------------------------------------------
+// CSuplPsyInfoStoreManager::WriteSuplPsyCellIdInfo,Writes Cell Id Information to SUPL PSY CR Key.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CSuplPsyInfoStoreManager::WriteSuplPsyCellIdInfo( const TCellIdInfo& aCellIdInfo )
+    {
+	TRACESTRING( "CSuplPsyInfoStoreManager::WriteSuplPsyCellIdInfo start" )
+	TPckg<TCellIdInfo> positionDes( aCellIdInfo );
+	return ( iRepoSuplPsy->Set( KPSYCIdInfo,positionDes ) );
+	}
+        
+// -----------------------------------------------------------------------------
+// CSuplPsyInfoStoreManager::ReadSuplFwCellIdInfo,Reads Cell Id Information from SUPL FW CR key.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CSuplPsyInfoStoreManager::ReadSuplFwCellIdInfo( TCellIdInfo& /*aCellIdInfo*/ )
+    {
+    return KErrNone;
+    //TODO temp removal put back
+   
+//	TRACESTRING( "CSuplPsyInfoStoreManager::ReadSuplFwCellIdInfoL start" )
+//	TPckg<TCellIdInfo> positionDes( aCellIdInfo );
+//	TInt err = iRepoSuplFw->Get( KSuplFwCId,positionDes ); 
+//	TRACESTRING2("Read fw CR key error code=%d",err )
+//	
+//	
+//	if( KErrNone == err)
+//		{
+//		if( positionDes.Size() > 0 )
+//			{
+//			TRACESTRING( "CId data present" )
+//			return KErrNone;	
+//			}	
+//		
+//		TRACESTRING( "No Cid data" )
+//		return KErrNotFound; 
+//		}
+//		
+//	TRACESTRING( "CSuplPsyInfoStoreManager::ReadSuplFwCellIdInfo end" )
+//    return err; 
+	}
+//  End of File