--- a/group/bld.inf Wed Jun 23 18:41:19 2010 +0300
+++ b/group/bld.inf Tue Jul 06 14:44:37 2010 +0300
@@ -17,6 +17,7 @@
#include <platform_paths.hrh>
+#include "../locationmanager/inc/locplatsupport.mmh"
#include "../metadataengine/group/bld.inf"
#include "../locationmanager/group/bld.inf"
@@ -34,7 +35,22 @@
DEFAULT
PRJ_EXPORTS
-../rom/mds.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mds.iby)
+
+#if defined(_LOC_GEOTAGGING_CELLID)
+#ifdef _LOC_REVERSEGEOCODE
+../rom/mds_cellid_reverse_geocode_enabled.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mds.iby)
+#else
+../rom/mds_cellidenabled.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mds.iby)
+#endif
+#elif defined(_LOC_REVERSEGEOCODE)
+#ifdef _LOC_GEOTAGGING_CELLID
+../rom/mds_cellid_reverse_geocode_enabled.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mds.iby)
+#else
+../rom/mds_reverse_geocode_enabled_only.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mds.iby)
+#endif
+#else
+../rom/mds.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mds.iby)
+#endif
#ifdef RD_MDS_2_5
../rom/ContentListingFramework.iby CORE_MW_LAYER_IBY_EXPORT_PATH( ContentListingFramework.iby )
--- a/harvester/blacklistclient/group/blacklistclient.mmp Wed Jun 23 18:41:19 2010 +0300
+++ b/harvester/blacklistclient/group/blacklistclient.mmp Tue Jul 06 14:44:37 2010 +0300
@@ -28,6 +28,7 @@
USERINCLUDE ../../blacklistserver/inc
USERINCLUDE ../../common/inc
USERINCLUDE ../../../inc
+USERINCLUDE ../traces
SOURCEPATH ../src
SOURCE blacklistclient.cpp
--- a/harvester/blacklistclient/src/blacklistclient.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/harvester/blacklistclient/src/blacklistclient.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -20,6 +20,11 @@
#include "mdcserializationbuffer.h"
#include "blacklistitem.h"
#include "harvesterlog.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "blacklistclientTraces.h"
+#endif
+
// ---------------------------------------------------------------------------
@@ -38,6 +43,7 @@
EXPORT_C RBlacklistClient::~RBlacklistClient()
{
WRITELOG( "RBlacklistClient::~RBlacklistClient - begin" );
+ OstTrace0( TRACE_NORMAL, RBLACKLISTCLIENT_RBLACKLISTCLIENT, "RBlacklistClient::~RBlacklistClient -begin" );
RSessionBase::Close();
iBlacklistMemoryTable.ResetAndDestroy();
@@ -46,6 +52,8 @@
iFs.Close();
WRITELOG( "RBlacklistClient::~RBlacklistClient - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_RBLACKLISTCLIENT_RBLACKLISTCLIENT, "RBlacklistClient::~RBlacklistClient - end" );
+
}
// ---------------------------------------------------------------------------
@@ -55,7 +63,8 @@
EXPORT_C TInt RBlacklistClient::Connect()
{
WRITELOG( "RBlacklistClient::Connect - begin" );
-
+ OstTrace0( TRACE_NORMAL, RBLACKLISTCLIENT_CONNECT, "RBlacklistClient::Connect - begin" );
+
iSessionOk = EFalse;
TInt error = iFs.Connect();
@@ -83,7 +92,8 @@
}
WRITELOG( "RBlacklistClient::Connect - end" );
-
+ OstTrace0( TRACE_NORMAL, DUP1_RBLACKLISTCLIENT_CONNECT, "RBlacklistClient::Connect - end" );
+
return error;
}
@@ -94,7 +104,8 @@
TVersion RBlacklistClient::Version() const
{
WRITELOG( "RBlacklistClient::Version - begin" );
-
+ OstTrace0( TRACE_NORMAL, RBLACKLISTCLIENT_VERSION, "RBlacklistClient::Version - begin" );
+
return TVersion( KBlacklistServerMajorVersion, KBlacklistServerMinorVersion,
KBlacklistServerBuildVersion );
@@ -107,6 +118,7 @@
TInt RBlacklistClient::StartServer()
{
WRITELOG( "RBlacklistClient::StartServer - begin" );
+ OstTrace0( TRACE_NORMAL, RBLACKLISTCLIENT_STARTSERVER, "RBlacklistClient::StartServer - begin" );
RProcess server;
TInt error = server.Create( KBlacklistServerExe, KNullDesC );
@@ -132,7 +144,8 @@
server.Close();
WRITELOG( "RBlacklistClient::StartServer - end" );
-
+ OstTrace0( TRACE_NORMAL, DUP1_RBLACKLISTCLIENT_STARTSERVER, "RBlacklistClient::StartServer - end" );
+
return error;
}
@@ -143,7 +156,8 @@
void RBlacklistClient::RemoveFromDBL( const TDesC& aUri, TUint32 aMediaId ) const
{
WRITELOG( "RBlacklistClient::RemoveFromDBL - begin" );
-
+ OstTrace0( TRACE_NORMAL, RBLACKLISTCLIENT_REMOVEFROMDBL, "RBlacklistClient::RemoveFromDBL - begin" );
+
TPckgBuf<TUint32> mediaIdPckg( aMediaId );
TIpcArgs ipcArgs;
@@ -154,6 +168,8 @@
User::LeaveIfError( err );
WRITELOG( "RBlacklistClient::RemoveFromDBL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_RBLACKLISTCLIENT_REMOVEFROMDBL, "RBlacklistClient::RemoveFromDBL end" );
+
}
// ---------------------------------------------------------------------------
@@ -163,7 +179,8 @@
void RBlacklistClient::DoLoadBlacklistL( TInt& aHandle ) const
{
WRITELOG( "RBlacklistClient::DoLoadBlacklistL - begin" );
-
+ OstTrace0( TRACE_NORMAL, RBLACKLISTCLIENT_DOLOADBLACKLISTL, "RBlacklistClient::DoLoadBlacklistL - begin" );
+
TPckgBuf<TInt> handleBuf;
TIpcArgs ipcArgs;
ipcArgs.Set( 1, &handleBuf );
@@ -172,6 +189,8 @@
aHandle = handleBuf();
WRITELOG( "RBlacklistClient::DoLoadBlacklistL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_RBLACKLISTCLIENT_DOLOADBLACKLISTL, "RBlacklistClient::DoLoadBlacklistL - end" );
+
}
// ---------------------------------------------------------------------------
@@ -181,7 +200,8 @@
EXPORT_C void RBlacklistClient::LoadBlacklistL()
{
WRITELOG( "RBlacklistClient::LoadBlacklistL - begin" );
-
+ OstTrace0( TRACE_NORMAL, RBLACKLISTCLIENT_LOADBLACKLISTL, "RBlacklistClient::LoadBlacklistL - begin" );
+
if ( !iSessionOk )
{
return;
@@ -238,6 +258,8 @@
CleanupStack::PopAndDestroy( name );
WRITELOG( "RBlacklistClient::LoadBlacklistL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_RBLACKLISTCLIENT_LOADBLACKLISTL, "RBlacklistClient::LoadBlacklistL - end" );
+
}
// ---------------------------------------------------------------------------
@@ -248,7 +270,8 @@
const TDesC& aUri, const TUint32 aMediaId )
{
WRITELOG( "RBlacklistClient::AddToMemoryTableL - begin" );
-
+ OstTrace0( TRACE_NORMAL, RBLACKLISTCLIENT_ADDTOMEMORYTABLEL, "RBlacklistClient::AddToMemoryTableL - begin" );
+
CBlacklistItem* item = CBlacklistItem::NewL( aModified, aUri, aMediaId );
const TInt err = iBlacklistMemoryTable.Append( item ); // ownership is transferred
@@ -259,6 +282,8 @@
WRITELOG( "RBlacklistClient::AddToMemoryTableL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_RBLACKLISTCLIENT_ADDTOMEMORYTABLEL, "RBlacklistClient::AddToMemoryTableL - end" );
+
}
// ---------------------------------------------------------------------------
@@ -268,7 +293,8 @@
void RBlacklistClient::RemoveFromMemoryTableL( const TDesC& aUri, const TUint32 aMediaId )
{
WRITELOG( "RBlacklistClient::RemoveFromMemoryTableL - begin" );
-
+ OstTrace0( TRACE_NORMAL, RBLACKLISTCLIENT_REMOVEFROMMEMORYTABLEL, "RBlacklistClient::RemoveFromMemoryTableL - begin" );
+
const TInt index = GetListIndex( aUri, aMediaId );
if ( index >= 0 )
{
@@ -278,6 +304,8 @@
}
WRITELOG( "RBlacklistClient::RemoveFromMemoryTableL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_RBLACKLISTCLIENT_REMOVEFROMMEMORYTABLEL, "RBlacklistClient::RemoveFromMemoryTableL - end" );
+
}
@@ -288,6 +316,8 @@
EXPORT_C TBool RBlacklistClient::IsBlacklistedL( const TDesC& aUri, TUint32 aMediaId, TTime /*aLastModifiedTime*/ )
{
WRITELOG( "RBlacklistClient::IsBlacklistedL - begin" );
+ OstTrace0( TRACE_NORMAL, RBLACKLISTCLIENT_ISBLACKLISTEDL, "RBlacklistClient::IsBlacklistedL - begin" );
+
if ( !iSessionOk )
{
@@ -316,6 +346,8 @@
if ( modified == fileLastModified.Int64() )
{
WRITELOG( "RBlacklistClient::IsBlacklistedL - file is blacklisted, modification time is the same" );
+ OstTrace0( TRACE_NORMAL, DUP1_RBLACKLISTCLIENT_ISBLACKLISTEDL, "RBlacklistClient::IsBlacklistedL - file is blacklisted, modification time is the same" );
+
return ETrue;
}
else
@@ -331,12 +363,16 @@
else
{
WRITELOG( "RBlacklistClient::IsBlacklistedL - file is blacklisted, no modification time found" );
+ OstTrace0( TRACE_NORMAL, DUP2_RBLACKLISTCLIENT_ISBLACKLISTEDL, "RBlacklistClient::IsBlacklistedL - file is blacklisted, no modification time found" );
+
return ETrue;
}
}
WRITELOG( "RBlacklistClient::IsBlacklistedL - end" );
+ OstTrace0( TRACE_NORMAL, DUP3_RBLACKLISTCLIENT_ISBLACKLISTEDL, "RBlacklistClient::IsBlacklistedL - end" );
+
return EFalse;
}
@@ -347,7 +383,8 @@
TInt RBlacklistClient::GetListIndex( const TDesC& aUri, TUint32 aMediaId )
{
WRITELOG( "RBlacklistClient::GetListIndex - begin" );
-
+ OstTrace0( TRACE_NORMAL, RBLACKLISTCLIENT_GETLISTINDEX, "RBlacklistClient::GetListIndex - begin" );
+
for ( TInt i( 0 ); i < iBlacklistMemoryTable.Count(); ++i )
{
if ( iBlacklistMemoryTable[i]->Compare( aUri, aMediaId ) )
@@ -357,7 +394,8 @@
}
WRITELOG( "RBlacklistClient::GetListIndex - end" );
-
+ OstTrace0( TRACE_NORMAL, DUP1_RBLACKLISTCLIENT_GETLISTINDEX, "RBlacklistClient::GetListIndex - end" );
+
return KErrNotFound;
}
@@ -369,7 +407,8 @@
EXPORT_C void RBlacklistClient::AddL( const TDesC& aUri, TUint32 aMediaId, TTime aLastModifiedTime ) const
{
WRITELOG( "RBlacklistClient::AddL - begin" );
-
+ OstTrace0( TRACE_NORMAL, RBLACKLISTCLIENT_ADDL, "RBlacklistClient::AddL - begin" );
+
TPckgC<TUint32> mediaIdPckg( aMediaId );
TPckgC<TTime> lastModifiedTimePckg( aLastModifiedTime );
@@ -382,6 +421,8 @@
User::LeaveIfError( err );
WRITELOG( "RBlacklistClient::AddL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_RBLACKLISTCLIENT_ADDL, "RBlacklistClient::AddL - end" );
+
}
@@ -392,7 +433,8 @@
EXPORT_C void RBlacklistClient::RemoveL( const TDesC& aUri, TUint32 aMediaId ) const
{
WRITELOG( "RBlacklistClient::RemoveL - begin" );
-
+ OstTrace0( TRACE_NORMAL, RBLACKLISTCLIENT_REMOVEL, "RBlacklistClient::RemoveL - begin" );
+
TPckgBuf<TUint32> mediaIdPckg( aMediaId );
TIpcArgs ipcArgs;
@@ -403,6 +445,8 @@
User::LeaveIfError( err );
WRITELOG( "RBlacklistClient::RemoveL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_RBLACKLISTCLIENT_REMOVEL, "RBlacklistClient::RemoveL - end" );
+
}
// ---------------------------------------------------------------------------
@@ -412,7 +456,8 @@
EXPORT_C void RBlacklistClient::CloseDBL()
{
WRITELOG( "RBlacklistClient::CloseDBL - begin" );
-
+ OstTrace0( TRACE_NORMAL, RBLACKLISTCLIENT_CLOSEDBL, "RBlacklistClient::CloseDBL - begin" );
+
if ( !iSessionOk )
{
User::Leave( KErrDisconnected );
@@ -423,6 +468,8 @@
}
WRITELOG( "RBlacklistClient::CloseDBL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_RBLACKLISTCLIENT_CLOSEDBL, "RBlacklistClient::CloseDBL- end" );
+
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/blacklistclient/traces/OstTraceDefinitions.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,7 @@
+#ifndef __OSTTRACEDEFINITIONS_H__
+#define __OSTTRACEDEFINITIONS_H__
+// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
+// REMOVE BEFORE CHECK-IN TO VERSION CONTROL
+#define OST_TRACE_COMPILER_IN_USE
+#include <opensystemtrace.h>
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/blacklistclient/traces/blacklistclientTraces.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,43 @@
+// Created by TraceCompiler 2.2.3
+// DO NOT EDIT, CHANGES WILL BE LOST
+
+#ifndef __BLACKLISTCLIENTTRACES_H__
+#define __BLACKLISTCLIENTTRACES_H__
+
+#define KOstTraceComponentID 0x2001b2ed
+
+#define RBLACKLISTCLIENT_RBLACKLISTCLIENT 0x860001
+#define DUP1_RBLACKLISTCLIENT_RBLACKLISTCLIENT 0x860002
+#define RBLACKLISTCLIENT_CONNECT 0x860003
+#define DUP1_RBLACKLISTCLIENT_CONNECT 0x860004
+#define RBLACKLISTCLIENT_VERSION 0x860005
+#define RBLACKLISTCLIENT_STARTSERVER 0x860006
+#define DUP1_RBLACKLISTCLIENT_STARTSERVER 0x860007
+#define RBLACKLISTCLIENT_REMOVEFROMDBL 0x860008
+#define DUP1_RBLACKLISTCLIENT_REMOVEFROMDBL 0x860009
+#define RBLACKLISTCLIENT_DOLOADBLACKLISTL 0x86000a
+#define DUP1_RBLACKLISTCLIENT_DOLOADBLACKLISTL 0x86000b
+#define RBLACKLISTCLIENT_LOADBLACKLISTL 0x86000c
+#define DUP1_RBLACKLISTCLIENT_LOADBLACKLISTL 0x86000d
+#define RBLACKLISTCLIENT_ADDTOMEMORYTABLEL 0x86000e
+#define DUP1_RBLACKLISTCLIENT_ADDTOMEMORYTABLEL 0x86000f
+#define RBLACKLISTCLIENT_REMOVEFROMMEMORYTABLEL 0x860010
+#define DUP1_RBLACKLISTCLIENT_REMOVEFROMMEMORYTABLEL 0x860011
+#define RBLACKLISTCLIENT_ISBLACKLISTEDL 0x860012
+#define DUP1_RBLACKLISTCLIENT_ISBLACKLISTEDL 0x860013
+#define DUP2_RBLACKLISTCLIENT_ISBLACKLISTEDL 0x860014
+#define DUP3_RBLACKLISTCLIENT_ISBLACKLISTEDL 0x860015
+#define RBLACKLISTCLIENT_GETLISTINDEX 0x860016
+#define DUP1_RBLACKLISTCLIENT_GETLISTINDEX 0x860017
+#define RBLACKLISTCLIENT_ADDL 0x860018
+#define DUP1_RBLACKLISTCLIENT_ADDL 0x860019
+#define RBLACKLISTCLIENT_REMOVEL 0x86001a
+#define DUP1_RBLACKLISTCLIENT_REMOVEL 0x86001b
+#define RBLACKLISTCLIENT_CLOSEDBL 0x86001c
+#define DUP1_RBLACKLISTCLIENT_CLOSEDBL 0x86001d
+
+
+#endif
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/blacklistclient/traces/fixed_id.definitions Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,31 @@
+#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
+[GROUP]TRACE_NORMAL=0x86
+[TRACE]TRACE_NORMAL[0x86]_DUP1_RBLACKLISTCLIENT_ADDL=0x19
+[TRACE]TRACE_NORMAL[0x86]_DUP1_RBLACKLISTCLIENT_ADDTOMEMORYTABLEL=0xf
+[TRACE]TRACE_NORMAL[0x86]_DUP1_RBLACKLISTCLIENT_CLOSEDBL=0x1d
+[TRACE]TRACE_NORMAL[0x86]_DUP1_RBLACKLISTCLIENT_CONNECT=0x4
+[TRACE]TRACE_NORMAL[0x86]_DUP1_RBLACKLISTCLIENT_DOLOADBLACKLISTL=0xb
+[TRACE]TRACE_NORMAL[0x86]_DUP1_RBLACKLISTCLIENT_GETLISTINDEX=0x17
+[TRACE]TRACE_NORMAL[0x86]_DUP1_RBLACKLISTCLIENT_ISBLACKLISTEDL=0x13
+[TRACE]TRACE_NORMAL[0x86]_DUP1_RBLACKLISTCLIENT_LOADBLACKLISTL=0xd
+[TRACE]TRACE_NORMAL[0x86]_DUP1_RBLACKLISTCLIENT_RBLACKLISTCLIENT=0x2
+[TRACE]TRACE_NORMAL[0x86]_DUP1_RBLACKLISTCLIENT_REMOVEFROMDBL=0x9
+[TRACE]TRACE_NORMAL[0x86]_DUP1_RBLACKLISTCLIENT_REMOVEFROMMEMORYTABLEL=0x11
+[TRACE]TRACE_NORMAL[0x86]_DUP1_RBLACKLISTCLIENT_REMOVEL=0x1b
+[TRACE]TRACE_NORMAL[0x86]_DUP1_RBLACKLISTCLIENT_STARTSERVER=0x7
+[TRACE]TRACE_NORMAL[0x86]_DUP2_RBLACKLISTCLIENT_ISBLACKLISTEDL=0x14
+[TRACE]TRACE_NORMAL[0x86]_DUP3_RBLACKLISTCLIENT_ISBLACKLISTEDL=0x15
+[TRACE]TRACE_NORMAL[0x86]_RBLACKLISTCLIENT_ADDL=0x18
+[TRACE]TRACE_NORMAL[0x86]_RBLACKLISTCLIENT_ADDTOMEMORYTABLEL=0xe
+[TRACE]TRACE_NORMAL[0x86]_RBLACKLISTCLIENT_CLOSEDBL=0x1c
+[TRACE]TRACE_NORMAL[0x86]_RBLACKLISTCLIENT_CONNECT=0x3
+[TRACE]TRACE_NORMAL[0x86]_RBLACKLISTCLIENT_DOLOADBLACKLISTL=0xa
+[TRACE]TRACE_NORMAL[0x86]_RBLACKLISTCLIENT_GETLISTINDEX=0x16
+[TRACE]TRACE_NORMAL[0x86]_RBLACKLISTCLIENT_ISBLACKLISTEDL=0x12
+[TRACE]TRACE_NORMAL[0x86]_RBLACKLISTCLIENT_LOADBLACKLISTL=0xc
+[TRACE]TRACE_NORMAL[0x86]_RBLACKLISTCLIENT_RBLACKLISTCLIENT=0x1
+[TRACE]TRACE_NORMAL[0x86]_RBLACKLISTCLIENT_REMOVEFROMDBL=0x8
+[TRACE]TRACE_NORMAL[0x86]_RBLACKLISTCLIENT_REMOVEFROMMEMORYTABLEL=0x10
+[TRACE]TRACE_NORMAL[0x86]_RBLACKLISTCLIENT_REMOVEL=0x1a
+[TRACE]TRACE_NORMAL[0x86]_RBLACKLISTCLIENT_STARTSERVER=0x6
+[TRACE]TRACE_NORMAL[0x86]_RBLACKLISTCLIENT_VERSION=0x5
--- a/harvester/blacklistserver/group/blacklistserver.mmp Wed Jun 23 18:41:19 2010 +0300
+++ b/harvester/blacklistserver/group/blacklistserver.mmp Tue Jul 06 14:44:37 2010 +0300
@@ -31,6 +31,7 @@
USERINCLUDE ../../common/inc
USERINCLUDE ../../../metadataengine/server/inc
USERINCLUDE ../../../inc
+USERINCLUDE ../traces
SOURCEPATH ../src
SOURCE blacklistserver.cpp
--- a/harvester/blacklistserver/src/blacklistserver.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/harvester/blacklistserver/src/blacklistserver.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -24,6 +24,11 @@
#include "mdcserializationbuffer.h"
#include <pathinfo.h>
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "blacklistserverTraces.h"
+#endif
+
// Security policy
const TUint KServerPolicyRangeCount = 6;
@@ -67,7 +72,8 @@
const RMessage2& aMsg, TInt& /*aAction*/, TSecurityInfo& /*aMissing*/ )
{
WRITELOG( "CBlacklistServer::CustomSecurityCheckL - begin" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_CUSTOMSECURITYCHECKL, "CBlacklistServer::CustomSecurityCheckL -begin" );
+
CPolicyServer::TCustomResult securityCheckResult = EFail;
switch ( aMsg.Function() )
@@ -92,7 +98,8 @@
}
WRITELOG( "CBlacklistServer::CustomSecurityCheckL - end" );
-
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_CUSTOMSECURITYCHECKL, "CBlacklistServer::CustomSecurityCheckL- end" );
+
return securityCheckResult;
}
@@ -105,7 +112,8 @@
const RMessage2& /*aMsg*/, TInt /*aAction*/, const TSecurityInfo& /*aMissing*/ )
{
WRITELOG( "CBlacklistServer::CustomFailureActionL" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_CUSTOMFAILUREACTIONL, "CBlacklistServer::CustomFailureActionL" );
+
// Not used
return EFail;
}
@@ -117,11 +125,14 @@
CBlacklistServer* CBlacklistServer::NewL()
{
WRITELOG( "CBlacklistServer::NewL - begin" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_NEWL, "CBlacklistServer::NewL -begin" );
+
CBlacklistServer* self = NewLC();
CleanupStack::Pop( self );
WRITELOG( "CBlacklistServer::NewL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_NEWL, "CBlacklistServer::NewL - end" );
+
return self;
}
@@ -132,12 +143,15 @@
CBlacklistServer* CBlacklistServer::NewLC()
{
WRITELOG( "CBlacklistServer::NewLC - begin" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_NEWLC, "CBlacklistServer::NewLC -begin" );
+
CBlacklistServer* self = new( ELeave ) CBlacklistServer();
CleanupStack::PushL( self );
self->ConstructL();
WRITELOG( "CBlacklistServer::NewLC - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_NEWLC, "CBlacklistServer::NewLC - end" );
+
return self;
}
@@ -153,12 +167,15 @@
void CBlacklistServer::ConstructL()
{
WRITELOG( "CBlacklistServer::ConstructL - begin" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_CONSTRUCTL, "CBlacklistServer::ConstructL - begin" );
+
StartL( KBlacklistServerName );
iSqLiteConnection = CMdSSqLiteConnection::NewL();
WRITELOG( "CBlacklistServer::ConstructL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_CONSTRUCTL, "CBlacklistServer::ConstructL -end" );
+
}
// ---------------------------------------------------------------------------
@@ -168,6 +185,7 @@
CBlacklistServer::~CBlacklistServer()
{
WRITELOG( "CBlacklistServer::~CBlacklistServer - begin" );
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_CBLACKLISTSERVER, "CBlacklistServer::~CBlacklistServer -begin" );
if ( iDatabaseOpen )
{
@@ -201,6 +219,7 @@
delete iSqLiteConnection;
WRITELOG( "CBlacklistServer::~CBlacklistServer - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_CBLACKLISTSERVER, "CBlacklistServer::~CBlacklistServer -end " );
}
// ---------------------------------------------------------------------------
@@ -210,7 +229,8 @@
void CBlacklistServer::CloseDB()
{
WRITELOG( "CBlacklistServer::CloseDB - begin" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_CLOSEDB, "CBlacklistServer::CloseDB -begin" );
+
if ( iDatabaseOpen )
{
iSqLiteConnection->CloseDb();
@@ -218,6 +238,8 @@
}
WRITELOG( "CBlacklistServer::CloseDB - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_CLOSEDB, "CBlacklistServer::CloseDB - end" );
+
}
// ---------------------------------------------------------------------------
@@ -227,6 +249,8 @@
void CBlacklistServer::ExeMainL()
{
WRITELOG( "CBlacklistServer::ExeMainL - begin" );
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_EXEMAINL, "CBlacklistServer::ExeMainL -begin" );
+
User::LeaveIfError( User::RenameThread(KBlacklistServerName) );
// Construct active scheduler
CActiveScheduler* activeScheduler = new ( ELeave ) CActiveScheduler;
@@ -247,6 +271,8 @@
CleanupStack::PopAndDestroy( 2, activeScheduler );
WRITELOG( "CBlacklistServer::ExeMainL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_EXEMAINL, "CBlacklistServer::ExeMainL - end" );
+
}
// ---------------------------------------------------------------------------
@@ -256,6 +282,8 @@
TInt E32Main()
{
WRITELOG( "CBlacklistServer::E32Main - begin" );
+ OstTrace0( TRACE_NORMAL, _E32MAIN, "CBlacklistServer::E32Main - begin" );
+
__UHEAP_MARK;
CTrapCleanup* cleanup=CTrapCleanup::New();
TInt result = KErrNoMemory;
@@ -266,6 +294,8 @@
}
__UHEAP_MARKEND;
WRITELOG( "CBlacklistServer::E32Main - end" );
+ OstTrace0( TRACE_NORMAL, DUP1__E32MAIN, "CBlacklistServer::E32Main -end" );
+
return result;
}
@@ -277,6 +307,7 @@
void CBlacklistServer::OpenDatabaseL()
{
WRITELOG( "CBlacklistServer::OpenDatabaseL - begin" );
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_OPENDATABASEL, "CBlacklistServer::OpenDatabaseL - begin" );
if ( iDatabaseOpen )
{
@@ -307,6 +338,8 @@
SerializeToSharedMemoryL();
WRITELOG( "CBlacklistServer::OpenDatabaseL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_OPENDATABASEL, "CBlacklistServer::OpenDatabaseL - end" );
+
}
// ---------------------------------------------------------------------------
@@ -316,7 +349,8 @@
void CBlacklistServer::SerializeToSharedMemoryL()
{
WRITELOG( "CBlacklistServer::SerializeToSharedMemoryL - begin" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_SERIALIZETOSHAREDMEMORYL, "CBlacklistServer::SerializeToSharedMemoryL - begin" );
+
TUint32 bufferSize = 0;
TUint32 blacklistMemoryTableCount = iBlacklistMemoryTable.Count();
@@ -365,6 +399,8 @@
iBlacklistMemoryTable.ResetAndDestroy();
WRITELOG( "CBlacklistServer::SerializeToSharedMemoryL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_SERIALIZETOSHAREDMEMORYL, "CBlacklistServer::SerializeToSharedMemoryL- end" );
+
}
// ---------------------------------------------------------------------------
@@ -374,6 +410,8 @@
TInt CBlacklistServer::MemoryHandle()
{
WRITELOG( "CBlacklistServer::MemoryHandle" );
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_MEMORYHANDLE, "CBlacklistServer::MemoryHandle" );
+
return iHandle;
}
@@ -384,7 +422,8 @@
void CBlacklistServer::LoadDatabaseToMemoryL()
{
WRITELOG( "CBlacklistServer::LoadDatabaseToMemoryL - begin" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_LOADDATABASETOMEMORYL, "CBlacklistServer::LoadDatabaseToMemoryL - begin" );
+
iBlacklistMemoryTable.ResetAndDestroy();
RMdsStatement statement;
CleanupClosePushL( statement );
@@ -415,6 +454,8 @@
CleanupStack::PopAndDestroy( &statement );
WRITELOG( "CBlacklistServer::LoadDatabaseToMemoryL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_LOADDATABASETOMEMORYL, "CBlacklistServer::LoadDatabaseToMemoryL - end" );
+
}
// ---------------------------------------------------------------------------
@@ -424,7 +465,8 @@
void CBlacklistServer::CreateBlacklistTableL()
{
WRITELOG( "CBlacklistServer::CreateBlacklistTableL - begin" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_CREATEBLACKLISTTABLEL, "CBlacklistServer::CreateBlacklistTableL - begin" );
+
RRowData emptyRowData;
CleanupClosePushL( emptyRowData );
iSqLiteConnection->ExecuteL( KDropBlacklistTable, emptyRowData );
@@ -432,6 +474,8 @@
CleanupStack::PopAndDestroy( &emptyRowData );
WRITELOG( "CBlacklistServer::CreateBlacklistTableL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_CREATEBLACKLISTTABLEL, "CBlacklistServer::CreateBlacklistTableL - end" );
+
}
@@ -444,7 +488,8 @@
{
WRITELOG( "CBlacklistServer::AddToMemoryTableL - begin" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_ADDTOMEMORYTABLEL, "CBlacklistServer::AddToMemoryTableL - begin" );
+
CBlacklistItem* item = CBlacklistItem::NewL( aModified, aUri, aMediaId );
const TInt err = iBlacklistMemoryTable.Append( item ); // ownership is transferred
if ( err != KErrNone )
@@ -453,6 +498,8 @@
}
WRITELOG( "CBlacklistServer::AddToMemoryTableL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_ADDTOMEMORYTABLEL, "CBlacklistServer::AddToMemoryTableL - end" );
+
}
// ---------------------------------------------------------------------------
@@ -464,7 +511,8 @@
{
WRITELOG( "CBlacklistServer::RemoveFromMemoryTable - begin" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_REMOVEFROMMEMORYTABLE, "CBlacklistServer::RemoveFromMemoryTable - begin" );
+
const TInt index = GetMemoryTableIndex( aUri, aMediaId );
if ( index >= 0 )
{
@@ -474,6 +522,8 @@
}
WRITELOG( "CBlacklistServer::RemoveFromMemoryTable - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_REMOVEFROMMEMORYTABLE, "CBlacklistServer::RemoveFromMemoryTable - end" );
+
}
// ---------------------------------------------------------------------------
@@ -483,7 +533,8 @@
TInt CBlacklistServer::GetMemoryTableIndex( const TDesC& aUri, TUint32 aMediaId )
{
WRITELOG( "CBlacklistServer::GetMemoryTableIndex - begin" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_GETMEMORYTABLEINDEX, "CBlacklistServer::GetMemoryTableIndex - begin" );
+
for ( TInt i( 0 ); i < iBlacklistMemoryTable.Count(); ++i )
{
if ( iBlacklistMemoryTable[i]->Compare( aUri, aMediaId ) )
@@ -493,6 +544,8 @@
}
WRITELOG( "CBlacklistServer::GetMemoryTableIndex - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_GETMEMORYTABLEINDEX, "CBlacklistServer::GetMemoryTableIndex - end" );
+
return KErrNotFound;
}
@@ -503,7 +556,8 @@
TBool CBlacklistServer::TableExistsL()
{
WRITELOG( "CBlacklistServer::TableExistsL - begin" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_TABLEEXISTSL, "CBlacklistServer::TableExistsL - begin" );
+
RMdsStatement validationQuery;
CleanupClosePushL( validationQuery );
RRowData emptyRowData;
@@ -515,7 +569,8 @@
CleanupStack::PopAndDestroy( &validationQuery ); // validationQuery
WRITELOG( "CBlacklistServer::TableExistsL - end" );
-
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_TABLEEXISTSL, "CBlacklistServer::TableExistsL - end" );
+
return ( err == KErrNone );
}
@@ -526,7 +581,8 @@
CSession2* CBlacklistServer::NewSessionL( const TVersion& aVersion, const RMessage2& /*aMessage*/ ) const
{
WRITELOG( "CBlacklistServer::NewSessionL - begin" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_NEWSESSIONL, "CBlacklistServer::NewSessionL - begin" );
+
// Check we are the right version
if ( !User::QueryVersionSupported( TVersion( KBlacklistServerMajorVersion,
KBlacklistServerMinorVersion,
@@ -537,7 +593,8 @@
}
WRITELOG( "CBlacklistServer::NewSessionL - end" );
-
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_NEWSESSIONL, "CBlacklistServer::NewSessionL - end" );
+
return new( ELeave ) CBlacklistSession;
}
@@ -548,7 +605,8 @@
TInt CBlacklistServer::RunError( TInt aError )
{
WRITELOG1( "CBlacklistServer::RunError - begin, error %d", aError );
-
+ OstTrace1( TRACE_NORMAL, CBLACKLISTSERVER_RUNERROR, "CBlacklistServer::RunError - begin, error %d", aError );
+
// Bad descriptor implies bad client
if ( aError == KErrBadDescriptor )
{
@@ -563,7 +621,8 @@
ReStart();
WRITELOG( "CBlacklistServer::RunError - end" );
-
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_RUNERROR, "CBlacklistServer::RunError - end" );
+
return KErrNone;
}
@@ -574,6 +633,8 @@
void CBlacklistServer::AddSession()
{
WRITELOG( "CBlacklistServer::AddSession" );
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_ADDSESSION, "CBlacklistServer::AddSession" );
+
++iSessionCount;
}
@@ -584,7 +645,8 @@
void CBlacklistServer::RemoveSession()
{
WRITELOG( "CBlacklistServer::RemoveSession - begin" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_REMOVESESSION, "CBlacklistServer::RemoveSession - begin" );
+
--iSessionCount;
#ifdef _DEBUG
@@ -593,6 +655,9 @@
TRAP_IGNORE ( WriteAllDataToDBL() );
#endif
WRITELOG1( "CBlacklistServer::RemoveSession - err %d", err );
+#ifdef _DEBUG
+ OstTrace1( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_REMOVESESSION, "CBlacklistServer::RemoveSession - err %d", err );
+#endif
if ( iSessionCount == 0 )
{
@@ -600,6 +665,8 @@
}
WRITELOG( "CBlacklistServer::RemoveSession - end" );
+ OstTrace0( TRACE_NORMAL, DUP2_CBLACKLISTSERVER_REMOVESESSION, "CBlacklistServer::RemoveSession - end" );
+
}
// ---------------------------------------------------------------------------
@@ -609,10 +676,13 @@
void CBlacklistServer::AddL( const TUint32& mediaId, const TDesC& aUri, const TTime& aLastModifiedTime )
{
WRITELOG( "CBlacklistServer::AddL - begin" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_ADDL, "CBlacklistServer::AddL - begin" );
+
AddToMemoryTableL( aLastModifiedTime.Int64(), aUri, mediaId );
WRITELOG( "CBlacklistServer::AddL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_ADDL, "CBlacklistServer::AddL - end" );
+
}
// ---------------------------------------------------------------------------
@@ -622,10 +692,13 @@
void CBlacklistServer::RemoveL( const TUint32& mediaId, const TDesC& aUri )
{
WRITELOG( "CBlacklistServer::RemoveL - begin" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_REMOVEL, "CBlacklistServer::RemoveL - begin" );
+
RemoveFromMemoryTable( aUri, mediaId );
WRITELOG( "CBlacklistServer::RemoveL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_REMOVEL, "CBlacklistServer::RemoveL - end" );
+
}
// ---------------------------------------------------------------------------
@@ -635,6 +708,7 @@
void CBlacklistServer::RemoveFromDBL( const TDesC& aUri, const TUint32 aMediaId )
{
WRITELOG( "CBlacklistServer::RemoveFromDBL - begin" );
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_REMOVEFROMDBL, "CBlacklistServer::RemoveFromDBL - begin" );
RRowData* variables = new ( ELeave ) RRowData();
CleanupStack::PushL( variables );
@@ -666,6 +740,8 @@
}
WRITELOG( "CBlacklistServer::RemoveFromDBL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_REMOVEFROMDBL, "CBlacklistServer::RemoveFromDBL - end" );
+
}
@@ -677,7 +753,8 @@
const TInt64& aLastModifiedTime )
{
WRITELOG( "CBlacklistServer::AddToDBL - begin" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_ADDTODBL, "CBlacklistServer::AddToDBL - begin" );
+
RRowData* rowData = new ( ELeave ) RRowData();
CleanupStack::PushL( rowData );
CleanupClosePushL( *rowData );
@@ -711,6 +788,8 @@
}
WRITELOG( "CBlacklistServer::AddToDBL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_ADDTODBL, "CBlacklistServer::AddToDBL - end" );
+
}
// ---------------------------------------------------------------------------
@@ -720,13 +799,16 @@
void CBlacklistServer::WriteAllDataToDBL()
{
WRITELOG( "CBlacklistServer::WriteAllDataToDBL - begin" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_WRITEALLDATATODBL, "CBlacklistServer::WriteAllDataToDBL - begin" );
+
for ( TInt i( 0 ); i < iBlacklistMemoryTable.Count(); ++i )
{
AddToDBL( *iBlacklistMemoryTable[i]->Uri(), iBlacklistMemoryTable[i]->MediaId(), iBlacklistMemoryTable[i]->Modified() );
}
WRITELOG( "CBlacklistServer::WriteAllDataToDBL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_WRITEALLDATATODBL, "CBlacklistServer::WriteAllDataToDBL - end" );
+
}
// ---------------------------------------------------------------------------
@@ -736,7 +818,8 @@
void CBlacklistServer::CommitBufferedItemsL()
{
WRITELOG( "CBlacklistServer::CommitBufferedItemsL - begin" );
-
+ OstTrace0( TRACE_NORMAL, CBLACKLISTSERVER_COMMITBUFFEREDITEMSL, "CBlacklistServer::CommitBufferedItemsL - begin" );
+
// First, removed items
const TInt removedCount( iBufferedRemoveItems.Count() );
for ( TInt i( 0 ); i < removedCount; ++i )
@@ -754,6 +837,8 @@
}
WRITELOG( "CBlacklistServer::CommitBufferedItemsL - end" );
+ OstTrace0( TRACE_NORMAL, DUP1_CBLACKLISTSERVER_COMMITBUFFEREDITEMSL, "CBlacklistServer::CommitBufferedItemsL - end" );
+
}
// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/blacklistserver/traces/OstTraceDefinitions.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,7 @@
+#ifndef __OSTTRACEDEFINITIONS_H__
+#define __OSTTRACEDEFINITIONS_H__
+// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
+// REMOVE BEFORE CHECK-IN TO VERSION CONTROL
+#define OST_TRACE_COMPILER_IN_USE
+#include <opensystemtrace.h>
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/blacklistserver/traces/blacklistserverTraces.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,68 @@
+// Created by TraceCompiler 2.2.3
+// DO NOT EDIT, CHANGES WILL BE LOST
+
+#ifndef __BLACKLISTSERVERTRACES_H__
+#define __BLACKLISTSERVERTRACES_H__
+
+#define KOstTraceComponentID 0x2001b2eb
+
+#define CBLACKLISTSERVER_CUSTOMSECURITYCHECKL 0x860001
+#define DUP1_CBLACKLISTSERVER_CUSTOMSECURITYCHECKL 0x860002
+#define CBLACKLISTSERVER_CUSTOMFAILUREACTIONL 0x860003
+#define CBLACKLISTSERVER_NEWL 0x860004
+#define DUP1_CBLACKLISTSERVER_NEWL 0x860005
+#define CBLACKLISTSERVER_NEWLC 0x860006
+#define DUP1_CBLACKLISTSERVER_NEWLC 0x860007
+#define CBLACKLISTSERVER_CONSTRUCTL 0x860008
+#define DUP1_CBLACKLISTSERVER_CONSTRUCTL 0x860009
+#define CBLACKLISTSERVER_CBLACKLISTSERVER 0x86000a
+#define DUP1_CBLACKLISTSERVER_CBLACKLISTSERVER 0x86000b
+#define CBLACKLISTSERVER_CLOSEDB 0x86000c
+#define DUP1_CBLACKLISTSERVER_CLOSEDB 0x86000d
+#define CBLACKLISTSERVER_EXEMAINL 0x86000e
+#define DUP1_CBLACKLISTSERVER_EXEMAINL 0x86000f
+#define _E32MAIN 0x860010
+#define DUP1__E32MAIN 0x860011
+#define CBLACKLISTSERVER_OPENDATABASEL 0x860012
+#define DUP1_CBLACKLISTSERVER_OPENDATABASEL 0x860013
+#define CBLACKLISTSERVER_SERIALIZETOSHAREDMEMORYL 0x860014
+#define DUP1_CBLACKLISTSERVER_SERIALIZETOSHAREDMEMORYL 0x860015
+#define CBLACKLISTSERVER_MEMORYHANDLE 0x860016
+#define CBLACKLISTSERVER_LOADDATABASETOMEMORYL 0x860017
+#define DUP1_CBLACKLISTSERVER_LOADDATABASETOMEMORYL 0x860018
+#define CBLACKLISTSERVER_CREATEBLACKLISTTABLEL 0x860019
+#define DUP1_CBLACKLISTSERVER_CREATEBLACKLISTTABLEL 0x86001a
+#define CBLACKLISTSERVER_ADDTOMEMORYTABLEL 0x86001b
+#define DUP1_CBLACKLISTSERVER_ADDTOMEMORYTABLEL 0x86001c
+#define CBLACKLISTSERVER_REMOVEFROMMEMORYTABLE 0x86001d
+#define DUP1_CBLACKLISTSERVER_REMOVEFROMMEMORYTABLE 0x86001e
+#define CBLACKLISTSERVER_GETMEMORYTABLEINDEX 0x86001f
+#define DUP1_CBLACKLISTSERVER_GETMEMORYTABLEINDEX 0x860020
+#define CBLACKLISTSERVER_TABLEEXISTSL 0x860021
+#define DUP1_CBLACKLISTSERVER_TABLEEXISTSL 0x860022
+#define CBLACKLISTSERVER_NEWSESSIONL 0x860023
+#define DUP1_CBLACKLISTSERVER_NEWSESSIONL 0x860024
+#define CBLACKLISTSERVER_RUNERROR 0x860025
+#define DUP1_CBLACKLISTSERVER_RUNERROR 0x860026
+#define CBLACKLISTSERVER_ADDSESSION 0x860027
+#define CBLACKLISTSERVER_REMOVESESSION 0x860028
+#define DUP1_CBLACKLISTSERVER_REMOVESESSION 0x860029
+#define DUP2_CBLACKLISTSERVER_REMOVESESSION 0x86002a
+#define CBLACKLISTSERVER_ADDL 0x86002b
+#define DUP1_CBLACKLISTSERVER_ADDL 0x86002c
+#define CBLACKLISTSERVER_REMOVEL 0x86002d
+#define DUP1_CBLACKLISTSERVER_REMOVEL 0x86002e
+#define CBLACKLISTSERVER_REMOVEFROMDBL 0x86002f
+#define DUP1_CBLACKLISTSERVER_REMOVEFROMDBL 0x860030
+#define CBLACKLISTSERVER_ADDTODBL 0x860031
+#define DUP1_CBLACKLISTSERVER_ADDTODBL 0x860032
+#define CBLACKLISTSERVER_WRITEALLDATATODBL 0x860033
+#define DUP1_CBLACKLISTSERVER_WRITEALLDATATODBL 0x860034
+#define CBLACKLISTSERVER_COMMITBUFFEREDITEMSL 0x860035
+#define DUP1_CBLACKLISTSERVER_COMMITBUFFEREDITEMSL 0x860036
+
+
+#endif
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/blacklistserver/traces/fixed_id.definitions Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,56 @@
+#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
+[GROUP]TRACE_NORMAL=0x86
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_ADDL=0x2b
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_ADDSESSION=0x27
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_ADDTODBL=0x31
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_ADDTOMEMORYTABLEL=0x1b
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_CBLACKLISTSERVER=0xa
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_CLOSEDB=0xc
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_COMMITBUFFEREDITEMSL=0x35
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_CONSTRUCTL=0x8
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_CREATEBLACKLISTTABLEL=0x19
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_CUSTOMFAILUREACTIONL=0x3
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_CUSTOMSECURITYCHECKL=0x1
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_EXEMAINL=0xe
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_GETMEMORYTABLEINDEX=0x1f
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_LOADDATABASETOMEMORYL=0x17
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_MEMORYHANDLE=0x16
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_NEWL=0x4
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_NEWLC=0x6
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_NEWSESSIONL=0x23
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_OPENDATABASEL=0x12
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_REMOVEFROMDBL=0x2f
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_REMOVEFROMMEMORYTABLE=0x1d
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_REMOVEL=0x2d
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_REMOVESESSION=0x28
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_RUNERROR=0x25
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_SERIALIZETOSHAREDMEMORYL=0x14
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_TABLEEXISTSL=0x21
+[TRACE]TRACE_NORMAL[0x86]_CBLACKLISTSERVER_WRITEALLDATATODBL=0x33
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_ADDL=0x2c
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_ADDTODBL=0x32
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_ADDTOMEMORYTABLEL=0x1c
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_CBLACKLISTSERVER=0xb
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_CLOSEDB=0xd
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_COMMITBUFFEREDITEMSL=0x36
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_CONSTRUCTL=0x9
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_CREATEBLACKLISTTABLEL=0x1a
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_CUSTOMSECURITYCHECKL=0x2
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_EXEMAINL=0xf
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_GETMEMORYTABLEINDEX=0x20
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_LOADDATABASETOMEMORYL=0x18
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_NEWL=0x5
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_NEWLC=0x7
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_NEWSESSIONL=0x24
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_OPENDATABASEL=0x13
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_REMOVEFROMDBL=0x30
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_REMOVEFROMMEMORYTABLE=0x1e
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_REMOVEL=0x2e
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_REMOVESESSION=0x29
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_RUNERROR=0x26
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_SERIALIZETOSHAREDMEMORYL=0x15
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_TABLEEXISTSL=0x22
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CBLACKLISTSERVER_WRITEALLDATATODBL=0x34
+[TRACE]TRACE_NORMAL[0x86]_DUP1__E32MAIN=0x11
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CBLACKLISTSERVER_REMOVESESSION=0x2a
+[TRACE]TRACE_NORMAL[0x86]__E32MAIN=0x10
--- a/harvester/client/group/harvesterclient.mmp Wed Jun 23 18:41:19 2010 +0300
+++ b/harvester/client/group/harvesterclient.mmp Tue Jul 06 14:44:37 2010 +0300
@@ -37,6 +37,7 @@
USERINCLUDE ../../../inc
USERINCLUDE ../../common/inc
USERINCLUDE ../inc
+USERINCLUDE ../traces
SOURCEPATH ../src
SOURCE harvesterclient.cpp
--- a/harvester/client/src/harvesterclient.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/harvester/client/src/harvesterclient.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -26,6 +26,10 @@
#include "mdsutils.h"
#include "harvesterrequestactive.h"
#include "mdscommoninternal.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "harvesterclientTraces.h"
+#endif
/** @var Message slots */
const TInt KDefaultMessageSlots = -1; // Global pool
@@ -48,6 +52,8 @@
EXPORT_C RHarvesterClient::RHarvesterClient() : RSessionBase()
{
WRITELOG( "RHarvesterClient::RHarvesterClient() - Constructor" );
+ OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_RHARVESTERCLIENT, "RHarvesterClient::RHarvesterClient" );
+
iHarvesterClientAO = NULL;
iObserver = NULL;
iHEO = NULL;
@@ -61,7 +67,9 @@
EXPORT_C TInt RHarvesterClient::Connect()
{
WRITELOG( "RHarvesterClient::Connect()" );
-
+ OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_CONNECT, "RHarvesterClient::Connect" );
+
+
RProperty property;
const TInt error( property.Attach( KHarvesterPSShutdown, KShutdown, EOwnerThread ) );
TInt value = 0;
@@ -137,6 +145,8 @@
//
EXPORT_C TInt RHarvesterClient::Pause()
{
+ OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_PAUSE, "RHarvesterClient::Pause" );
+
WRITELOG( "RHarvesterClient::Pause() - sending command EPauseHarvester" );
if( iHandle )
{
@@ -152,6 +162,8 @@
EXPORT_C TInt RHarvesterClient::Resume()
{
WRITELOG( "RHarvesterClient::Resume() - sending command EResumeHarvester" );
+ OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_RESUME, "RHarvesterClient::Resume" );
+
if( iHandle )
{
return SendReceive( EResumeHarvester );
@@ -166,6 +178,7 @@
EXPORT_C void RHarvesterClient::Close()
{
WRITELOG( "RHarvesterClient::Close()" );
+ OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_CLOSE, "RHarvesterClient::Close" );
delete iSessionWatcher;
iSessionWatcher = NULL;
@@ -202,6 +215,7 @@
EXPORT_C void RHarvesterClient::SetObserver( MHarvestObserver* aObserver )
{
WRITELOG( "RHarvesterClient::SetObserver()" );
+ OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_SETOBSERVER, "RHarvesterClient::SetObserver" );
if ( iHarvesterClientAO )
{
@@ -217,6 +231,7 @@
EXPORT_C void RHarvesterClient::RemoveObserver( MHarvestObserver* aObserver )
{
WRITELOG( "RHarvesterClient::RemoveObserver()" );
+ OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_REMOVEOBSERVER, "RHarvesterClient::RemoveObserver" );
if ( iHarvesterClientAO )
{
@@ -283,6 +298,8 @@
EXPORT_C void RHarvesterClient::HarvestFile( const TDesC& aURI, RArray<TItemId>& aAlbumIds, TBool aAddLocation )
{
WRITELOG1( "RHarvesterClient::HarvestFile() - file %S", &aURI );
+ OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_HARVESTFILE, "RHarvesterClient::HarvestFile" );
+
HBufC8* paramBuf = NULL;
TRAPD( err, paramBuf = SerializeArrayL( aAlbumIds ) );
@@ -354,6 +371,8 @@
TUid /*aUid*/ )
{
WRITELOG1( "RHarvesterClient::HarvestFileWithUID() - file %S", &aURI );
+ OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_HARVESTFILEWITHUID, "RHarvesterClient::HarvestFileWithUID" );
+
HBufC8* paramBuf = NULL;
TRAPD( err, paramBuf = SerializeArrayL( aAlbumIds ) );
@@ -447,6 +466,8 @@
void RHarvesterClient::RegisterHarvestComplete(TDes& aURI, TRequestStatus& aStatus)
{
TIpcArgs ipcArgs( &aURI );
+ OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_REGISTERHARVESTCOMPLETE, "RHarvesterClient::RegisterHarvestComplete" );
+
if( !iHandle )
{
@@ -512,6 +533,7 @@
static TInt StartServer()
{
WRITELOG( "StartServer() - begin" );
+ OstTrace0( TRACE_NORMAL, _STARTSERVER, "::StartServer" );
TFindServer findHarvesterServer( KHarvesterServerName );
TFullName name;
@@ -555,6 +577,8 @@
static TInt CreateServerProcess()
{
WRITELOG( "CreateServerProcess() - begin" );
+ OstTrace0( TRACE_NORMAL, _CREATESERVERPROCESS, "::CreateServerProcess" );
+
RProcess server;
TInt result = server.Create( KHarvesterServerExe, KNullDesC );
if ( result != KErrNone )
--- a/harvester/client/src/harvesterclientao.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/harvester/client/src/harvesterclientao.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -20,6 +20,10 @@
#include "harvestercommon.h"
#include "harvesterlog.h"
#include "mdsutils.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "harvesterclientaoTraces.h"
+#endif
// ---------------------------------------------------------------------------
@@ -29,6 +33,8 @@
CHarvesterClientAO* CHarvesterClientAO::NewL( RHarvesterClient& aHarvesterClient )
{
WRITELOG( "CHarvesterClientAO::NewL()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERCLIENTAO_NEWL, "CHarvesterClientAO::NewL" );
+
CHarvesterClientAO* self = new (ELeave) CHarvesterClientAO( aHarvesterClient );
CleanupStack::PushL( self );
self->ConstructL();
@@ -42,6 +48,8 @@
//
CHarvesterClientAO::~CHarvesterClientAO() // destruct
{
+ OstTrace0( TRACE_NORMAL, CHARVESTERCLIENTAO_CHARVESTERCLIENTAO, "CHarvesterClientAO::~CHarvesterClientAO" );
+
WRITELOG( "CHarvesterClientAO::~CHarvesterClientAO()" );
Cancel();
}
@@ -56,6 +64,8 @@
iObserver( NULL ),
iHarvesterClient( aHarvesterClient )
{
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERCLIENTAO_CHARVESTERCLIENTAO, "CHarvesterClientAO::CHarvesterClientAO" );
+
WRITELOG( "CHarvesterClientAO::CHarvesterClientAO()" );
}
@@ -65,7 +75,9 @@
//
void CHarvesterClientAO::ConstructL() // second-phase constructor
{
- WRITELOG( "CHarvesterClientAO::ConstructL()" );
+ WRITELOG( "CHarvesterClientAO::ConstructL()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERCLIENTAO_CONSTRUCTL, "CHarvesterClientAO::ConstructL" );
+
CActiveScheduler::Add( this );
}
@@ -76,6 +88,8 @@
void CHarvesterClientAO::SetObserver( MHarvestObserver* aObserver )
{
WRITELOG( "CHarvesterClientAO::SetObserver()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERCLIENTAO_SETOBSERVER, "CHarvesterClientAO::SetObserver" );
+
iObserver = aObserver;
}
@@ -86,6 +100,8 @@
void CHarvesterClientAO::RemoveObserver( MHarvestObserver* aObserver )
{
WRITELOG( "CHarvesterClientAO::RemoveObserver()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERCLIENTAO_REMOVEOBSERVER, "CHarvesterClientAO::RemoveObserver" );
+
if ( aObserver == iObserver )
{
if ( iObserver )
@@ -103,7 +119,8 @@
void CHarvesterClientAO::DoCancel()
{
WRITELOG( "CHarvesterClientAO::DoCancel()" );
- iHarvesterClient.UnregisterHarvestComplete();
+ OstTrace0( TRACE_NORMAL, CHARVESTERCLIENTAO_DOCANCEL, "CHarvesterClientAO::DoCancel" );
+
}
// ---------------------------------------------------------------------------
@@ -126,6 +143,8 @@
void CHarvesterClientAO::RunL()
{
WRITELOG( "CHarvesterClientAO::RunL()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERCLIENTAO_RUNL, "CHarvesterClientAO::RunL" );
+
const TInt status = iStatus.Int();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/client/traces/OstTraceDefinitions.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,7 @@
+#ifndef __OSTTRACEDEFINITIONS_H__
+#define __OSTTRACEDEFINITIONS_H__
+// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
+// REMOVE BEFORE CHECK-IN TO VERSION CONTROL
+#define OST_TRACE_COMPILER_IN_USE
+#include <opensystemtrace.h>
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/client/traces/fixed_id.definitions Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,22 @@
+#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
+[GROUP]TRACE_NORMAL=0x86
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERCLIENTAO_CHARVESTERCLIENTAO=0xe
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERCLIENTAO_CONSTRUCTL=0x10
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERCLIENTAO_DOCANCEL=0x13
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERCLIENTAO_NEWL=0xd
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERCLIENTAO_REMOVEOBSERVER=0x12
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERCLIENTAO_RUNL=0x14
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERCLIENTAO_SETOBSERVER=0x11
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERCLIENTAO_CHARVESTERCLIENTAO=0xf
+[TRACE]TRACE_NORMAL[0x86]_RHARVESTERCLIENT_CLOSE=0x5
+[TRACE]TRACE_NORMAL[0x86]_RHARVESTERCLIENT_CONNECT=0x2
+[TRACE]TRACE_NORMAL[0x86]_RHARVESTERCLIENT_HARVESTFILE=0x8
+[TRACE]TRACE_NORMAL[0x86]_RHARVESTERCLIENT_HARVESTFILEWITHUID=0x9
+[TRACE]TRACE_NORMAL[0x86]_RHARVESTERCLIENT_PAUSE=0x3
+[TRACE]TRACE_NORMAL[0x86]_RHARVESTERCLIENT_REGISTERHARVESTCOMPLETE=0xa
+[TRACE]TRACE_NORMAL[0x86]_RHARVESTERCLIENT_REMOVEOBSERVER=0x7
+[TRACE]TRACE_NORMAL[0x86]_RHARVESTERCLIENT_RESUME=0x4
+[TRACE]TRACE_NORMAL[0x86]_RHARVESTERCLIENT_RHARVESTERCLIENT=0x1
+[TRACE]TRACE_NORMAL[0x86]_RHARVESTERCLIENT_SETOBSERVER=0x6
+[TRACE]TRACE_NORMAL[0x86]__CREATESERVERPROCESS=0xc
+[TRACE]TRACE_NORMAL[0x86]__STARTSERVER=0xb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/client/traces/harvesterclientTraces.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,26 @@
+// Created by TraceCompiler 2.2.3
+// DO NOT EDIT, CHANGES WILL BE LOST
+
+#ifndef __HARVESTERCLIENTTRACES_H__
+#define __HARVESTERCLIENTTRACES_H__
+
+#define KOstTraceComponentID 0x200009f4
+
+#define RHARVESTERCLIENT_RHARVESTERCLIENT 0x860001
+#define RHARVESTERCLIENT_CONNECT 0x860002
+#define RHARVESTERCLIENT_PAUSE 0x860003
+#define RHARVESTERCLIENT_RESUME 0x860004
+#define RHARVESTERCLIENT_CLOSE 0x860005
+#define RHARVESTERCLIENT_SETOBSERVER 0x860006
+#define RHARVESTERCLIENT_REMOVEOBSERVER 0x860007
+#define RHARVESTERCLIENT_HARVESTFILE 0x860008
+#define RHARVESTERCLIENT_HARVESTFILEWITHUID 0x860009
+#define RHARVESTERCLIENT_REGISTERHARVESTCOMPLETE 0x86000a
+#define _STARTSERVER 0x86000b
+#define _CREATESERVERPROCESS 0x86000c
+
+
+#endif
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/client/traces/harvesterclientaoTraces.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,22 @@
+// Created by TraceCompiler 2.2.3
+// DO NOT EDIT, CHANGES WILL BE LOST
+
+#ifndef __HARVESTERCLIENTAOTRACES_H__
+#define __HARVESTERCLIENTAOTRACES_H__
+
+#define KOstTraceComponentID 0x200009f4
+
+#define CHARVESTERCLIENTAO_NEWL 0x86000d
+#define CHARVESTERCLIENTAO_CHARVESTERCLIENTAO 0x86000e
+#define DUP1_CHARVESTERCLIENTAO_CHARVESTERCLIENTAO 0x86000f
+#define CHARVESTERCLIENTAO_CONSTRUCTL 0x860010
+#define CHARVESTERCLIENTAO_SETOBSERVER 0x860011
+#define CHARVESTERCLIENTAO_REMOVEOBSERVER 0x860012
+#define CHARVESTERCLIENTAO_DOCANCEL 0x860013
+#define CHARVESTERCLIENTAO_RUNL 0x860014
+
+
+#endif
+
+// End of file
+
--- a/harvester/common/bwincw/harvesterplugininterfacewinscw.def Wed Jun 23 18:41:19 2010 +0300
+++ b/harvester/common/bwincw/harvesterplugininterfacewinscw.def Tue Jul 06 14:44:37 2010 +0300
@@ -12,4 +12,5 @@
?SetBlacklist@CHarvesterPlugin@@UAEXAAVCHarvesterBlacklist@@@Z @ 11 NONAME ; void CHarvesterPlugin::SetBlacklist(class CHarvesterBlacklist &)
?GetMimeType@CHarvesterPlugin@@UAEXABVTDesC16@@AAVTDes16@@@Z @ 12 NONAME ; void CHarvesterPlugin::GetMimeType(class TDesC16 const &, class TDes16 &)
?SetHarvesterPluginFactory@CHarvesterPlugin@@QAEXAAVCHarvesterPluginFactory@@@Z @ 13 NONAME ; void CHarvesterPlugin::SetHarvesterPluginFactory(class CHarvesterPluginFactory &)
+ ?PluginInIdleState@CHarvesterPlugin@@QAEHXZ @ 14 NONAME ; int CHarvesterPlugin::PluginInIdleState(void)
--- a/harvester/common/eabi/harvesterplugininterfacearm.def Wed Jun 23 18:41:19 2010 +0300
+++ b/harvester/common/eabi/harvesterplugininterfacearm.def Tue Jul 06 14:44:37 2010 +0300
@@ -16,4 +16,5 @@
_ZN16CHarvesterPlugin12SetBlacklistER19CHarvesterBlacklist @ 15 NONAME
_ZN16CHarvesterPlugin11GetMimeTypeERK7TDesC16R6TDes16 @ 16 NONAME
_ZN16CHarvesterPlugin25SetHarvesterPluginFactoryER23CHarvesterPluginFactory @ 17 NONAME
+ _ZN16CHarvesterPlugin17PluginInIdleStateEv @ 18 NONAME
--- a/harvester/common/group/harvestercommon.mmp Wed Jun 23 18:41:19 2010 +0300
+++ b/harvester/common/group/harvestercommon.mmp Tue Jul 06 14:44:37 2010 +0300
@@ -40,6 +40,7 @@
USERINCLUDE ../../../inc
USERINCLUDE ../inc
USERINCLUDE ../../monitorplugins/inc
+USERINCLUDE ../traces
SOURCEPATH ../src
SOURCE harvesterblacklist.cpp
--- a/harvester/common/src/harvestereventmanager.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/harvester/common/src/harvestereventmanager.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -18,6 +18,11 @@
#include "harvestereventmanager.h"
#include "harvesterlog.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "harvestereventmanagerTraces.h"
+#endif
+
const TInt KHarvesterEventManagerTLSKey = 0x200104D9;
@@ -47,6 +52,7 @@
EXPORT_C CHarvesterEventManager* CHarvesterEventManager::GetInstanceL()
{
WRITELOG( "CHarvesterEventManager::GetInstanceL" );
+ OstTrace0( TRACE_NORMAL, CHARVESTEREVENTMANAGER_GETINSTANCEL, "CHarvesterEventManager::GetInstanceL" );
CHarvesterEventManagerStaticData* data =
static_cast<CHarvesterEventManagerStaticData*>(
@@ -75,6 +81,8 @@
EXPORT_C void CHarvesterEventManager::ReleaseInstance()
{
WRITELOG( "CHarvesterEventManager::ReleaseInstance" );
+ OstTrace0( TRACE_NORMAL, CHARVESTEREVENTMANAGER_RELEASEINSTANCE, "CHarvesterEventManager::ReleaseInstance" );
+
CHarvesterEventManagerStaticData* data =
static_cast<CHarvesterEventManagerStaticData*>(
UserSvr::DllTls( KHarvesterEventManagerTLSKey ) );
@@ -100,32 +108,52 @@
switch(aHEObserverType)
{
case EHEObserverTypePlaceholder:
+ {
WRITELOG( "CHarvesterEventManager::IncreaseItemCount() EHEObserverTypePlaceholder");
+ OstTrace0( TRACE_NORMAL, CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT, "CHarvesterEventManager::IncreaseItemCount EHEObserverTypePlaceholder" );
break;
+ }
case EHEObserverTypeMMC:
+ {
WRITELOG( "CHarvesterEventManager::IncreaseItemCount() EHEObserverTypeMMC");
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT, "CHarvesterEventManager::IncreaseItemCount EHEObserverTypeMMC" );
break;
+ }
case EHEObserverTypeOverall:
+ {
WRITELOG( "CHarvesterEventManager::IncreaseItemCount() EHEObserverTypeOverall");
+ OstTrace0( TRACE_NORMAL, DUP2_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT, "CHarvesterEventManager::IncreaseItemCount EHEObserverTypeOverall" );
break;
+ }
default:
+ {
WRITELOG( "CHarvesterEventManager::IncreaseItemCount() Unknown type!");
+ OstTrace0( TRACE_NORMAL, DUP3_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT, "CHarvesterEventManager::IncreaseItemCount Unknown type!" );
+ }
};
#endif
if( eventStatus )
{
WRITELOG1( "CHarvesterEventManager::IncreaseItemCount() itemsleft = %d old ", eventStatus->iItemsLeft);
+ OstTrace1( TRACE_NORMAL, DUP4_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT, "CHarvesterEventManager::IncreaseItemCount) itemsleft = %d old", eventStatus->iItemsLeft );
+
eventStatus->iItemsLeft += aCount;
WRITELOG1( "CHarvesterEventManager::IncreaseItemCount() itemsleft = %d ", eventStatus->iItemsLeft);
+ OstTrace1( TRACE_NORMAL, DUP5_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT, "CHarvesterEventManager::IncreaseItemCount itemsleft = %d", eventStatus->iItemsLeft );
+
}
else
{
TEventStatus eventStatus;
eventStatus.iCurrentState = EHEStateStarted;
WRITELOG1( "CHarvesterEventManager::IncreaseItemCount() itemsleft = %d old", aCount);
+ OstTrace1( TRACE_NORMAL, DUP6_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT, "CHarvesterEventManager::IncreaseItemCount itemsleft = %d old", aCount );
+
eventStatus.iItemsLeft = aCount;
WRITELOG1( "CHarvesterEventManager::IncreaseItemCount() itemsleft = %d ", aCount);
+ OstTrace1( TRACE_NORMAL, DUP7_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT, "CHarvesterEventManager::IncreaseItemCount itemsleft = %d", aCount );
+
eventStatus.iObserverType = aHEObserverType;
iEventStatuses.Append( eventStatus );
}
@@ -141,22 +169,36 @@
switch(aHEObserverType)
{
case EHEObserverTypePlaceholder:
+ {
WRITELOG( "CHarvesterEventManager::DecreaseItemCountL() EHEObserverTypePlaceholder");
+ OstTrace0( TRACE_NORMAL, CHARVESTEREVENTMANAGER_DECREASEITEMCOUNTL, "CHarvesterEventManager::DecreaseItemCountL EHEObserverTypePlaceholder" );
break;
+ }
case EHEObserverTypeMMC:
+ {
WRITELOG( "CHarvesterEventManager::DecreaseItemCountL() EHEObserverTypeMMC");
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTEREVENTMANAGER_DECREASEITEMCOUNTL, "CHarvesterEventManager::DecreaseItemCountL EHEObserverTypeMMC" );
break;
+ }
case EHEObserverTypeOverall:
+ {
WRITELOG( "CHarvesterEventManager::DecreaseItemCountL() EHEObserverTypeOverall");
+ OstTrace0( TRACE_NORMAL, DUP2_CHARVESTEREVENTMANAGER_DECREASEITEMCOUNTL, "CHarvesterEventManager::DecreaseItemCountL EHEObserverTypeOverall" );
break;
+ }
default:
+ {
WRITELOG( "CHarvesterEventManager::DecreaseItemCountL() Unknown type!");
+ OstTrace0( TRACE_NORMAL, DUP3_CHARVESTEREVENTMANAGER_DECREASEITEMCOUNTL, "CHarvesterEventManager::DecreaseItemCountL Unknown type!" );
+ }
};
#endif
if( eventStatus )
{
WRITELOG1( "CHarvesterEventManager::DecreaseItemCountL() iItemsLeft = %d old", eventStatus->iItemsLeft);
+ OstTrace1( TRACE_NORMAL, DUP4_CHARVESTEREVENTMANAGER_DECREASEITEMCOUNTL, "CHarvesterEventManager::DecreaseItemCountL iItemsLeft = %d old", eventStatus->iItemsLeft );
+
TUint newCount = eventStatus->iItemsLeft - aCount;
// check for wrap
@@ -179,6 +221,7 @@
}
WRITELOG1( "CHarvesterEventManager::DecreaseItemCountL() iItemsLeft = %d", eventStatus->iItemsLeft );
+ OstTrace1( TRACE_NORMAL, DUP5_CHARVESTEREVENTMANAGER_DECREASEITEMCOUNTL, "CHarvesterEventManager::DecreaseItemCountL iItemsLeft = %d", eventStatus->iItemsLeft );
// send finished event to all matching observers
if ( eventStatus->iItemsLeft <= 0 )
--- a/harvester/common/src/harvesterexifutil.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/harvester/common/src/harvesterexifutil.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -23,6 +23,11 @@
#include "mdeproperty.h"
#include "tz.h"
#include <ExifModify.h>
+#include "OstTraceDefinitions.h"
+
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "harvesterexifutilTraces.h"
+#endif
@@ -137,6 +142,7 @@
EXPORT_C TBool CHarvesterExifUtil::IsValidExifData(TPtr8 aPtr)
{
WRITELOG( "CHarvesterExifUtil::IsValidExifData start" );
+ OstTrace0( TRACE_NORMAL, CHARVESTEREXIFUTIL_ISVALIDEXIFDATA, "CHarvesterExifUtil::IsValidExifData start" );
CExifRead* reader = NULL;
@@ -144,13 +150,15 @@
if (err != KErrNone || !reader )
{
WRITELOG1( "CHarvesterExifUtil::IsValidExifData - error code: %d", err );
-
+ OstTrace1( TRACE_NORMAL, DUP1_CHARVESTEREXIFUTIL_ISVALIDEXIFDATA, "CHarvesterExifUtil::IsValidExifData -error code:%d", err );
+
return EFalse;
}
delete reader;
WRITELOG( "CHarvesterExifUtil::IsValidExifData end" );
+ OstTrace0( TRACE_NORMAL, DUP2_CHARVESTEREXIFUTIL_ISVALIDEXIFDATA, "CHarvesterExifUtil::IsValidExifData end" );
return ETrue;
}
@@ -183,6 +191,8 @@
EXPORT_C TInt CHarvesterExifUtil::ReadExifDataL( CHarvestData& aHd, CFileData& aFileData )
{
WRITELOG( "CHarvesterExifUtil::ReadExifDataL()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTEREXIFUTIL_READEXIFDATAL, "CHarvesterExifUtil::ReadExifDataL" );
+
CExifRead* reader = CExifRead::NewL(
aFileData.iImageData->Des(), CExifRead::ENoJpeg | CExifRead::ENoTagChecking);
@@ -227,6 +237,8 @@
if ( reader->TagExists(KIdDateTime, EIfd0) )
{
WRITELOG( "CHarvesterExifUtil::ReadExifDataL() - getting last aFileData.iModified date (exif)" );
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTEREXIFUTIL_READEXIFDATAL, "CHarvesterExifUtil::ReadExifDataL - getting last aFileData.iModified date (exif)" );
+
aHd.iDateModified8 = reader->GetDateTimeL();
}
@@ -234,6 +246,8 @@
if ( reader->TagExists(KIdDateTimeOriginal, EIfdExif) )
{
WRITELOG( "CHarvesterExifUtil::ReadExifDataL() - getting original date (exif)" );
+ OstTrace0( TRACE_NORMAL, DUP2_CHARVESTEREXIFUTIL_READEXIFDATAL, "CHarvesterExifUtil::ReadExifDataL - getting original date (exif)" );
+
aHd.iDateOriginal8 = reader->GetDateTimeOriginalL();
}
@@ -241,6 +255,8 @@
if ( reader->TagExists(KIdDateTimeDigitized, EIfdExif) )
{
WRITELOG( "CHarvesterExifUtil::ReadExifDataL() - getting digitized date (exif)" );
+ OstTrace0( TRACE_NORMAL, DUP3_CHARVESTEREXIFUTIL_READEXIFDATAL, "CHarvesterExifUtil::ReadExifDataL - getting digitized date (exif)" );
+
aHd.iDateDigitized8 = reader->GetDateTimeDigitizedL();
}
@@ -336,6 +352,8 @@
aHd.iStoreSamplesPerPixel = ETrue;
WRITELOG1( "CHarvesterExifUtil::ReadExifDataL() - samples per pixel: %d", aHd.iSamplesPerPixel );
+ OstTrace1( TRACE_NORMAL, DUP4_CHARVESTEREXIFUTIL_READEXIFDATAL, "CHarvesterExifUtil::ReadExifDataL - samples per pixel: %d", aHd.iSamplesPerPixel );
+
}
//Getting ISO speed rating.
@@ -415,6 +433,7 @@
const TDesC8& aDateTime )
{
WRITELOG( "CHarvesterImagePluginAO::ConvertExifDateTimeToSymbianTimeL()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL, "CHarvesterExifUtil::ConvertExifDateTimeToSymbianTimeL" );
TDateTime datetime( 0, EJanuary, 0, 0, 0, 0, 0 );
TBuf<4> text;
@@ -427,6 +446,8 @@
if ( error != KErrNone )
{
WRITELOG( "CHarvesterImagePluginAO::ConvertExifDateTimeToSymbianTimeL() - couldn't get year" );
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL, "CHarvesterExifUtil::ConvertExifDateTimeToSymbianTimeL - couldn't get year" );
+
User::Leave( error );
}
datetime.SetYear( number );
@@ -438,6 +459,8 @@
if ( error != KErrNone )
{
WRITELOG( "CHarvesterImagePluginAO::ConvertExifDateTimeToSymbianTimeL() - couldn't get month" );
+ OstTrace0( TRACE_NORMAL, DUP2_CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL, "CHarvesterExifUtil::ConvertExifDateTimeToSymbianTimeL - couldn't get month" );
+
User::Leave( error );
}
number--;
@@ -451,6 +474,8 @@
if ( error != KErrNone )
{
WRITELOG( "CHarvesterImagePluginAO::ConvertExifDateTimeToSymbianTimeL() - couldn't get date" );
+ OstTrace0( TRACE_NORMAL, DUP3_CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL, "CHarvesterExifUtil::ConvertExifDateTimeToSymbianTimeL - couldn't get date" );
+
User::Leave( error );
}
datetime.SetDay( number - 1 );
@@ -462,6 +487,8 @@
if ( error != KErrNone )
{
WRITELOG( "CHarvesterImagePluginAO::ConvertExifDateTimeToSymbianTimeL() - couldn't get hours" );
+ OstTrace0( TRACE_NORMAL, DUP4_CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL, "CHarvesterExifUtil::ConvertExifDateTimeToSymbianTimeL - couldn't get hours" );
+
User::Leave( error );
}
datetime.SetHour( number );
@@ -473,6 +500,8 @@
if ( error != KErrNone )
{
WRITELOG( "CHarvesterImagePluginAO::ConvertExifDateTimeToSymbianTimeL() - couldn't get minutes" );
+ OstTrace0( TRACE_NORMAL, DUP5_CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL, "CHarvesterExifUtil::ConvertExifDateTimeToSymbianTimeL - couldn't get minutes" );
+
User::Leave( error );
}
datetime.SetMinute( number );
@@ -484,6 +513,8 @@
if ( error != KErrNone )
{
WRITELOG( "CHarvesterImagePluginAO::ConvertExifDateTimeToSymbianTimeL() - couldn't get seconds" );
+ OstTrace0( TRACE_NORMAL, DUP6_CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL, "CHarvesterExifUtil::ConvertExifDateTimeToSymbianTimeL - couldn't get seconds" );
+
User::Leave( error );
}
datetime.SetSecond( number );
@@ -1751,7 +1782,7 @@
TReal64 latitude = 0.0;
const CExifTag* refTag = aReader->GetTagL(
EIfdGps, KIdGpsLatitudeRef );
- TBuf8<2> latitudeRef = refTag->Data();
+ TBuf8<3> latitudeRef = refTag->Data();
const CExifTag* latitudeTag = aReader->GetTagL(
EIfdGps, KIdGpsLatitude );
TBuf8<KCoordinateBufferSize> latitudeBuf = latitudeTag->Data();
@@ -1784,7 +1815,7 @@
TReal64 longitude = 0.0;
const CExifTag* refTag = aReader->GetTagL(
EIfdGps, KIdGpsLongitudeRef );
- TBuf8<2> longitudeRef = refTag->Data();
+ TBuf8<3> longitudeRef = refTag->Data();
const CExifTag* longitudeTag = aReader->GetTagL(
EIfdGps, KIdGpsLongitude );
TBuf8<KCoordinateBufferSize> longitudeBuf = longitudeTag->Data();
--- a/harvester/common/src/harvesterplugin.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/harvester/common/src/harvesterplugin.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -65,7 +65,7 @@
iDtor_ID_Key( KNullUid ),
iOriginPropertyDef( NULL ),
iTitlePropertyDef( NULL ),
- iHarvesting( NULL )
+ iHarvesting( EFalse )
{
}
@@ -132,6 +132,11 @@
{
case EHarvesterIdle:
{
+ if( iHarvesting )
+ {
+ TRAP_IGNORE( iFactory->SendHarvestingStatusEventL( EFalse ) );
+ iHarvesting = EFalse;
+ }
}
break;
@@ -332,6 +337,19 @@
}
// ---------------------------------------------------------------------------
+// PluginInIdleState
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CHarvesterPlugin::PluginInIdleState()
+ {
+ if( iState == EHarvesterIdle )
+ {
+ return ETrue;
+ }
+ return EFalse;
+ }
+
+// ---------------------------------------------------------------------------
// E32Dll
// ---------------------------------------------------------------------------
//
--- a/harvester/common/src/harvesterpluginfactory.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/harvester/common/src/harvesterpluginfactory.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -439,13 +439,22 @@
{
const TInt pluginInfoCount = iHarvesterPluginInfoArray.Count();
TBool itemsLeft( EFalse );
+ TBool allPluginsOnIdle( ETrue );
for ( TInt i = pluginInfoCount; --i >= 0; )
{
CHarvesterPluginInfo* info = iHarvesterPluginInfoArray[i];
if( info && info->iQueue.Count() )
{
itemsLeft = ETrue;
- break;
+ if( aStarted )
+ {
+ // Idle state is only checked if finished event is sent
+ break;
+ }
+ }
+ if( info && info->iPlugin && !(info->iPlugin->PluginInIdleState()) )
+ {
+ allPluginsOnIdle = EFalse;
}
}
@@ -458,7 +467,7 @@
iHarvesterEventManager->IncreaseItemCount( EHEObserverTypeOverall, KCacheItemCountForEventCaching );
return;
}
- else if( iHarvesting && !itemsLeft && !aStarted )
+ else if( iHarvesting && (!itemsLeft || allPluginsOnIdle) && !aStarted )
{
iHarvesting = EFalse;
iHarvesterEventManager->SendEventL( EHEObserverTypeOverall, EHEStateFinished );
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/common/traces/OstTraceDefinitions.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,7 @@
+#ifndef __OSTTRACEDEFINITIONS_H__
+#define __OSTTRACEDEFINITIONS_H__
+// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
+// REMOVE BEFORE CHECK-IN TO VERSION CONTROL
+#define OST_TRACE_COMPILER_IN_USE
+#include <opensystemtrace.h>
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/common/traces/fixed_id.definitions Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,33 @@
+#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
+[GROUP]TRACE_NORMAL=0x86
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTEREVENTMANAGER_DECREASEITEMCOUNTL=0xb
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTEREVENTMANAGER_GETINSTANCEL=0x1
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT=0x3
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTEREVENTMANAGER_RELEASEINSTANCE=0x2
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL=0x19
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTEREXIFUTIL_ISVALIDEXIFDATA=0x11
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTEREXIFUTIL_READEXIFDATAL=0x14
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTEREVENTMANAGER_DECREASEITEMCOUNTL=0xc
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT=0x4
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL=0x1a
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTEREXIFUTIL_ISVALIDEXIFDATA=0x12
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTEREXIFUTIL_READEXIFDATAL=0x15
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTEREVENTMANAGER_DECREASEITEMCOUNTL=0xd
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT=0x5
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL=0x1b
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTEREXIFUTIL_ISVALIDEXIFDATA=0x13
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTEREXIFUTIL_READEXIFDATAL=0x16
+[TRACE]TRACE_NORMAL[0x86]_DUP3_CHARVESTEREVENTMANAGER_DECREASEITEMCOUNTL=0xe
+[TRACE]TRACE_NORMAL[0x86]_DUP3_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT=0x6
+[TRACE]TRACE_NORMAL[0x86]_DUP3_CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL=0x1c
+[TRACE]TRACE_NORMAL[0x86]_DUP3_CHARVESTEREXIFUTIL_READEXIFDATAL=0x17
+[TRACE]TRACE_NORMAL[0x86]_DUP4_CHARVESTEREVENTMANAGER_DECREASEITEMCOUNTL=0xf
+[TRACE]TRACE_NORMAL[0x86]_DUP4_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT=0x7
+[TRACE]TRACE_NORMAL[0x86]_DUP4_CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL=0x1d
+[TRACE]TRACE_NORMAL[0x86]_DUP4_CHARVESTEREXIFUTIL_READEXIFDATAL=0x18
+[TRACE]TRACE_NORMAL[0x86]_DUP5_CHARVESTEREVENTMANAGER_DECREASEITEMCOUNTL=0x10
+[TRACE]TRACE_NORMAL[0x86]_DUP5_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT=0x8
+[TRACE]TRACE_NORMAL[0x86]_DUP5_CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL=0x1e
+[TRACE]TRACE_NORMAL[0x86]_DUP6_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT=0x9
+[TRACE]TRACE_NORMAL[0x86]_DUP6_CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL=0x1f
+[TRACE]TRACE_NORMAL[0x86]_DUP7_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT=0xa
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/common/traces/harvestereventmanagerTraces.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,30 @@
+// Created by TraceCompiler 2.2.3
+// DO NOT EDIT, CHANGES WILL BE LOST
+
+#ifndef __HARVESTEREVENTMANAGERTRACES_H__
+#define __HARVESTEREVENTMANAGERTRACES_H__
+
+#define KOstTraceComponentID 0x200009fe
+
+#define CHARVESTEREVENTMANAGER_GETINSTANCEL 0x860001
+#define CHARVESTEREVENTMANAGER_RELEASEINSTANCE 0x860002
+#define CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT 0x860003
+#define DUP1_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT 0x860004
+#define DUP2_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT 0x860005
+#define DUP3_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT 0x860006
+#define DUP4_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT 0x860007
+#define DUP5_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT 0x860008
+#define DUP6_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT 0x860009
+#define DUP7_CHARVESTEREVENTMANAGER_INCREASEITEMCOUNT 0x86000a
+#define CHARVESTEREVENTMANAGER_DECREASEITEMCOUNTL 0x86000b
+#define DUP1_CHARVESTEREVENTMANAGER_DECREASEITEMCOUNTL 0x86000c
+#define DUP2_CHARVESTEREVENTMANAGER_DECREASEITEMCOUNTL 0x86000d
+#define DUP3_CHARVESTEREVENTMANAGER_DECREASEITEMCOUNTL 0x86000e
+#define DUP4_CHARVESTEREVENTMANAGER_DECREASEITEMCOUNTL 0x86000f
+#define DUP5_CHARVESTEREVENTMANAGER_DECREASEITEMCOUNTL 0x860010
+
+
+#endif
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/common/traces/harvesterexifutilTraces.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,29 @@
+// Created by TraceCompiler 2.2.3
+// DO NOT EDIT, CHANGES WILL BE LOST
+
+#ifndef __HARVESTEREXIFUTILTRACES_H__
+#define __HARVESTEREXIFUTILTRACES_H__
+
+#define KOstTraceComponentID 0x200009fe
+
+#define CHARVESTEREXIFUTIL_ISVALIDEXIFDATA 0x860011
+#define DUP1_CHARVESTEREXIFUTIL_ISVALIDEXIFDATA 0x860012
+#define DUP2_CHARVESTEREXIFUTIL_ISVALIDEXIFDATA 0x860013
+#define CHARVESTEREXIFUTIL_READEXIFDATAL 0x860014
+#define DUP1_CHARVESTEREXIFUTIL_READEXIFDATAL 0x860015
+#define DUP2_CHARVESTEREXIFUTIL_READEXIFDATAL 0x860016
+#define DUP3_CHARVESTEREXIFUTIL_READEXIFDATAL 0x860017
+#define DUP4_CHARVESTEREXIFUTIL_READEXIFDATAL 0x860018
+#define CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL 0x860019
+#define DUP1_CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL 0x86001a
+#define DUP2_CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL 0x86001b
+#define DUP3_CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL 0x86001c
+#define DUP4_CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL 0x86001d
+#define DUP5_CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL 0x86001e
+#define DUP6_CHARVESTEREXIFUTIL_CONVERTEXIFDATETIMETOSYMBIANTIMEL 0x86001f
+
+
+#endif
+
+// End of file
+
--- a/harvester/server/group/harvesterserver.mmp Wed Jun 23 18:41:19 2010 +0300
+++ b/harvester/server/group/harvesterserver.mmp Tue Jul 06 14:44:37 2010 +0300
@@ -41,6 +41,7 @@
USERINCLUDE ../../common/inc
USERINCLUDE ../inc
USERINCLUDE ../../monitorplugins/inc
+USERINCLUDE ../traces
SOURCEPATH ../src
SOURCE harvesterserver.cpp
--- a/harvester/server/src/harvesterao.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/harvester/server/src/harvesterao.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -42,6 +42,11 @@
#include "harvestercenreputil.h"
#include "restorewatcher.h"
#include "backupsubscriber.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "harvesteraoTraces.h"
+#endif
+
// constants
const TInt32 KFileMonitorPluginUid = 0x20007186; // file monitor plugin implementation uid
@@ -104,6 +109,7 @@
CHarvesterAO* CHarvesterAO::NewLC()
{
WRITELOG( "CHarvesterAO::NewLC() - begin" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_NEWLC, "CHarvesterAO::NewLC" );
CHarvesterAO* self = new (ELeave) CHarvesterAO();
CleanupStack::PushL( self );
@@ -118,6 +124,7 @@
CHarvesterAO* CHarvesterAO::NewL()
{
WRITELOG( "CHarvesterAO::NewL() - begin" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_NEWL, "CHarvesterAO::NewL" );
CHarvesterAO* self = CHarvesterAO::NewLC();
CleanupStack::Pop( self );
@@ -131,6 +138,7 @@
CHarvesterAO::CHarvesterAO() : CActive( KHarvesterPriorityHarvestingPlugin )
{
WRITELOG( "CHarvesterAO::CHarvesterAO() - begin" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_CHARVESTERAO, "CHarvesterAO::CHarvesterAO" );
iServerPaused = ETrue;
iNextRequest = ERequestIdle;
@@ -155,6 +163,7 @@
CHarvesterAO::~CHarvesterAO()
{
WRITELOG( "CHarvesterAO::~CHarvesterAO()" );
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_CHARVESTERAO, "CHarvesterAO::~CHarvesterAO" );
Cancel();
@@ -246,7 +255,8 @@
void CHarvesterAO::ConstructL()
{
WRITELOG( "CHarvesterAO::ConstructL() - begin" );
-
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_CONSTRUCTL, "CHarvesterAO::ConstructL - begin" );
+
CActiveScheduler::Add( this );
User::LeaveIfError( iFs.Connect() );
@@ -323,7 +333,9 @@
TFileName mmcSoundPath( mmcRoot );
mmcSoundPath.Append( sounds );
iMmcSoundsPath = mmcSoundPath.Right( mmcSoundPath.Length() - 1 ).AllocL();
-
+
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_CONSTRUCTL, "CHarvesterAO::ConstructL - end" );
+
WRITELOG( "CHarvesterAO::ConstructL() - end" );
}
@@ -334,6 +346,7 @@
void CHarvesterAO::LoadMonitorPluginsL()
{
WRITELOG( "CHarvesterAO::LoadMonitorPluginsL()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_LOADMONITORPLUGINSL, "CHarvesterAO::LoadMonitorPluginsL" );
RImplInfoPtrArray infoArray;
@@ -364,6 +377,8 @@
else
{
WRITELOG( "CHarvesterAO::LoadMonitorPlugins() - Failed to load a monitor plugin!" );
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_LOADMONITORPLUGINSL, "CHarvesterAO::LoadMonitorPluginsL - Failed to load a monitor plugin!" );
+
delete plugin;
plugin = NULL;
}
@@ -379,9 +394,11 @@
void CHarvesterAO::DeleteMonitorPlugins()
{
WRITELOG( "CHarvesterAO::DeleteMonitorPlugins()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_DELETEMONITORPLUGINS, "CHarvesterAO::DeleteMonitorPlugins" );
iMonitorPluginArray.ResetAndDestroy();
iMonitorPluginArray.Close();
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_DELETEMONITORPLUGINS, "CHarvesterAO::DeleteMonitorPlugins - end" );
WRITELOG( "CHarvesterAO::DeleteMonitorPlugins() - end" );
}
@@ -392,7 +409,8 @@
void CHarvesterAO::StartMonitoring()
{
WRITELOG( "CHarvesterAO::StartMonitoring()" );
-
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_STARTMONITORING, "CHarvesterAO::StartMonitoring" );
+
const TInt count( iMonitorPluginArray.Count() );
for ( TInt i = 0; i < count; i++ )
@@ -409,6 +427,8 @@
void CHarvesterAO::StopMonitoring()
{
WRITELOG( "CHarvesterAO::StopMonitoring()" );
+
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_STOPMONITORING, "CHarvesterAO::StopMonitoring" );
const TInt count( iMonitorPluginArray.Count() );
@@ -425,12 +445,15 @@
void CHarvesterAO::PauseMonitoring()
{
WRITELOG( "CHarvesterAO::PauseMonitoring()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_PAUSEMONITORING, "CHarvesterAO::PauseMonitoring" );
+
const TInt count( iMonitorPluginArray.Count() );
for ( TInt i = 0; i<count; i++ )
{
iMonitorPluginArray[i]->PauseMonitoring();
}
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_PAUSEMONITORING, "CHarvesterAO::PauseMonitoring - end" );
WRITELOG( "CHarvesterAO::PauseMonitoring() - end" );
}
@@ -441,6 +464,7 @@
void CHarvesterAO::ResumeMonitoring()
{
WRITELOG( "CHarvesterAO::ResumeMonitoring()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_RESUMEMONITORING, "CHarvesterAO::ResumeMonitoring" );
const TInt count( iMonitorPluginArray.Count() );
@@ -459,6 +483,7 @@
void CHarvesterAO::HandleUnmount( TUint32 aMediaId )
{
WRITELOG1( "CHarvesterAO::HandleUnmount(%d)", aMediaId );
+ OstTrace1( TRACE_NORMAL, CHARVESTERAO_HANDLEUNMOUNT, "CHarvesterAO::HandleUnmount;aMediaId=%d", aMediaId );
iUnmountDetected = ETrue;
@@ -477,6 +502,8 @@
#ifdef _DEBUG
WRITELOG1( "CHarvesterAO::HandleUnmount() iReadyPHArray.Count() = %d", iReadyPHArray.Count() );
+ OstTrace1( TRACE_NORMAL, DUP1_CHARVESTERAO_HANDLEUNMOUNT, "CHarvesterAO::HandleUnmount;iReadyPHArray.Count()=%d", iReadyPHArray.Count() );
+
#endif
TInt arrayCount( iReadyPHArray.Count() );
if( arrayCount > 0 )
@@ -489,6 +516,8 @@
if( err == KErrNone && mediaId == aMediaId )
{
WRITELOG1( "CHarvesterAO::HandleUnmount() remove iReadyPHArray %d", i);
+ OstTrace1( TRACE_NORMAL, DUP2_CHARVESTERAO_HANDLEUNMOUNT, "CHarvesterAO::HandleUnmount remove iReadyPHArray %d", i );
+
delete hd;
hd = NULL;
iReadyPHArray.Remove( i );
@@ -501,6 +530,8 @@
iReadyPHArray.Compress();
}
WRITELOG1( "CHarvesterAO::HandleUnmount() DecreaseItemCountL iReadyPHArray %d", removed);
+ OstTrace1( TRACE_NORMAL, DUP3_CHARVESTERAO_HANDLEUNMOUNT, "CHarvesterAO::HandleUnmount DecreaseItemCountL iReadyPHArray %d", removed );
+
TRAP_IGNORE( iHarvesterEventManager->DecreaseItemCountL( EHEObserverTypePlaceholder, removed) );
}
@@ -508,6 +539,8 @@
#ifdef _DEBUG
WRITELOG1( "CHarvesterAO::HandleUnmount() iPHArray.Count() = %d", iPHArray.Count() );
+ OstTrace1( TRACE_NORMAL, DUP4_CHARVESTERAO_HANDLEUNMOUNT, "CHarvesterAO::HandleUnmount iPHArray.Count()=%d", iPHArray.Count() );
+
#endif
arrayCount = iPHArray.Count();
if( arrayCount > 0 )
@@ -520,6 +553,8 @@
if( err == KErrNone && mediaId == aMediaId )
{
WRITELOG1( "CHarvesterAO::HandleUnmount() remove iPHArray %d", i);
+ OstTrace1( TRACE_NORMAL, DUP5_CHARVESTERAO_HANDLEUNMOUNT, "CHarvesterAO::HandleUnmount remove iPHArray %d", i );
+
delete hd;
hd = NULL;
iPHArray.Remove( i );
@@ -532,6 +567,7 @@
iPHArray.Compress();
}
WRITELOG1( "CHarvesterAO::HandleUnmount() DecreaseItemCountL iPHArray %d", removed);
+ OstTrace1( TRACE_NORMAL, DUP6_CHARVESTERAO_HANDLEUNMOUNT, "CHarvesterAO::HandleUnmount DecreaseItemCountL iPHArray %d", removed );
TRAP_IGNORE( iHarvesterEventManager->DecreaseItemCountL( EHEObserverTypePlaceholder, removed) );
}
@@ -539,6 +575,8 @@
#ifdef _DEBUG
WRITELOG1( "CHarvesterAO::HandleUnmount() iContainerPHArray.Count() = %d", iContainerPHArray.Count() );
+ OstTrace1( TRACE_NORMAL, DUP7_CHARVESTERAO_HANDLEUNMOUNT, "CHarvesterAO::HandleUnmount iContainerPHArray.Count()=%d", iContainerPHArray.Count() );
+
#endif
arrayCount = iContainerPHArray.Count();
if( arrayCount > 0 )
@@ -551,6 +589,8 @@
if( err == KErrNone && mediaId == aMediaId )
{
WRITELOG1( "CHarvesterAO::HandleUnmount() remove iContainerPHArray %d", i);
+ OstTrace1( TRACE_NORMAL, DUP8_CHARVESTERAO_HANDLEUNMOUNT, "CHarvesterAO::HandleUnmount remove iContainerPHArray %d", i );
+
delete hd;
hd = NULL;
iContainerPHArray.Remove( i );
@@ -601,11 +641,16 @@
const TUint count = iQueue->ItemsInQueue();
WRITELOG1( "CHarvesterAO::HandleUnmount() iQueue.Count() = %d", count );
+ OstTrace1( TRACE_NORMAL, DUP10_CHARVESTERAO_HANDLEUNMOUNT, "CHarvesterAO::HandleUnmount iQueue.Count() = %d", count );
+
if( count > 0 )
{
WRITELOG( "CHarvesterAO::HandleUnmount() remove iQueue" );
+ OstTrace0( TRACE_NORMAL, DUP11_CHARVESTERAO_HANDLEUNMOUNT, "CHarvesterAO::HandleUnmount remove iQueue" );
removed = iQueue->RemoveItems( aMediaId );
WRITELOG1( "CHarvesterAO::HandleUnmount() removed iQueue = %d", removed );
+ OstTrace1( TRACE_NORMAL, DUP12_CHARVESTERAO_HANDLEUNMOUNT, "CHarvesterAO::HandleUnmount removed iQueue = %d", removed );
+
TRAP_IGNORE( iHarvesterEventManager->DecreaseItemCountL( EHEObserverTypePlaceholder, removed ) );
TRAP_IGNORE( iHarvesterEventManager->DecreaseItemCountL( EHEObserverTypeMMC, removed ) );
}
@@ -650,6 +695,8 @@
if( removed )
{
WRITELOG1( "CHarvesterAO::HandleUnmount() remove from plugins = %d", removed);
+ OstTrace1( TRACE_NORMAL, DUP13_CHARVESTERAO_HANDLEUNMOUNT, "CHarvesterAO::HandleUnmount remove from plugins = %d", removed );
+
TRAP_IGNORE( iHarvesterEventManager->DecreaseItemCountL( EHEObserverTypePlaceholder, removed ) );
TRAP_IGNORE( iHarvesterEventManager->DecreaseItemCountL( EHEObserverTypeMMC, removed ) );
}
@@ -673,7 +720,8 @@
void CHarvesterAO::StartComposersL()
{
WRITELOG( "CHarvesterAO::StartComposersL()" );
-
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_STARTCOMPOSERSL, "CHarvesterAO::StartComposersL" );
+
RImplInfoPtrArray infoArray;
TCleanupItem cleanupItem( MdsUtils::CleanupEComArray, &infoArray );
CleanupStack::PushL( cleanupItem );
@@ -707,6 +755,7 @@
void CHarvesterAO::StopComposers()
{
WRITELOG( "CHarvesterAO::StopComposers()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_STOPCOMPOSERS, "CHarvesterAO::StopComposers" );
const TInt count( iComposerPluginArray.Count() );
for ( TInt i = count; --i >= 0; )
@@ -724,6 +773,7 @@
void CHarvesterAO::DeleteComposers()
{
WRITELOG( "CHarvesterAO::DeleteComposers()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_DELETECOMPOSERS, "CHarvesterAO::DeleteComposers" );
iComposerPluginArray.ResetAndDestroy();
iComposerPluginArray.Close();
@@ -738,6 +788,7 @@
TBool CHarvesterAO::IsComposingReady()
{
WRITELOG( "CHarvesterAO::IsComposingReady()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_ISCOMPOSINGREADY, "CHarvesterAO::IsComposingReady" );
const TInt count( iComposerPluginArray.Count() );
for ( TInt i = count; --i >= 0; )
@@ -759,6 +810,7 @@
void CHarvesterAO::ReadItemFromQueueL()
{
WRITELOG( "CHarvesterAO::ReadItemFromQueueL()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_READITEMFROMQUEUEL, "CHarvesterAO::ReadItemFromQueueL" );
CHarvesterData* hd = iQueue->GetNextItem();
@@ -873,6 +925,7 @@
void CHarvesterAO::HandlePlaceholdersL( TBool aCheck )
{
WRITELOG( "CHarvesterAO::HandlePlaceholdersL()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_HANDLEPLACEHOLDERSL, "CHarvesterAO::HandlePlaceholdersL" );
RPointerArray<CMdEObject> mdeObjectArray;
CleanupClosePushL( mdeObjectArray );
@@ -974,6 +1027,8 @@
if ( err != KErrNone )
{
WRITELOG( "CHarvesterAO::HandlePlaceholdersL() - cannot create placeholder data object for camera. file does not exists" );
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_HANDLEPLACEHOLDERSL, "CHarvesterAO::HandlePlaceholdersL- cannot create placeholder data object for camera. file does not exists" );
+
// notify observer
HarvestCompleted( hd->ClientId(), hd->Uri(), err );
delete hd;
@@ -1002,6 +1057,8 @@
if( !phData )
{
WRITELOG( "CHarvesterAO::HandlePlaceholdersL() - Placeholder data object NULL - abort" );
+ OstTrace0( TRACE_NORMAL, DUP2_CHARVESTERAO_HANDLEPLACEHOLDERSL, "CHarvesterAO::HandlePlaceholdersL - Placeholder data object NULL - abort" );
+
const TInt error( KErrUnknown );
// notify observer
HarvestCompleted( hd->ClientId(), hd->Uri(), error );
@@ -1088,6 +1145,8 @@
if( isPreinstalled == MdeConstants::MediaObject::EPreinstalled )
{
WRITELOG("CHarvesterAO::HandlePlaceholdersL() - preinstalled");
+ OstTrace0( TRACE_NORMAL, DUP3_CHARVESTERAO_HANDLEPLACEHOLDERSL, "CHarvesterAO::HandlePlaceholdersL - preinstalled" );
+
mdeObject->AddInt32PropertyL( *iPropDefs->iPreinstalledPropertyDef, isPreinstalled );
}
@@ -1193,6 +1252,8 @@
if( objDefStr.Length() == 0 )
{
WRITELOG( "CHarvesterAO::CheckFileExtensionAndHarvestL() - cannot get object definition" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL, "CHarvesterAO::CheckFileExtensionAndHarvestL - cannot get object definition" );
+
isError = ETrue;
}
else if( objDefStr == KInUse )
@@ -1221,21 +1282,29 @@
else
{
WRITELOG( "CHarvesterAO::CheckFileExtensionAndHarvestL() - getting mdeobject" );
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL, "CHarvesterAO::CheckFileExtensionAndHarvestL - getting mdeobject" );
+
TRAP( mdeError, mdeObject = iMdeObjectHandler->GetMetadataObjectL( *aHD, objDefStr ) );
}
TInt harvesterError = KErrNone;
if( mdeError != KErrNone)
{
WRITELOG1( "CHarvesterAO::CheckFileExtensionAndHarvestL() - cannot get mde object. error: %d", mdeError );
+ OstTrace1( TRACE_NORMAL, DUP2_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL, "CHarvesterAO::CheckFileExtensionAndHarvestL - cannot get mde object. error: %d", mdeError );
+
MdsUtils::ConvertTrapError( mdeError, harvesterError );
if( harvesterError == KMdEErrHarvestingFailedPermanent )
{
WRITELOG( "CHarvesterAO::CheckFileExtensionAndHarvestL() - permanent fail" );
+ OstTrace0( TRACE_NORMAL, DUP3_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL, "CHarvesterAO::CheckFileExtensionAndHarvestL - permanent fail" );
+
isError = ETrue;
}
else if ( harvesterError == KMdEErrHarvestingFailed )
{
WRITELOG( "CHarvesterAO::CheckFileExtensionAndHarvestL() - KMdEErrHarvestingFailed");
+ OstTrace0( TRACE_NORMAL, DUP4_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL, "CHarvesterAO::CheckFileExtensionAndHarvestL - KMdEErrHarvestingFailed" );
+
aHD->SetErrorCode( KMdEErrHarvestingFailed );
HarvestingCompleted( aHD );
return;
@@ -1245,6 +1314,8 @@
if( !mdeObject )
{
WRITELOG( "CHarvesterAO::CheckFileExtensionAndHarvestL() - mde object is null. stop harvesting" );
+ OstTrace0( TRACE_NORMAL, DUP5_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL, "CHarvesterAO::CheckFileExtensionAndHarvestL - mde object is null. stop harvesting" );
+
isError = ETrue;
}
}
@@ -1284,9 +1355,13 @@
if ( err != KErrNone )
{
WRITELOG1( "CHarvesterAO::CheckFileExtensionAndHarvestL() - plugin error: %d", err );
+ OstTrace1( TRACE_NORMAL, DUP6_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL, "CHarvesterAO::CheckFileExtensionAndHarvestL - plugin error: %d", err );
+
if ( err == KErrInUse )
{
WRITELOG( "CHarvesterAO::CheckFileExtensionAndHarvestL() - item in use" );
+ OstTrace0( TRACE_NORMAL, DUP7_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL, "CHarvesterAO::CheckFileExtensionAndHarvestL - item in use" );
+
aHD->SetErrorCode( KMdEErrHarvestingFailed );
HarvestingCompleted( aHD );
return;
@@ -1305,6 +1380,8 @@
}
WRITELOG1("CHarvesterAO::CheckFileExtensionAndHarvestL() - ends with error %d", pluginErr );
+ OstTrace1( TRACE_NORMAL, DUP8_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL, "CHarvesterAO::CheckFileExtensionAndHarvestL) - ends with error %d", pluginErr );
+
SetNextRequest( ERequestHarvest );
}
@@ -1315,7 +1392,8 @@
void CHarvesterAO::HarvestingCompleted( CHarvesterData* aHD )
{
WRITELOG( "CHarvesterAO::HarvestingCompleted()" );
-
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_HARVESTINGCOMPLETED, "CHarvesterAO::HarvestingCompleted" );
+
if ( aHD->ErrorCode() == KErrNone )
{
iReHarvester->CheckItem( *aHD );
@@ -1324,6 +1402,8 @@
if( !aHD->TakeSnapshot() )
{
WRITELOG( "CHarvesterAO::HarvestingCompleted() origin is not camera or clf" );
+ OstTrace0( TRACE_NORMAL, DUP2_CHARVESTERAO_HARVESTINGCOMPLETED, "CHarvesterAO::HarvestingCompleted origin is not camera or clf" );
+
aHD->MdeObject().SetPlaceholder( EFalse );
TRAP_IGNORE( iHarvesterEventManager->DecreaseItemCountL( EHEObserverTypePlaceholder ) );
TRAP( mdeError, iMdeObjectHandler->SetMetadataObjectL( *aHD ) );
@@ -1334,6 +1414,8 @@
WRITELOG( "==============================ERROR===============================" );
WRITELOG( "CHarvesterAO::HarvestingCompleted() - cannot set metadata object" );
WRITELOG( "==============================ERROR done =========================" );
+ OstTrace0( TRACE_NORMAL, DUP3_CHARVESTERAO_HARVESTINGCOMPLETED, "CHarvesterAO::HarvestingCompleted - cannot set metadata object" );
+
delete aHD;
aHD = NULL;
@@ -1342,9 +1424,13 @@
else
{
WRITELOG( "CHarvesterAO::HarvestingCompleted() mdeError == KErrNone" );
+ OstTrace0( TRACE_NORMAL, DUP4_CHARVESTERAO_HARVESTINGCOMPLETED, "CHarvesterAO::HarvestingCompleted mdeError == KErrNone" );
+
if ( aHD->TakeSnapshot() && iCtxEngine )
{
WRITELOG( "CHarvesterAO::HarvestingCompleted() - Taking a context snapshot." );
+ OstTrace0( TRACE_NORMAL, DUP5_CHARVESTERAO_HARVESTINGCOMPLETED, "CHarvesterAO::HarvestingCompleted - Taking a context snapshot." );
+
iCtxEngine->ContextSnapshot( *this, *aHD );
}
else
@@ -1353,6 +1439,8 @@
if( locData )
{
WRITELOG( "CHarvesterAO::HarvestingCompleted() - Creating location object. " );
+ OstTrace0( TRACE_NORMAL, DUP6_CHARVESTERAO_HARVESTINGCOMPLETED, "CHarvesterAO::HarvestingCompleted - Creating location object." );
+
RLocationObjectManipulator lo;
const TInt loError = lo.Connect();
@@ -1363,11 +1451,14 @@
if( err != KErrNone )
{
WRITELOG( "CHarvesterAO::HarvestingCompleted() - Location object creation failed!!!" );
+ OstTrace0( TRACE_NORMAL, DUP7_CHARVESTERAO_HARVESTINGCOMPLETED, "CHarvesterAO::HarvestingCompleted - Location object creation failed!!!" );
+
}
}
else
{
WRITELOG( "CHarvesterAO::HarvestingCompleted() - LocationObjectManipulator connect failed!!!" );
+ OstTrace0( TRACE_NORMAL, DUP8_CHARVESTERAO_HARVESTINGCOMPLETED, "CHarvesterAO::HarvestingCompleted - LocationObjectManipulator connect failed!!" );
}
lo.Close();
@@ -1385,6 +1476,8 @@
#ifdef _DEBUG
WRITELOG( "==============================ERROR===============================" );
WRITELOG1( "CHarvesterAO::HarvestingCompleted() - not OK! Error: %d", aHD->ErrorCode() );
+ OstTrace1( TRACE_NORMAL, DUP9_CHARVESTERAO_HARVESTINGCOMPLETED, "CHarvesterAO::HarvestingCompleted - not OK! Error: %d", aHD->ErrorCode() );
+
#endif
const TInt errorCode( aHD->ErrorCode() );
@@ -1392,6 +1485,7 @@
{
#ifdef _DEBUG
WRITELOG1("CHarvesterAO::HarvestingCompleted() - KMdEErrHarvestingFailed - %S - reharvesting", &aHD->Uri() );
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_HARVESTINGCOMPLETED, "CHarvesterAO::HarvestingCompleted - KMdEErrHarvestingFailed - reharvesting" );
#endif
iReHarvester->AddItem( aHD );
}
@@ -1399,7 +1493,7 @@
errorCode == KMdEErrHarvestingFailedUnknown )
{
WRITELOG( "CHarvesterAO::HarvestingCompleted() - KMdEErrHarvestingFailedPermanent - no need to re-harvest!" );
-
+ OstTrace0( TRACE_NORMAL, DUP10_CHARVESTERAO_HARVESTINGCOMPLETED, "CHarvesterAO::HarvestingCompleted - KMdEErrHarvestingFailedPermanent - no need to re-harvest!" );
TRAP_IGNORE( iHarvesterEventManager->DecreaseItemCountL( EHEObserverTypeMMC, 1 ) );
delete aHD;
@@ -1408,11 +1502,15 @@
else
{
WRITELOG1( "CHarvesterAO::HarvestingCompleted() - unknown error: %d", errorCode );
+ OstTrace1( TRACE_NORMAL, DUP11_CHARVESTERAO_HARVESTINGCOMPLETED, "CHarvesterAO::HarvestingCompleted - unknown error: %d", errorCode );
+
delete aHD;
aHD = NULL;
}
WRITELOG( "==============================ERROR done =========================" );
+ OstTrace0( TRACE_NORMAL, DUP12_CHARVESTERAO_HARVESTINGCOMPLETED, "==============================ERROR done =========================" );
+
}
SetNextRequest( ERequestHarvest );
@@ -1425,7 +1523,8 @@
void CHarvesterAO::HandleSessionOpened( CMdESession& aSession, TInt aError )
{
WRITELOG( "HarvesterThread::HandleSessionOpened()" );
-
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_HANDLESESSIONOPENED, "CHarvesterAO::HandleSessionOpened" );
+
if ( KErrNone == aError )
{
TBool isTNMDaemonEnabled( EFalse );
@@ -1444,6 +1543,7 @@
else
{
WRITELOG( "CHarvesterAO::HandleSessionOpened() - error creating mde harvester session" );
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_HANDLESESSIONOPENED, "CHarvesterAO::HandleSessionOpened) - error creating mde harvester session" );
}
// Setting up context Engine (initialization is ready when ContextInitializationStatus -callback is called)
@@ -1451,6 +1551,7 @@
if ( errorTrap != KErrNone )
{
WRITELOG( "CHarvesterAO::HandleSessionOpened() - Context Engine creation failed" );
+ OstTrace0( TRACE_NORMAL, DUP2_CHARVESTERAO_HANDLESESSIONOPENED, "CHarvesterAO::HandleSessionOpened - Context Engine creation failed" );
}
#ifdef _DEBUG
@@ -1458,6 +1559,7 @@
if ( errorTrap != KErrNone )
{
WRITELOG( "CHarvesterAO::HandleSessionOpened() - ObjectHandler creation failed" );
+ OstTrace0( TRACE_NORMAL, DUP3_CHARVESTERAO_HANDLESESSIONOPENED, "CHarvesterAO::HandleSessionOpened - ObjectHandler creation failed" );
}
// Setting up monitor plugins
@@ -1465,6 +1567,7 @@
if ( errorTrap != KErrNone )
{
WRITELOG( "CHarvesterAO::HandleSessionOpened() - error loading monitor plugins" );
+ OstTrace0( TRACE_NORMAL, DUP4_CHARVESTERAO_HANDLESESSIONOPENED, "CHarvesterAO::HandleSessionOpened - error loading monitor plugins" );
}
// To check if the default namespace structure is in order
@@ -1472,12 +1575,15 @@
if ( errorTrap != KErrNone )
{
WRITELOG( "CHarvesterAO::HandleSessionOpened() - error loading default schema" );
+ OstTrace0( TRACE_NORMAL, DUP5_CHARVESTERAO_HANDLESESSIONOPENED, "CHarvesterAO::HandleSessionOpened - error loading default schema" );
}
TRAP( errorTrap, StartComposersL() );
if ( errorTrap != KErrNone )
{
WRITELOG( "CHarvesterAO::HandleSessionOpened() - couldn't start composer plugins" );
+ OstTrace0( TRACE_NORMAL, DUP6_CHARVESTERAO_HANDLESESSIONOPENED, "CHarvesterAO::HandleSessionOpened - couldn't start composer plugins" );
+
}
#else
// The idea here is that all of these methods needs to be called,
@@ -1495,6 +1601,7 @@
if ( errorTrap != KErrNone )
{
WRITELOG( "CHarvesterAO::HandleSessionOpened() - couldn't start diskspace observer" );
+ OstTrace0( TRACE_NORMAL, DUP7_CHARVESTERAO_HANDLESESSIONOPENED, "CHarvesterAO::HandleSessionOpened - couldn't start diskspace observer" );
}
TRAP( errorTrap, iOnDemandAO = COnDemandAO::NewL( *iMdESession, *iQueue,
@@ -1505,11 +1612,13 @@
if ( errorTrap != KErrNone )
{
WRITELOG( "CHarvesterAO::HandleSessionOpened() - couldn't start on demand observer" );
+ OstTrace0( TRACE_NORMAL, DUP8_CHARVESTERAO_HANDLESESSIONOPENED, "CHarvesterAO::HandleSessionOpened - couldn't start on demand observer" );
}
}
else
{
WRITELOG( "CHarvesterAO::HandleSessionOpened() - couldn't create on demand observer" );
+ OstTrace0( TRACE_NORMAL, DUP9_CHARVESTERAO_HANDLESESSIONOPENED, "CHarvesterAO::HandleSessionOpened - couldn't create on demand observer" );
}
// Initializing pause indicator
@@ -1517,7 +1626,8 @@
#ifdef _DEBUG
WRITELOG( "HarvesterThread::HandleSessionOpened() - Succeeded!" );
-
+ OstTrace0( TRACE_NORMAL, DUP10_CHARVESTERAO_HANDLESESSIONOPENED, "CHarvesterAO::HandleSessionOpened - Succeeded!" );
+
TBool isRomScanEnabled( EFalse );
TRAP_IGNORE( CHarvesterCenRepUtil::IsRomScanEnabledL( isRomScanEnabled ) );
@@ -1527,6 +1637,7 @@
if( errorTrap != KErrNone )
{
WRITELOG1( "CHarvesterAO::HandleSessionOpened() - BootRomScanL() returned error: %d", errorTrap );
+ OstTrace1( TRACE_NORMAL, DUP11_CHARVESTERAO_HANDLESESSIONOPENED, "CHarvesterAO::HandleSessionOpened - BootRomScanL() returned error: %d", errorTrap );
}
}
@@ -1534,6 +1645,7 @@
if( errorTrap != KErrNone )
{
WRITELOG1( "CHarvesterAO::HandleSessionOpened() - BootPartialRestoreScanL() returned error: %d", errorTrap );
+ OstTrace1( TRACE_NORMAL, DUP12_CHARVESTERAO_HANDLESESSIONOPENED, "CHarvesterAO::HandleSessionOpened - BootPartialRestoreScanL() returned error: %d", errorTrap );
}
#else
// The idea here is that all of these three methods needs to be called,
@@ -1574,6 +1686,7 @@
{
iServerPaused = ETrue;
WRITELOG1( "HarvesterThread::HandleSessionOpened() - Failed: %d!", aError );
+ OstTrace1( TRACE_NORMAL, DUP13_CHARVESTERAO_HANDLESESSIONOPENED, "CHarvesterAO::HandleSessionOpened - Failed: %d!", aError );
}
}
@@ -1585,7 +1698,8 @@
{
if ( KErrNone != aError )
{
- WRITELOG1( "HarvesterThread::HandleSessionError() - Error: %d!", aError );
+ WRITELOG1( "HarvesterThread::HandleSessionError() - Error: %d!", aError );
+ OstTrace1( TRACE_NORMAL, CHARVESTERAO_HANDLESESSIONERROR, "CHarvesterAO::HandleSessionError - Error: %d!", aError );
}
}
@@ -1596,10 +1710,13 @@
void CHarvesterAO::ContextInitializationStatus( TInt aErrorCode )
{
WRITELOG( "CHarvesterAO::ContextInitializationStatus()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_CONTEXTINITIALIZATIONSTATUS, "CHarvesterAO::ContextInitializationStatus" );
if ( KErrNone == aErrorCode )
{
WRITELOG( "HarvesterThread::ContextInitializationStatus() - Succeeded!" );
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_CONTEXTINITIALIZATIONSTATUS, "CHarvesterAO::ContextInitializationStatus - Succeeded!" );
+
iContextEngineInitialized = ETrue;
if ( iMdeSessionInitialized )
{
@@ -1609,6 +1726,8 @@
else
{
WRITELOG1( "HarvesterThread::ContextInitializationStatus() - Failed: %d!", aErrorCode );
+ OstTrace1( TRACE_NORMAL, DUP2_CHARVESTERAO_CONTEXTINITIALIZATIONSTATUS, "CHarvesterAO::ContextInitializationStatus - Failed: %d!", aErrorCode );
+
}
}
@@ -1619,6 +1738,7 @@
TInt CHarvesterAO::PauseHarvester()
{
WRITELOG( "CHarvesterAO::PauseHarvester()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_PAUSEHARVESTER, "CHarvesterAO::PauseHarvester" );
iHarvesterPluginFactory->PauseHarvester( ETrue );
iServerPaused = ETrue;
@@ -1630,7 +1750,8 @@
// Everything is paused
WRITELOG( "CHarvesterAO::PauseHarvester() - Moving paused state paused" );
-
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_PAUSEHARVESTER, "CHarvesterAO::PauseHarvester - Moving paused state paused" );
+
return KErrNone;
}
@@ -1641,6 +1762,7 @@
void CHarvesterAO::ResumeHarvesterL()
{
WRITELOG( "CHarvesterAO::ResumeHarvesterL()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_RESUMEHARVESTERL, "CHarvesterAO::ResumeHarvesterL" );
iHarvesterPluginFactory->PauseHarvester( EFalse );
iServerPaused = EFalse;
@@ -1661,6 +1783,8 @@
void CHarvesterAO::RunL()
{
WRITELOG( "CHarvesterAO::RunL" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_RUNL, "CHarvesterAO::RunL" );
+
// check if pause is requested
if ( this->iServerPaused && iNextRequest != ERequestPause && iNextRequest != ERequestResume)
{
@@ -1679,6 +1803,8 @@
case ERequestIdle:
{
WRITELOG( "CHarvesterAO::RunL - ERequestIdle" );
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_RUNL, "CHarvesterAO::RunL - ERequestIdle" );
+
iReadyPHArray.Compress();
iContainerPHArray.Compress();
iPHArray.Compress();
@@ -1690,6 +1816,7 @@
case ERequestHarvest:
{
WRITELOG( "CHarvesterAO::RunL - ERequestHarvest" );
+ OstTrace0( TRACE_NORMAL, DUP2_CHARVESTERAO_RUNL, "CHarvesterAO::RunL - ERequestHarvest" );
// harvest new items first...
if ( iQueue->ItemsInQueue() > 0 )
@@ -1735,6 +1862,7 @@
{
#ifdef _DEBUG
WRITELOG1("CHarvesterAO::RunL - items in ready pharray: %d", arrayCount );
+ OstTrace1( TRACE_NORMAL, DUP3_CHARVESTERAO_RUNL, "CHarvesterAO::RunL - items in ready pharray: %d", arrayCount );
#endif
TInt endIndex( KPlaceholderQueueSize );
if( arrayCount < KPlaceholderQueueSize )
@@ -1770,7 +1898,9 @@
{
#ifdef _DEBUG
WRITELOG( "CHarvesterAO::RunL - ERequestContainerPlaceholder" );
+ OstTrace0( TRACE_NORMAL, DUP4_CHARVESTERAO_RUNL, "CHarvesterAO::RunL - ERequestContainerPlaceholder" );
WRITELOG1( "CHarvesterAO::RunL - Items in container pharray: %d", iContainerPHArray.Count() );
+ OstTrace1( TRACE_NORMAL, DUP5_CHARVESTERAO_RUNL, "CHarvesterAO::RunL - Items in container pharray: %d", iContainerPHArray.Count() );
#endif
TInt count = iContainerPHArray.Count() > KContainerPlaceholderQueueSize ? KContainerPlaceholderQueueSize : iContainerPHArray.Count();
TInt i = 0;
@@ -1799,6 +1929,7 @@
case ERequestPause:
{
WRITELOG( "CHarvesterAO::RunL - ERequestPause" );
+ OstTrace0( TRACE_NORMAL, DUP6_CHARVESTERAO_RUNL, "CHarvesterAO::RunL - ERequestPause" );
User::LeaveIfError( PauseHarvester() );
iHarvesterEventManager->SendEventL( EHEObserverTypeOverall, EHEStatePaused );
if( iHarvesterStatusObserver )
@@ -1812,6 +1943,7 @@
case ERequestResume:
{
WRITELOG( "CHarvesterAO::RunL - ERequestResume" );
+ OstTrace0( TRACE_NORMAL, DUP7_CHARVESTERAO_RUNL, "CHarvesterAO::RunL - ERequestResume" );
ResumeHarvesterL();
iHarvesterEventManager->SendEventL( EHEObserverTypeOverall, EHEStateResumed );
if( iHarvesterStatusObserver )
@@ -1825,6 +1957,7 @@
default:
{
WRITELOG( "CHarvesterAO::RunL - Not supported request" );
+ OstTrace0( TRACE_NORMAL, DUP8_CHARVESTERAO_RUNL, "CHarvesterAO::RunL - Not supported request" );
User::Leave( KErrNotSupported );
}
break;
@@ -1838,6 +1971,7 @@
void CHarvesterAO::DoCancel()
{
WRITELOG( "CHarvesterAO::DoCancel()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_DOCANCEL, "CHarvesterAO::DoCancel" );
}
// ---------------------------------------------------------------------------
@@ -1847,17 +1981,22 @@
TInt CHarvesterAO::RunError( TInt aError )
{
WRITELOG( "CHarvesterAO::RunError" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_RUNERROR, "CHarvesterAO::RunError" );
+
switch( iNextRequest )
{
case ERequestHarvest:
{
WRITELOG( "CHarvesterAO::RunError - state ERequestHarvest" );
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_RUNERROR, "CHarvesterAO::RunError - state ERequestHarvest" );
}
break;
case ERequestPause:
{
WRITELOG( "CHarvesterAO::RunError - state ERequestPause" );
+ OstTrace0( TRACE_NORMAL, DUP2_CHARVESTERAO_RUNERROR, "CHarvesterAO::RunError - state ERequestPause" );
+
if ( aError == KErrNotReady )
{
SetNextRequest( ERequestPause );
@@ -1872,6 +2011,8 @@
case ERequestResume:
{
WRITELOG( "CHarvesterAO::RunError - state ERequestResume" );
+ OstTrace0( TRACE_NORMAL, DUP3_CHARVESTERAO_RUNERROR, "CHarvesterAO::RunError - state ERequestResume" );
+
if( iHarvesterStatusObserver )
{
iHarvesterStatusObserver->ResumeReady( aError );
@@ -1882,6 +2023,7 @@
default:
{
WRITELOG( "CHarvesterAO::RunError - unknown state" );
+ OstTrace0( TRACE_NORMAL, DUP4_CHARVESTERAO_RUNERROR, "CHarvesterAO::RunError - unknown state" );
}
break;
}
@@ -1896,6 +2038,8 @@
void CHarvesterAO::SetNextRequest( TRequest aRequest )
{
WRITELOG( "CHarvesterAO::SetNextRequest" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_SETNEXTREQUEST, "CHarvesterAO::SetNextRequest" );
+
iNextRequest = aRequest;
if ( !IsActive() )
@@ -1914,6 +2058,8 @@
TBool CHarvesterAO::IsServerPaused()
{
WRITELOG( "CHarvesterAO::IsServerPaused" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_ISSERVERPAUSED, "CHarvesterAO::IsServerPaused" );
+
return iServerPaused;
}
@@ -1927,6 +2073,8 @@
{
// close blacklist database connection
WRITELOG( "CHarvesterAO::BackupRestoreStart" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_BACKUPRESTORESTART, "CHarvesterAO::BackupRestoreStart" );
+
iBlacklist->CloseDatabase();
}
@@ -1940,6 +2088,8 @@
{
// restart blacklist database connection
WRITELOG( "CHarvesterAO::BackupRestoreReady" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_BACKUPRESTOREREADY, "CHarvesterAO::BackupRestoreReady" );
+
iBlacklist->OpenDatabase();
}
@@ -1951,14 +2101,18 @@
void CHarvesterAO::HandleDiskSpaceNotificationL( TDiskSpaceDirection aDiskSpaceDirection )
{
WRITELOG("CHarvesterAO::HandleDiskSpaceNotificationL()");
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_HANDLEDISKSPACENOTIFICATIONL, "CHarvesterAO::HandleDiskSpaceNotificationL" );
+
if( MMdSHarvesterDiskSpaceObserver::EMore == aDiskSpaceDirection )
{
WRITELOG("CHarvesterAO::HandleDiskSpaceNotificationL() - disk full");
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_HANDLEDISKSPACENOTIFICATIONL, "CHarvesterAO::HandleDiskSpaceNotificationL - disk full" );
iDiskFull = EFalse;
}
else
{
WRITELOG("CHarvesterAO::HandleDiskSpaceNotificationL() - disk space available");
+ OstTrace0( TRACE_NORMAL, DUP2_CHARVESTERAO_HANDLEDISKSPACENOTIFICATIONL, "CHarvesterAO::HandleDiskSpaceNotificationL - disk space available" );
iDiskFull = ETrue;
if( iServerPaused )
{
@@ -1987,6 +2141,8 @@
void CHarvesterAO::HarvestFile( const RMessage2& aMessage )
{
WRITELOG( "CHarvesterAO::HarvestFile" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_HARVESTFILE, "CHarvesterAO::HarvestFile" );
+
const TInt KParamUri = 0;
const TInt KParamAlbumIds = 1;
const TInt KParamAddLocation = 2;
@@ -1997,6 +2153,8 @@
if ( ! uri )
{
WRITELOG( "CHarvesterAO::HarvestFile - out of memory creating uri container" );
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_HARVESTFILE, "CHarvesterAO::HarvestFile - out of memory creating uri container" );
+
if (!aMessage.IsNull())
{
aMessage.Complete( KErrNoMemory );
@@ -2009,6 +2167,8 @@
if ( err != KErrNone )
{
WRITELOG1( "CHarvesterAO::HarvestFile - error in reading aMessage (uri): %d", err );
+ OstTrace1( TRACE_NORMAL, DUP2_CHARVESTERAO_HARVESTFILE, "CHarvesterAO::HarvestFile - error in reading aMessage (uri): %d", err );
+
if (!aMessage.IsNull())
{
aMessage.Complete( err );
@@ -2028,6 +2188,8 @@
if ( !albumIdBuf )
{
WRITELOG( "CHarvesterAO::HarvestFile - error creating album id buffer." );
+ OstTrace0( TRACE_NORMAL, DUP3_CHARVESTERAO_HARVESTFILE, "CHarvesterAO::HarvestFile - error creating album id buffer." );
+
if (!aMessage.IsNull())
{
aMessage.Complete( KErrNoMemory );
@@ -2041,6 +2203,7 @@
if ( err != KErrNone )
{
WRITELOG1( "CHarvesterAO::HarvestFile - error in reading aMessage (albumIds): %d", err );
+ OstTrace1( TRACE_NORMAL, DUP4_CHARVESTERAO_HARVESTFILE, "CHarvesterAO::HarvestFile - error in reading aMessage (albumIds): %d", err );
delete albumIdBuf;
albumIdBuf = NULL;
delete uri;
@@ -2056,6 +2219,8 @@
if ( err != KErrNone )
{
WRITELOG1( "CHarvesterAO::HarvestFile - error in reading album id array: %d", err );
+ OstTrace1( TRACE_NORMAL, DUP5_CHARVESTERAO_HARVESTFILE, "CHarvesterAO::HarvestFile - error in reading album id array: %d", err );
+
delete albumIdBuf;
albumIdBuf = NULL;
delete uri;
@@ -2079,6 +2244,8 @@
albumIdBuf = NULL;
WRITELOG1( "CHarvesterAO::HarvestFile - album id count: %d", albumIds.Count() );
+ OstTrace1( TRACE_NORMAL, DUP6_CHARVESTERAO_HARVESTFILE, "CHarvesterAO::HarvestFile - album id count: %d", albumIds.Count() );
+
}
TBool addLocation;
@@ -2087,6 +2254,8 @@
if ( err != KErrNone )
{
WRITELOG1( "CHarvesterAO::HarvestFile - error in reading aMessage (addLocation): %d", err );
+ OstTrace1( TRACE_NORMAL, DUP7_CHARVESTERAO_HARVESTFILE, "CHarvesterAO::HarvestFile - error in reading aMessage (addLocation): %d", err );
+
delete uri;
uri = NULL;
if (!aMessage.IsNull())
@@ -2097,12 +2266,16 @@
}
WRITELOG1( "RHarvesterClient::HarvestFile - add location: %d", addLocation );
+ OstTrace1( TRACE_NORMAL, DUP8_CHARVESTERAO_HARVESTFILE, "CHarvesterAO::HarvestFile - add location: %d", addLocation );
+
CHarvesterData* hd = NULL;
TRAP( err, hd = CHarvesterData::NewL( uri ) );
if ( err != KErrNone || !hd )
{
WRITELOG( "CHarvesterAO::HarvestFile - creating harvUri failed" );
+ OstTrace0( TRACE_NORMAL, DUP9_CHARVESTERAO_HARVESTFILE, "CHarvesterAO::HarvestFile - creating harvUri failed" );
+
albumIds.Close();
delete uri;
uri = NULL;
@@ -2129,6 +2302,7 @@
else
{
WRITELOG( "CHarvesterAO::HarvestFile - creating clientData failed" );
+ OstTrace0( TRACE_NORMAL, DUP10_CHARVESTERAO_HARVESTFILE, "CHarvesterAO::HarvestFile - creating clientData failed" );
}
if( iQueue )
@@ -2164,6 +2338,8 @@
void CHarvesterAO::HarvestFileWithUID( const RMessage2& aMessage )
{
WRITELOG( "CHarvesterAO::HarvestFileWithUID" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_HARVESTFILEWITHUID, "CHarvesterAO::HarvestFileWithUID" );
+
const TInt KParamUri = 0;
const TInt KParamAlbumIds = 1;
const TInt KParamAddLocation = 2;
@@ -2174,6 +2350,8 @@
if ( ! uri )
{
WRITELOG( "CHarvesterAO::HarvestFileWithUID - out of memory creating uri container" );
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_HARVESTFILEWITHUID, "CHarvesterAO::HarvestFileWithUID - out of memory creating uri container" );
+
if (!aMessage.IsNull())
{
aMessage.Complete( KErrNoMemory );
@@ -2186,6 +2364,8 @@
if ( err != KErrNone )
{
WRITELOG1( "CHarvesterAO::HarvestFileWithUID - error in reading aMessage (uri): %d", err );
+ OstTrace1( TRACE_NORMAL, DUP2_CHARVESTERAO_HARVESTFILEWITHUID, "CHarvesterAO::HarvestFileWithUID - error in reading aMessage (uri): %d", err );
+
if (!aMessage.IsNull())
{
aMessage.Complete( err );
@@ -2205,6 +2385,8 @@
if ( !albumIdBuf )
{
WRITELOG( "CHarvesterAO::HarvestFileWithUID - error creating album id buffer." );
+ OstTrace0( TRACE_NORMAL, DUP3_CHARVESTERAO_HARVESTFILEWITHUID, "CHarvesterAO::HarvestFileWithUID - error creating album id buffer." );
+
if (!aMessage.IsNull())
{
aMessage.Complete( KErrNoMemory );
@@ -2218,6 +2400,8 @@
if ( err != KErrNone )
{
WRITELOG1( "CHarvesterAO::HarvestFileWithUID - error in reading aMessage (albumIds): %d", err );
+ OstTrace1( TRACE_NORMAL, DUP4_CHARVESTERAO_HARVESTFILEWITHUID, "CHarvesterAO::HarvestFileWithUID - error in reading aMessage (albumIds): %d", err );
+
delete albumIdBuf;
albumIdBuf = NULL;
delete uri;
@@ -2233,6 +2417,8 @@
if ( err != KErrNone )
{
WRITELOG1( "CHarvesterAO::HarvestFileWithUID - error in reading album id array: %d", err );
+ OstTrace1( TRACE_NORMAL, DUP5_CHARVESTERAO_HARVESTFILEWITHUID, "CHarvesterAO::HarvestFileWithUID - error in reading album id array: %d", err );
+
delete albumIdBuf;
albumIdBuf = NULL;
delete uri;
@@ -2257,6 +2443,7 @@
#ifdef _DEBUG
WRITELOG1( "CHarvesterAO::HarvestFileWithUID - album id count: %d", albumIds.Count() );
+ OstTrace1( TRACE_NORMAL, DUP6_CHARVESTERAO_HARVESTFILEWITHUID, "CHarvesterAO::HarvestFileWithUID - album id count: %d", albumIds.Count() );
#endif
}
@@ -2266,6 +2453,8 @@
if ( err != KErrNone )
{
WRITELOG1( "CHarvesterAO::HarvestFileWithUID - error in reading aMessage (addLocation): %d", err );
+ OstTrace1( TRACE_NORMAL, DUP7_CHARVESTERAO_HARVESTFILEWITHUID, "CHarvesterAO::HarvestFileWithUID - error in reading aMessage (addLocation): %d", err );
+
delete uri;
uri = NULL;
if (!aMessage.IsNull())
@@ -2276,12 +2465,16 @@
}
WRITELOG1( "RHarvesterClient::HarvestFileWithUID - add location: %d", addLocation );
+ OstTrace1( TRACE_NORMAL, DUP8_CHARVESTERAO_HARVESTFILEWITHUID, "CHarvesterAO::HarvestFileWithUID - add location: %d", addLocation );
+
CHarvesterData* hd = NULL;
TRAP( err, hd = CHarvesterData::NewL( uri ) );
if ( err != KErrNone || !hd )
{
WRITELOG( "CHarvesterAO::HarvestFileWithUID - creating harvUri failed" );
+ OstTrace0( TRACE_NORMAL, DUP9_CHARVESTERAO_HARVESTFILEWITHUID, "CHarvesterAO::HarvestFileWithUID - creating harvUri failed" );
+
albumIds.Close();
delete uri;
uri = NULL;
@@ -2308,6 +2501,7 @@
else
{
WRITELOG( "CHarvesterAO::HarvestFileWithUID - creating clientData failed" );
+ OstTrace0( TRACE_NORMAL, DUP10_CHARVESTERAO_HARVESTFILEWITHUID, "CHarvesterAO::HarvestFileWithUID - creating clientData failed" );
}
if( iQueue )
@@ -2341,10 +2535,13 @@
void CHarvesterAO::RegisterProcessOrigin( const RMessage2& aMessage )
{
WRITELOG( "CHarvesterAO::RegisterProcessOrigin" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_REGISTERPROCESSORIGIN, "CHarvesterAO::RegisterProcessOrigin" );
if ( !iProcessOriginMapper )
{
WRITELOG( "CHarvesterAO::RegisterProcessOrigin - mapper not available." );
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_REGISTERPROCESSORIGIN, "CHarvesterAO::RegisterProcessOrigin - mapper not available." );
+
if (!aMessage.IsNull())
{
aMessage.Complete( KErrNotSupported );
@@ -2357,6 +2554,8 @@
if ( MdsUtils::IsValidProcessId( processId ) )
{
WRITELOG1( "CHarvesterAO::RegisterProcessOrigin - error reading processId. Read: %d", processId.iUid );
+ OstTrace1( TRACE_NORMAL, DUP2_CHARVESTERAO_REGISTERPROCESSORIGIN, "CHarvesterAO::RegisterProcessOrigin - error reading processId. Read: %d", processId.iUid );
+
if (!aMessage.IsNull())
{
aMessage.Complete( KErrCorrupt );
@@ -2368,9 +2567,13 @@
TOrigin origin = STATIC_CAST( TOrigin, aMessage.Int1() );
WRITELOG1( "CHarvesterAO::RegisterProcessOrigin - origin: %d", origin );
+ OstTrace1( TRACE_NORMAL, DUP3_CHARVESTERAO_REGISTERPROCESSORIGIN, "CHarvesterAO::RegisterProcessOrigin - origin: %d", origin );
+
if ( origin < 0 )
{
WRITELOG( "CHarvesterAO::RegisterProcessOrigin - error reading origin from aMessage (negative)." );
+ OstTrace0( TRACE_NORMAL, DUP4_CHARVESTERAO_REGISTERPROCESSORIGIN, "CHarvesterAO::RegisterProcessOrigin - error reading origin from aMessage (negative)." );
+
if (!aMessage.IsNull())
{
aMessage.Complete( KErrCorrupt );
@@ -2382,6 +2585,8 @@
if ( err != KErrNone )
{
WRITELOG1( "CHarvesterAO::RegisterProcessOrigin - error registering mapping: %d", err );
+ OstTrace1( TRACE_NORMAL, DUP5_CHARVESTERAO_REGISTERPROCESSORIGIN, "CHarvesterAO::RegisterProcessOrigin - error registering mapping: %d", err );
+
if (!aMessage.IsNull())
{
aMessage.Complete( err );
@@ -2401,10 +2606,13 @@
void CHarvesterAO::UnregisterProcessOrigin( const RMessage2& aMessage )
{
WRITELOG( "CHarvesterAO::UnregisterProcessOrigin" );
-
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_UNREGISTERPROCESSORIGIN, "CHarvesterAO::UnregisterProcessOrigin" );
+
if ( !iProcessOriginMapper )
{
WRITELOG( "CHarvesterAO::RegisterProcessOrigin - mapper not available." );
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_UNREGISTERPROCESSORIGIN, "CHarvesterAO::UnregisterProcessOrigin - mapper not available." );
+
if (!aMessage.IsNull())
{
aMessage.Complete( KErrNotSupported );
@@ -2417,6 +2625,8 @@
if ( MdsUtils::IsValidProcessId( processId ) )
{
WRITELOG1( "CHarvesterAO::UnregisterProcessOrigin - error reading processId. Read: %d", processId.iUid );
+ OstTrace1( TRACE_NORMAL, DUP2_CHARVESTERAO_UNREGISTERPROCESSORIGIN, "CHarvesterAO::UnregisterProcessOrigin - error reading processId. Read: %d", processId.iUid );
+
if (!aMessage.IsNull())
{
aMessage.Complete( KErrCorrupt );
@@ -2428,6 +2638,8 @@
if ( err != KErrNone )
{
WRITELOG1( "CHarvesterAO::UnregisterProcessOrigin - error unregistering mapping: %d", err );
+ OstTrace1( TRACE_NORMAL, DUP3_CHARVESTERAO_UNREGISTERPROCESSORIGIN, "CHarvesterAO::UnregisterProcessOrigin - error unregistering mapping: %d", err );
+
if (!aMessage.IsNull())
{
aMessage.Complete( err );
@@ -2447,7 +2659,8 @@
TInt CHarvesterAO::RegisterHarvestComplete( const CHarvesterServerSession& aSession, const RMessage2& aMessage )
{
WRITELOG( "CHarvesterAO::RegisterHarvestComplete" );
-
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_REGISTERHARVESTCOMPLETE, "CHarvesterAO::RegisterHarvestComplete" );
+
return iHarvestFileMessages.Append(
THarvestFileRequest( aSession, aMessage ) );
}
@@ -2459,6 +2672,7 @@
TInt CHarvesterAO::UnregisterHarvestComplete( const CHarvesterServerSession& aSession )
{
WRITELOG( "CHarvesterAO::UnregisterHarvestComplete" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_UNREGISTERHARVESTCOMPLETE, "CHarvesterAO::UnregisterHarvestComplete" );
TInt err( KErrNotFound );
if ( iHarvestFileMessages.Count() > 0 )
@@ -2502,6 +2716,7 @@
void CHarvesterAO::RegisterHarvesterEvent( const RMessage2& aMessage )
{
WRITELOG( "CHarvesterAO::RegisterHarvesterEvent" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_REGISTERHARVESTEREVENT, "CHarvesterAO::RegisterHarvesterEvent" );
TRAPD( err, iHarvesterEventManager->RegisterEventObserverL( aMessage ) );
aMessage.Complete( err );
@@ -2514,6 +2729,7 @@
void CHarvesterAO::UnregisterHarvesterEvent( const RMessage2& aMessage )
{
WRITELOG( "CHarvesterAO::UnregisterHarvesterEvent" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_UNREGISTERHARVESTEREVENT, "CHarvesterAO::UnregisterHarvesterEvent" );
const TInt err = iHarvesterEventManager->UnregisterEventObserver( aMessage );
aMessage.Complete( err );
@@ -2522,6 +2738,7 @@
void CHarvesterAO::GetLastObserverId( const RMessage2& aMessage )
{
WRITELOG( "CHarvesterAO::GetLastObserverId" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_GETLASTOBSERVERID, "CHarvesterAO::GetLastObserverId" );
TUint observerId = iHarvesterEventManager->GetLastClientId();
@@ -2537,24 +2754,29 @@
void CHarvesterAO::ContextSnapshotStatus( CHarvesterData* aHD )
{
WRITELOG( "CHarvesterAO::ContextSnapshotStatus()" );
-
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_CONTEXTSNAPSHOTSTATUS, "CHarvesterAO::ContextSnapshotStatus" );
+
HarvestCompleted( aHD->ClientId(), aHD->Uri(), aHD->ErrorCode() );
const TInt errorCode = aHD->ErrorCode();
if( errorCode != KErrNone && errorCode != KErrCompletion )
{
- WRITELOG1( "CHarvesterAO::ContextSnapshotStatus() - error occurred: %d", errorCode );
+ WRITELOG1( "CHarvesterAO::ContextSnapshotStatus() - error occurred: %d", errorCode );
+ OstTrace1( TRACE_NORMAL, DUP1_CHARVESTERAO_CONTEXTSNAPSHOTSTATUS, "CHarvesterAO::ContextSnapshotStatus - error occurred: %d", errorCode );
}
else
{
if( errorCode == KErrCompletion )
{
WRITELOG( "CHarvesterAO::ContextSnapshotStatus() - snapshot could not be completed" );
+ OstTrace0( TRACE_NORMAL, DUP2_CHARVESTERAO_CONTEXTSNAPSHOTSTATUS, "CHarvesterAO::ContextSnapshotStatus - snapshot could not be completed" );
WRITELOG( "CHarvesterAO::ContextSnapshotStatus() - processing non-context data anyway" );
+ OstTrace0( TRACE_NORMAL, DUP3_CHARVESTERAO_CONTEXTSNAPSHOTSTATUS, "CHarvesterAO::ContextSnapshotStatus - processing non-context data anyway" );
}
else
{
WRITELOG( "CHarvesterAO::ContextSnapshotStatus() - successfully completed" );
+ OstTrace0( TRACE_NORMAL, DUP4_CHARVESTERAO_CONTEXTSNAPSHOTSTATUS, "CHarvesterAO::ContextSnapshotStatus - successfully completed" );
}
if( aHD->Origin() == MdeConstants::Object::ECamera )
{
@@ -2566,6 +2788,7 @@
WRITELOG( "==============================ERROR===============================" );
WRITELOG( "CHarvesterAO::HarvestingCompleted() - cannot set metadata object" );
WRITELOG( "==============================ERROR done =========================" );
+ OstTrace0( TRACE_NORMAL, DUP5_CHARVESTERAO_CONTEXTSNAPSHOTSTATUS, "CHarvesterAO::ContextSnapshotStatus - cannot set metadata object" );
}
}
}
@@ -2598,6 +2821,8 @@
if ( aClientId == msg.Identity() )
{
WRITELOG1( "CHarvesterAO::HarvestingCompleted() - Completing Fast Harvest request! Error code: %d", aErr );
+ OstTrace1( TRACE_NORMAL, CHARVESTERAO_HARVESTCOMPLETED, "CHarvesterAO::HarvestCompleted - Completing Fast Harvest request! Error code: %d", aErr );
+
if (!msg.IsNull())
{
msg.Write( KParamUri, aUri );
@@ -2606,6 +2831,7 @@
else
{
WRITELOG("CHarvesterAO::HarvestingCompleted() NOT COMPLETING AS msg->iMessage->IsNull returns ETrue");
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_HARVESTCOMPLETED, "CHarvesterAO::HarvestCompleted NOT COMPLETING AS msg->iMessage->IsNull returns ETrue" );
}
iHarvestFileMessages.Remove( i );
if( iHarvestFileMessages.Count() == 0 )
@@ -2620,6 +2846,7 @@
void CHarvesterAO::BootRomScanL()
{
WRITELOG("CHarvesterAO::BootRomScanL()");
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_BOOTROMSCANL, "CHarvesterAO::BootRomScanL" );
if( !iMdeSessionInitialized )
{
@@ -2666,7 +2893,8 @@
iMdEHarvesterSession->ChangeCDriveMediaId();
WRITELOG("CHarvesterAO::BootPartialRestoreScanL() - partial restore");
-
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_BOOTPARTIALRESTORESCANL, "CHarvesterAO::BootPartialRestoreScanL - partial restore" );
+
RPointerArray<TScanItem> scanItems;
TCleanupItem cleanupItem( MdsUtils::CleanupPtrArray<TScanItem>, &scanItems );
CleanupStack::PushL( cleanupItem );
@@ -2682,6 +2910,8 @@
BootScanL( scanItems, ignorePaths, EFalse );
WRITELOG("CHarvesterAO::BootPartialRestoreScanL() - iRestoreWatcher->UnregisterL()");
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERAO_BOOTPARTIALRESTORESCANL, "CHarvesterAO::BootPartialRestoreScanL - iRestoreWatcher->UnregisterL()" );
+
iRestoreWatcher->UnregisterL();
CleanupStack::PopAndDestroy( &ignorePaths );
@@ -2710,8 +2940,8 @@
TBool aCheckDrive )
{
WRITELOG("CHarvesterAO::BootScanL() - begin");
-
-
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_BOOTSCANL, "CHarvesterAO::BootScanL - begin" );
+
TInt drive( -1 );
TInt massStorageError( DriveInfo::GetDefaultDrive( DriveInfo::EDefaultMassStorage, drive ) );
if( massStorageError == KErrNone )
@@ -2740,6 +2970,7 @@
#ifdef _DEBUG
WRITELOG1("CHarvesterAO::BootScanL() - item count: %d", aScanItems.Count() );
+ OstTrace1( TRACE_NORMAL, DUP1_CHARVESTERAO_BOOTSCANL, "CHarvesterAO::BootScanL - item count: %d", aScanItems.Count() );
#endif
RPointerArray<CHarvesterData> hdArray;
@@ -2808,6 +3039,7 @@
if( !IsDescInArray( path, aIgnorePaths ) )
{
WRITELOG("CHarvesterAO::BootScanL() - scanFolders.AppendL");
+ OstTrace0( TRACE_NORMAL, DUP2_CHARVESTERAO_BOOTSCANL, "CHarvesterAO::BootScanL - scanFolders.AppendL" );
TScanItem* item = new (ELeave) TScanItem();
item->iPath = name->AllocL();
item->iPreinstalled = MdeConstants::MediaObject::ENotPreinstalled;
@@ -2824,6 +3056,7 @@
if( !IsDescInArray( filename, aIgnorePaths ) )
{
WRITELOG("CHarvesterAO::BootScanL() - check files");
+ OstTrace0( TRACE_NORMAL, DUP3_CHARVESTERAO_BOOTSCANL, "CHarvesterAO::BootScanL - check files" );
RArray<TPtrC> uris;
RArray<TMdSFileInfo> fileInfos;
@@ -2888,6 +3121,8 @@
}
WRITELOG("CHarvesterAO::BootScanL() - iQueue->Append");
+ OstTrace0( TRACE_NORMAL, DUP4_CHARVESTERAO_BOOTSCANL, "CHarvesterAO::BootScanL - iQueue->Append" );
+
iQueue->MonitorEvent( hdArray );
CleanupStack::PopAndDestroy( &hdArray );
@@ -2896,6 +3131,7 @@
iMassMemoryIdChecked = ETrue;
WRITELOG("CHarvesterAO::BootScanL() - end");
+ OstTrace0( TRACE_NORMAL, DUP5_CHARVESTERAO_BOOTSCANL, "CHarvesterAO::BootScanL - end" );
}
void CHarvesterAO::SetHarvesterStatusObserver( MHarvesterStatusObserver* aObserver )
@@ -2973,6 +3209,8 @@
void CHarvesterAO::MemoryLow()
{
WRITELOG("CHarvesterAO::MemoryLow()");
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_MEMORYLOW, "CHarvesterAO::MemoryLow" );
+
iRamFull = ETrue;
if( iServerPaused )
@@ -2992,6 +3230,8 @@
void CHarvesterAO::MemoryGood()
{
WRITELOG("CHarvesterAO::MemoryGood()");
+ OstTrace0( TRACE_NORMAL, CHARVESTERAO_MEMORYGOOD, "CHarvesterAO::MemoryGood" );
+
iRamFull = EFalse;
if( !iDiskFull && !iManualPauseEnabled && iServerPaused )
--- a/harvester/server/src/harvesterserver.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/harvester/server/src/harvesterserver.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -25,6 +25,11 @@
#include "harvesterao.h"
#include "harvesterblacklist.h"
#include "mdsactivescheduler.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "harvesterserverTraces.h"
+#endif
+
// ----------------------------------------------------------------------------------------
// Server's policy here
@@ -194,6 +199,8 @@
void CHarvesterServer::ConstructL()
{
WRITELOG( "CHarvesterServer::ConstructL() - begin" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_CONSTRUCTL, "CHarvesterServer::ConstructL - begin" );
+
StartL( KHarvesterServerName );
iHarvesterAO = CHarvesterAO::NewL();
@@ -207,6 +214,7 @@
// create shutdown observer
iShutdownObserver = CHarvesterShutdownObserver::NewL( *this );
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERSERVER_CONSTRUCTL, "CHarvesterServer::ConstructL - end" );
WRITELOG( "CHarvesterServer::ConstructL() - end" );
}
@@ -217,6 +225,7 @@
void CHarvesterServer::Pause( const RMessage2& aMessage )
{
WRITELOG( "CHarvesterServer::Pause() - begin" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_PAUSE, "CHarvesterServer::Pause" );
if ( !iHarvesterAO->IsServerPaused() )
{
@@ -237,6 +246,7 @@
void CHarvesterServer::Resume( const RMessage2& aMessage )
{
WRITELOG( "CHarvesterServer::Resume()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_RESUME, "CHarvesterServer::Resume" );
if ( iHarvesterAO->IsServerPaused() )
{
@@ -256,7 +266,8 @@
void CHarvesterServer::Pause()
{
WRITELOG( "CHarvesterServer::Pause()" );
-
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERSERVER_PAUSE, "CHarvesterServer::Pause" );
+
if ( !iHarvesterAO->IsServerPaused() )
{
iHarvesterAO->SetNextRequest( CHarvesterAO::ERequestPause );
@@ -270,7 +281,8 @@
void CHarvesterServer::Resume()
{
WRITELOG( "CHarvesterServer::Resume()" );
-
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERSERVER_RESUME, "CHarvesterServer::Resume" );
+
if ( iHarvesterAO->IsServerPaused() )
{
iHarvesterAO->SetNextRequest( CHarvesterAO::ERequestResume );
@@ -281,6 +293,8 @@
void CHarvesterServer::PauseReady( TInt aError )
{
WRITELOG1( "CHarvesterServer::PauseReady( %d )", aError );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_PAUSEREADY, "CHarvesterServer::PauseReady" );
+
if( iMessage )
{
iMessage->Complete( aError );
@@ -291,6 +305,8 @@
void CHarvesterServer::ResumeReady( TInt aError )
{
WRITELOG1( "CHarvesterServer::ResumeReady( %d )", aError );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_RESUMEREADY, "CHarvesterServer::ResumeReady" );
+
if( iMessage )
{
iMessage->Complete( aError );
@@ -305,6 +321,8 @@
void CHarvesterServer::ShutdownNotification()
{
WRITELOG( "CHarvesterServer::ShutdownNotification" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_SHUTDOWNNOTIFICATION, "CHarvesterServer::ShutdownNotification" );
+
CActiveScheduler::Stop();
}
@@ -315,6 +333,8 @@
void CHarvesterServer::RestartNotification()
{
WRITELOG( "CHarvesterServer::RestartNotification" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_RESTARTNOTIFICATION, "CHarvesterServer::RestartNotification" );
+
}
@@ -325,6 +345,7 @@
void CHarvesterServer::HarvestFile( const RMessage2& aMessage )
{
WRITELOG( "CHarvesterServer::HarvestFile()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_HARVESTFILE, "CHarvesterServer::HarvestFile" );
iHarvesterAO->HarvestFile( aMessage );
}
@@ -336,6 +357,7 @@
void CHarvesterServer::HarvestFileWithUID( const RMessage2& aMessage )
{
WRITELOG( "CHarvesterServer::HarvestFile()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_HARVESTFILEWITHUID, "CHarvesterServer::HarvestFileWithUID" );
iHarvesterAO->HarvestFileWithUID( aMessage );
}
@@ -347,6 +369,7 @@
void CHarvesterServer::RegisterProcessOrigin( const RMessage2& aMessage )
{
WRITELOG( "CHarvesterServer::RegisterProcessOrigin()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_REGISTERPROCESSORIGIN, "CHarvesterServer::RegisterProcessOrigin" );
iHarvesterAO->RegisterProcessOrigin( aMessage );
}
@@ -358,6 +381,7 @@
void CHarvesterServer::UnregisterProcessOrigin( const RMessage2& aMessage )
{
WRITELOG( "CHarvesterServer::UnregisterProcessOrigin()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_UNREGISTERPROCESSORIGIN, "CHarvesterServer::UnregisterProcessOrigin" );
iHarvesterAO->UnregisterProcessOrigin( aMessage );
}
@@ -369,6 +393,7 @@
TInt CHarvesterServer::RegisterHarvestComplete( const CHarvesterServerSession& aSession, const RMessage2& aMessage )
{
WRITELOG( "CHarvesterServer::RegisterHarvestComplete()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_REGISTERHARVESTCOMPLETE, "CHarvesterServer::RegisterHarvestComplete" );
return iHarvesterAO->RegisterHarvestComplete( aSession, aMessage );
}
@@ -380,6 +405,7 @@
TInt CHarvesterServer::UnregisterHarvestComplete( const CHarvesterServerSession& aSession )
{
WRITELOG( "CHarvesterServer::UnregisterHarvestComplete()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_UNREGISTERHARVESTCOMPLETE, "CHarvesterServer::UnregisterHarvestComplete" );
return iHarvesterAO->UnregisterHarvestComplete( aSession );
}
@@ -391,6 +417,7 @@
void CHarvesterServer::RegisterHarvesterEvent( const RMessage2& aMessage )
{
WRITELOG( "CHarvesterServer::RegisterHarvesterEvent()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_REGISTERHARVESTEREVENT, "CHarvesterServer::RegisterHarvesterEvent" );
iHarvesterAO->RegisterHarvesterEvent( aMessage );
}
@@ -402,6 +429,7 @@
void CHarvesterServer::UnregisterHarvesterEvent( const RMessage2& aMessage )
{
WRITELOG( "CHarvesterServer::UnregisterHarvesterEvent()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_UNREGISTERHARVESTEREVENT, "CHarvesterServer::UnregisterHarvesterEvent" );
iHarvesterAO->UnregisterHarvesterEvent( aMessage );
}
@@ -413,9 +441,13 @@
CHarvesterServer::~CHarvesterServer()
{
WRITELOG( "CHarvesterServer::~CHarvesterServer()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_CHARVESTERSERVER, "CHarvesterServer::~CHarvesterServer" );
+
delete iHarvesterAO;
delete iPauseObserverAO;
delete iShutdownObserver;
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERSERVER_CHARVESTERSERVER, "CHarvesterServer::~CHarvesterServer end" );
+
WRITELOG( "CHarvesterServer::~CHarvesterServer() end" );
}
@@ -427,6 +459,7 @@
const TDesC& aPanicDescription )
{
WRITELOG( "CHarvesterServer::PanicClient()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_PANICCLIENT, "CHarvesterServer::PanicClient" );
aMessage.Panic( aPanicDescription, aPanic );
}
@@ -438,6 +471,7 @@
void CHarvesterServer::PanicServer( TInt aPanic, const TDesC& aPanicDescription )
{
WRITELOG( "CHarvesterServer::PanicServer() - begin" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_PANICSERVER, "CHarvesterServer::PanicServer" );
User::Panic( aPanicDescription, aPanic );
}
@@ -450,7 +484,8 @@
const TVersion& aVersion, const RMessage2& ) const
{
WRITELOG( "CHarvesterServer::NewSessionL() - begin" );
-
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_NEWSESSIONL, "CHarvesterServer::NewSessionL" );
+
//If there isn't connection to mde, we can't do much. Inform client about situation.
//This doesn't leave on first client because Process::Rendezcvouz is called when mde:s
//HandleSessionOpened is called.
@@ -462,6 +497,8 @@
if ( iShutdownObserver->UpdateInProgress() )
{
WRITELOG( "CHarvesterServer::NewSessionL - iad update in progress: KErrLocked");
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERSERVER_NEWSESSIONL, "CHarvesterServer::NewSessionL- iad update in progress: KErrLocked" );
+
User::Leave(KErrLocked);
}
@@ -485,7 +522,8 @@
TInt CHarvesterServer::RunError( TInt aError )
{
WRITELOG1( "CHarvesterServer::RunError - %d()", aError );
-
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_RUNERROR, "CHarvesterServer::RunError" );
+
if ( aError == KErrBadDescriptor )
{
// A bad descriptor error implies a badly programmed client,
@@ -512,6 +550,7 @@
void CHarvesterServer::ThreadFunctionL()
{
WRITELOG( "CHarvesterServer::ThreadFunctionL() - begin" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_THREADFUNCTIONL, "CHarvesterServer::ThreadFunctionL - begin" );
User::LeaveIfError( User::RenameThread( KHarvesterServerName ) );
// Construct active scheduler
@@ -532,6 +571,8 @@
CleanupStack::PopAndDestroy( 2, activeScheduler );
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERSERVER_THREADFUNCTIONL, "CHarvesterServer::ThreadFunctionL - end" );
+
WRITELOG( "CHarvesterServer::ThreadFunctionL() - end" );
}
@@ -542,6 +583,7 @@
TInt CHarvesterServer::ThreadFunction( TAny* /*aNone*/ )
{
WRITELOG( "CHarvesterServer::ThreadFunction() - TAny - begin" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVER_THREADFUNCTION, "CHarvesterServer::ThreadFunction - TAny - begin" );
CTrapCleanup* cleanupStack = CTrapCleanup::New();
if ( !cleanupStack )
@@ -556,6 +598,8 @@
delete cleanupStack;
cleanupStack = NULL;
}
+
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERSERVER_THREADFUNCTION, "CHarvesterServer::ThreadFunction - TAny - end" );
WRITELOG( "CHarvesterServer::ThreadFunction() - TAny - end" );
return err;
@@ -568,7 +612,8 @@
TInt E32Main()
{
WRITELOG( "CHarvesterServer::E32Main() - begin" );
-
+ OstTrace0( TRACE_NORMAL, _E32MAIN, "CHarvesterServer::E32Main() - begin" );
+
__UHEAP_MARK;
const TInt result = CHarvesterServer::ThreadFunction( NULL );
--- a/harvester/server/src/harvesterserversession.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/harvester/server/src/harvesterserversession.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -18,6 +18,10 @@
#include "harvesterserversession.h"
#include "harvestercommon.h"
#include "harvesterlog.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "harvesterserversessionTraces.h"
+#endif
// ========================= MEMBER FUNCTIONS ==================================
@@ -28,6 +32,7 @@
CHarvesterServerSession* CHarvesterServerSession::NewL( CHarvesterServer& aServer )
{
WRITELOG( "CHarvesterServerSession::NewL()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVERSESSION_NEWL, "CHarvesterServerSession::NewL" );
CHarvesterServerSession* self = CHarvesterServerSession::NewLC( aServer );
CleanupStack::Pop( self );
@@ -41,6 +46,7 @@
CHarvesterServerSession* CHarvesterServerSession::NewLC( CHarvesterServer& aServer )
{
WRITELOG( "CHarvesterServerSession::NewLC()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVERSESSION_NEWLC, "CHarvesterServerSession::NewLC" );
CHarvesterServerSession* self = new ( ELeave ) CHarvesterServerSession( aServer );
CleanupStack::PushL( self );
@@ -55,6 +61,8 @@
void CHarvesterServerSession::ConstructL()
{
WRITELOG( "CHarvesterServerSession::ConstructL()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVERSESSION_CONSTRUCTL, "CHarvesterServerSession::ConstructL" );
+
}
// ---------------------------------------------------------------------------
@@ -65,6 +73,8 @@
: iServer( aServer )
{
WRITELOG( "CHarvesterServerSession::CHarvesterServerSession()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVERSESSION_CHARVESTERSERVERSESSION, "CHarvesterServerSession::CHarvesterServerSession" );
+
}
// ---------------------------------------------------------------------------
@@ -74,6 +84,8 @@
CHarvesterServerSession::~CHarvesterServerSession()
{
WRITELOG( "CHarvesterServerSession::~CHarvesterServerSession()" );
+ OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERSERVERSESSION_CHARVESTERSERVERSESSION, "CHarvesterServerSession::~CHarvesterServerSession" );
+
}
// ---------------------------------------------------------------------------
@@ -83,6 +95,7 @@
void CHarvesterServerSession::ServiceL( const RMessage2& aMessage )
{
WRITELOG( "CHarvesterServerSession::ServiceL()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVERSESSION_SERVICEL, "CHarvesterServerSession::ServiceL" );
/* Command can't be negative */
if ( aMessage.Function() < 0 )
@@ -204,6 +217,7 @@
{
//just make sure the server is cleaned after client crash
WRITELOG( "CHarvesterServerSession::Disconnect()" );
+ OstTrace0( TRACE_NORMAL, CHARVESTERSERVERSESSION_DISCONNECT, "CHarvesterServerSession::Disconnect" );
iServer.UnregisterHarvestComplete( *this );
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/server/traces/OstTraceDefinitions.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,7 @@
+#ifndef __OSTTRACEDEFINITIONS_H__
+#define __OSTTRACEDEFINITIONS_H__
+// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
+// REMOVE BEFORE CHECK-IN TO VERSION CONTROL
+#define OST_TRACE_COMPILER_IN_USE
+#include <opensystemtrace.h>
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/server/traces/fixed_id.definitions Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,197 @@
+#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
+[GROUP]TRACE_NORMAL=0x86
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_BACKUPRESTOREREADY=0x63
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_BACKUPRESTORESTART=0x62
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_BOOTPARTIALRESTORESCANL=0x95
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_BOOTROMSCANL=0x94
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_BOOTSCANL=0x97
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_CHARVESTERAO=0x3
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL=0x26
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_CONSTRUCTL=0x5
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_CONTEXTINITIALIZATIONSTATUS=0x4b
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_CONTEXTSNAPSHOTSTATUS=0x8c
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_DELETECOMPOSERS=0x1f
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_DELETEMONITORPLUGINS=0x9
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_DOCANCEL=0x5a
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_GETLASTOBSERVERID=0x8b
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_HANDLEDISKSPACENOTIFICATIONL=0x64
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_HANDLEPLACEHOLDERSL=0x22
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_HANDLESESSIONERROR=0x4a
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_HANDLESESSIONOPENED=0x3c
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_HANDLEUNMOUNT=0x10
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_HARVESTCOMPLETED=0x92
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_HARVESTFILE=0x67
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_HARVESTFILEWITHUID=0x72
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_HARVESTINGCOMPLETED=0x2f
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_ISCOMPOSINGREADY=0x20
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_ISSERVERPAUSED=0x61
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_LOADMONITORPLUGINSL=0x7
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_MEMORYGOOD=0x9e
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_MEMORYLOW=0x9d
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_NEWL=0x2
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_NEWLC=0x1
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_PAUSEHARVESTER=0x4e
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_PAUSEMONITORING=0xd
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_READITEMFROMQUEUEL=0x21
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_REGISTERHARVESTCOMPLETE=0x87
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_REGISTERHARVESTEREVENT=0x89
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_REGISTERPROCESSORIGIN=0x7d
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_RESUMEHARVESTERL=0x50
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_RESUMEMONITORING=0xf
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_RUNERROR=0x5b
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_RUNL=0x51
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_SETNEXTREQUEST=0x60
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_STARTCOMPOSERSL=0x1d
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_STARTMONITORING=0xb
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_STOPCOMPOSERS=0x1e
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_STOPMONITORING=0xc
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_UNREGISTERHARVESTCOMPLETE=0x88
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_UNREGISTERHARVESTEREVENT=0x8a
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERAO_UNREGISTERPROCESSORIGIN=0x83
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVERSESSION_CHARVESTERSERVERSESSION=0xc0
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVERSESSION_CONSTRUCTL=0xbf
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVERSESSION_DISCONNECT=0xc3
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVERSESSION_NEWL=0xbd
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVERSESSION_NEWLC=0xbe
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVERSESSION_SERVICEL=0xc2
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_CHARVESTERSERVER=0xb1
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_CONSTRUCTL=0x9f
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_HARVESTFILE=0xa9
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_HARVESTFILEWITHUID=0xaa
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_NEWSESSIONL=0xb5
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_PANICCLIENT=0xb3
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_PANICSERVER=0xb4
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_PAUSE=0xa1
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_PAUSEREADY=0xa5
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_REGISTERHARVESTCOMPLETE=0xad
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_REGISTERHARVESTEREVENT=0xaf
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_REGISTERPROCESSORIGIN=0xab
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_RESTARTNOTIFICATION=0xa8
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_RESUME=0xa2
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_RESUMEREADY=0xa6
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_RUNERROR=0xb7
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_SHUTDOWNNOTIFICATION=0xa7
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_THREADFUNCTION=0xba
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_THREADFUNCTIONL=0xb8
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_UNREGISTERHARVESTCOMPLETE=0xae
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_UNREGISTERHARVESTEREVENT=0xb0
+[TRACE]TRACE_NORMAL[0x86]_CHARVESTERSERVER_UNREGISTERPROCESSORIGIN=0xac
+[TRACE]TRACE_NORMAL[0x86]_DUP10_CHARVESTERAO_HANDLESESSIONOPENED=0x46
+[TRACE]TRACE_NORMAL[0x86]_DUP10_CHARVESTERAO_HANDLEUNMOUNT=0x19
+[TRACE]TRACE_NORMAL[0x86]_DUP10_CHARVESTERAO_HARVESTFILE=0x71
+[TRACE]TRACE_NORMAL[0x86]_DUP10_CHARVESTERAO_HARVESTFILEWITHUID=0x7c
+[TRACE]TRACE_NORMAL[0x86]_DUP10_CHARVESTERAO_HARVESTINGCOMPLETED=0x39
+[TRACE]TRACE_NORMAL[0x86]_DUP11_CHARVESTERAO_HANDLESESSIONOPENED=0x47
+[TRACE]TRACE_NORMAL[0x86]_DUP11_CHARVESTERAO_HANDLEUNMOUNT=0x1a
+[TRACE]TRACE_NORMAL[0x86]_DUP11_CHARVESTERAO_HARVESTINGCOMPLETED=0x3a
+[TRACE]TRACE_NORMAL[0x86]_DUP12_CHARVESTERAO_HANDLESESSIONOPENED=0x48
+[TRACE]TRACE_NORMAL[0x86]_DUP12_CHARVESTERAO_HANDLEUNMOUNT=0x1b
+[TRACE]TRACE_NORMAL[0x86]_DUP12_CHARVESTERAO_HARVESTINGCOMPLETED=0x3b
+[TRACE]TRACE_NORMAL[0x86]_DUP13_CHARVESTERAO_HANDLESESSIONOPENED=0x49
+[TRACE]TRACE_NORMAL[0x86]_DUP13_CHARVESTERAO_HANDLEUNMOUNT=0x1c
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_BOOTPARTIALRESTORESCANL=0x96
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_BOOTSCANL=0x98
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_CHARVESTERAO=0x4
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL=0x27
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_CONSTRUCTL=0x6
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_CONTEXTINITIALIZATIONSTATUS=0x4c
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_CONTEXTSNAPSHOTSTATUS=0x8d
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_DELETEMONITORPLUGINS=0xa
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_HANDLEDISKSPACENOTIFICATIONL=0x65
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_HANDLEPLACEHOLDERSL=0x23
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_HANDLESESSIONOPENED=0x3d
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_HANDLEUNMOUNT=0x11
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_HARVESTCOMPLETED=0x93
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_HARVESTFILE=0x68
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_HARVESTFILEWITHUID=0x73
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_HARVESTINGCOMPLETED=0x38
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_LOADMONITORPLUGINSL=0x8
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_PAUSEHARVESTER=0x4f
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_PAUSEMONITORING=0xe
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_REGISTERPROCESSORIGIN=0x7e
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_RUNERROR=0x5c
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_RUNL=0x52
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERAO_UNREGISTERPROCESSORIGIN=0x84
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERSERVERSESSION_CHARVESTERSERVERSESSION=0xc1
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERSERVER_CHARVESTERSERVER=0xb2
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERSERVER_CONSTRUCTL=0xa0
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERSERVER_NEWSESSIONL=0xb6
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERSERVER_PAUSE=0xa3
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERSERVER_RESUME=0xa4
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERSERVER_THREADFUNCTION=0xbb
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CHARVESTERSERVER_THREADFUNCTIONL=0xb9
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTERAO_BOOTSCANL=0x99
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL=0x28
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTERAO_CONTEXTINITIALIZATIONSTATUS=0x4d
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTERAO_CONTEXTSNAPSHOTSTATUS=0x8e
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTERAO_HANDLEDISKSPACENOTIFICATIONL=0x66
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTERAO_HANDLEPLACEHOLDERSL=0x24
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTERAO_HANDLESESSIONOPENED=0x3e
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTERAO_HANDLEUNMOUNT=0x12
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTERAO_HARVESTFILE=0x69
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTERAO_HARVESTFILEWITHUID=0x74
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTERAO_HARVESTINGCOMPLETED=0x30
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTERAO_REGISTERPROCESSORIGIN=0x7f
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTERAO_RUNERROR=0x5d
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTERAO_RUNL=0x53
+[TRACE]TRACE_NORMAL[0x86]_DUP2_CHARVESTERAO_UNREGISTERPROCESSORIGIN=0x85
+[TRACE]TRACE_NORMAL[0x86]_DUP3_CHARVESTERAO_BOOTSCANL=0x9a
+[TRACE]TRACE_NORMAL[0x86]_DUP3_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL=0x29
+[TRACE]TRACE_NORMAL[0x86]_DUP3_CHARVESTERAO_CONTEXTSNAPSHOTSTATUS=0x8f
+[TRACE]TRACE_NORMAL[0x86]_DUP3_CHARVESTERAO_HANDLEPLACEHOLDERSL=0x25
+[TRACE]TRACE_NORMAL[0x86]_DUP3_CHARVESTERAO_HANDLESESSIONOPENED=0x3f
+[TRACE]TRACE_NORMAL[0x86]_DUP3_CHARVESTERAO_HANDLEUNMOUNT=0x13
+[TRACE]TRACE_NORMAL[0x86]_DUP3_CHARVESTERAO_HARVESTFILE=0x6a
+[TRACE]TRACE_NORMAL[0x86]_DUP3_CHARVESTERAO_HARVESTFILEWITHUID=0x75
+[TRACE]TRACE_NORMAL[0x86]_DUP3_CHARVESTERAO_HARVESTINGCOMPLETED=0x31
+[TRACE]TRACE_NORMAL[0x86]_DUP3_CHARVESTERAO_REGISTERPROCESSORIGIN=0x80
+[TRACE]TRACE_NORMAL[0x86]_DUP3_CHARVESTERAO_RUNERROR=0x5e
+[TRACE]TRACE_NORMAL[0x86]_DUP3_CHARVESTERAO_RUNL=0x54
+[TRACE]TRACE_NORMAL[0x86]_DUP3_CHARVESTERAO_UNREGISTERPROCESSORIGIN=0x86
+[TRACE]TRACE_NORMAL[0x86]_DUP4_CHARVESTERAO_BOOTSCANL=0x9b
+[TRACE]TRACE_NORMAL[0x86]_DUP4_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL=0x2a
+[TRACE]TRACE_NORMAL[0x86]_DUP4_CHARVESTERAO_CONTEXTSNAPSHOTSTATUS=0x90
+[TRACE]TRACE_NORMAL[0x86]_DUP4_CHARVESTERAO_HANDLESESSIONOPENED=0x40
+[TRACE]TRACE_NORMAL[0x86]_DUP4_CHARVESTERAO_HANDLEUNMOUNT=0x14
+[TRACE]TRACE_NORMAL[0x86]_DUP4_CHARVESTERAO_HARVESTFILE=0x6b
+[TRACE]TRACE_NORMAL[0x86]_DUP4_CHARVESTERAO_HARVESTFILEWITHUID=0x76
+[TRACE]TRACE_NORMAL[0x86]_DUP4_CHARVESTERAO_HARVESTINGCOMPLETED=0x32
+[TRACE]TRACE_NORMAL[0x86]_DUP4_CHARVESTERAO_REGISTERPROCESSORIGIN=0x81
+[TRACE]TRACE_NORMAL[0x86]_DUP4_CHARVESTERAO_RUNERROR=0x5f
+[TRACE]TRACE_NORMAL[0x86]_DUP4_CHARVESTERAO_RUNL=0x55
+[TRACE]TRACE_NORMAL[0x86]_DUP5_CHARVESTERAO_BOOTSCANL=0x9c
+[TRACE]TRACE_NORMAL[0x86]_DUP5_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL=0x2b
+[TRACE]TRACE_NORMAL[0x86]_DUP5_CHARVESTERAO_CONTEXTSNAPSHOTSTATUS=0x91
+[TRACE]TRACE_NORMAL[0x86]_DUP5_CHARVESTERAO_HANDLESESSIONOPENED=0x41
+[TRACE]TRACE_NORMAL[0x86]_DUP5_CHARVESTERAO_HANDLEUNMOUNT=0x15
+[TRACE]TRACE_NORMAL[0x86]_DUP5_CHARVESTERAO_HARVESTFILE=0x6c
+[TRACE]TRACE_NORMAL[0x86]_DUP5_CHARVESTERAO_HARVESTFILEWITHUID=0x77
+[TRACE]TRACE_NORMAL[0x86]_DUP5_CHARVESTERAO_HARVESTINGCOMPLETED=0x33
+[TRACE]TRACE_NORMAL[0x86]_DUP5_CHARVESTERAO_REGISTERPROCESSORIGIN=0x82
+[TRACE]TRACE_NORMAL[0x86]_DUP5_CHARVESTERAO_RUNL=0x56
+[TRACE]TRACE_NORMAL[0x86]_DUP6_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL=0x2c
+[TRACE]TRACE_NORMAL[0x86]_DUP6_CHARVESTERAO_HANDLESESSIONOPENED=0x42
+[TRACE]TRACE_NORMAL[0x86]_DUP6_CHARVESTERAO_HANDLEUNMOUNT=0x16
+[TRACE]TRACE_NORMAL[0x86]_DUP6_CHARVESTERAO_HARVESTFILE=0x6d
+[TRACE]TRACE_NORMAL[0x86]_DUP6_CHARVESTERAO_HARVESTFILEWITHUID=0x78
+[TRACE]TRACE_NORMAL[0x86]_DUP6_CHARVESTERAO_HARVESTINGCOMPLETED=0x34
+[TRACE]TRACE_NORMAL[0x86]_DUP6_CHARVESTERAO_RUNL=0x57
+[TRACE]TRACE_NORMAL[0x86]_DUP7_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL=0x2d
+[TRACE]TRACE_NORMAL[0x86]_DUP7_CHARVESTERAO_HANDLESESSIONOPENED=0x43
+[TRACE]TRACE_NORMAL[0x86]_DUP7_CHARVESTERAO_HANDLEUNMOUNT=0x17
+[TRACE]TRACE_NORMAL[0x86]_DUP7_CHARVESTERAO_HARVESTFILE=0x6e
+[TRACE]TRACE_NORMAL[0x86]_DUP7_CHARVESTERAO_HARVESTFILEWITHUID=0x79
+[TRACE]TRACE_NORMAL[0x86]_DUP7_CHARVESTERAO_HARVESTINGCOMPLETED=0x35
+[TRACE]TRACE_NORMAL[0x86]_DUP7_CHARVESTERAO_RUNL=0x58
+[TRACE]TRACE_NORMAL[0x86]_DUP8_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL=0x2e
+[TRACE]TRACE_NORMAL[0x86]_DUP8_CHARVESTERAO_HANDLESESSIONOPENED=0x44
+[TRACE]TRACE_NORMAL[0x86]_DUP8_CHARVESTERAO_HANDLEUNMOUNT=0x18
+[TRACE]TRACE_NORMAL[0x86]_DUP8_CHARVESTERAO_HARVESTFILE=0x6f
+[TRACE]TRACE_NORMAL[0x86]_DUP8_CHARVESTERAO_HARVESTFILEWITHUID=0x7a
+[TRACE]TRACE_NORMAL[0x86]_DUP8_CHARVESTERAO_HARVESTINGCOMPLETED=0x36
+[TRACE]TRACE_NORMAL[0x86]_DUP8_CHARVESTERAO_RUNL=0x59
+[TRACE]TRACE_NORMAL[0x86]_DUP9_CHARVESTERAO_HANDLESESSIONOPENED=0x45
+[TRACE]TRACE_NORMAL[0x86]_DUP9_CHARVESTERAO_HARVESTFILE=0x70
+[TRACE]TRACE_NORMAL[0x86]_DUP9_CHARVESTERAO_HARVESTFILEWITHUID=0x7b
+[TRACE]TRACE_NORMAL[0x86]_DUP9_CHARVESTERAO_HARVESTINGCOMPLETED=0x37
+[TRACE]TRACE_NORMAL[0x86]__E32MAIN=0xbc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/server/traces/harvesteraoTraces.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,172 @@
+// Created by TraceCompiler 2.2.3
+// DO NOT EDIT, CHANGES WILL BE LOST
+
+#ifndef __HARVESTERAOTRACES_H__
+#define __HARVESTERAOTRACES_H__
+
+#define KOstTraceComponentID 0x200009f5
+
+#define CHARVESTERAO_NEWLC 0x860001
+#define CHARVESTERAO_NEWL 0x860002
+#define CHARVESTERAO_CHARVESTERAO 0x860003
+#define DUP1_CHARVESTERAO_CHARVESTERAO 0x860004
+#define CHARVESTERAO_CONSTRUCTL 0x860005
+#define DUP1_CHARVESTERAO_CONSTRUCTL 0x860006
+#define CHARVESTERAO_LOADMONITORPLUGINSL 0x860007
+#define DUP1_CHARVESTERAO_LOADMONITORPLUGINSL 0x860008
+#define CHARVESTERAO_DELETEMONITORPLUGINS 0x860009
+#define DUP1_CHARVESTERAO_DELETEMONITORPLUGINS 0x86000a
+#define CHARVESTERAO_STARTMONITORING 0x86000b
+#define CHARVESTERAO_STOPMONITORING 0x86000c
+#define CHARVESTERAO_PAUSEMONITORING 0x86000d
+#define DUP1_CHARVESTERAO_PAUSEMONITORING 0x86000e
+#define CHARVESTERAO_RESUMEMONITORING 0x86000f
+#define CHARVESTERAO_HANDLEUNMOUNT 0x860010
+#define DUP1_CHARVESTERAO_HANDLEUNMOUNT 0x860011
+#define DUP2_CHARVESTERAO_HANDLEUNMOUNT 0x860012
+#define DUP3_CHARVESTERAO_HANDLEUNMOUNT 0x860013
+#define DUP4_CHARVESTERAO_HANDLEUNMOUNT 0x860014
+#define DUP5_CHARVESTERAO_HANDLEUNMOUNT 0x860015
+#define DUP6_CHARVESTERAO_HANDLEUNMOUNT 0x860016
+#define DUP7_CHARVESTERAO_HANDLEUNMOUNT 0x860017
+#define DUP8_CHARVESTERAO_HANDLEUNMOUNT 0x860018
+#define DUP10_CHARVESTERAO_HANDLEUNMOUNT 0x860019
+#define DUP11_CHARVESTERAO_HANDLEUNMOUNT 0x86001a
+#define DUP12_CHARVESTERAO_HANDLEUNMOUNT 0x86001b
+#define DUP13_CHARVESTERAO_HANDLEUNMOUNT 0x86001c
+#define CHARVESTERAO_STARTCOMPOSERSL 0x86001d
+#define CHARVESTERAO_STOPCOMPOSERS 0x86001e
+#define CHARVESTERAO_DELETECOMPOSERS 0x86001f
+#define CHARVESTERAO_ISCOMPOSINGREADY 0x860020
+#define CHARVESTERAO_READITEMFROMQUEUEL 0x860021
+#define CHARVESTERAO_HANDLEPLACEHOLDERSL 0x860022
+#define DUP1_CHARVESTERAO_HANDLEPLACEHOLDERSL 0x860023
+#define DUP2_CHARVESTERAO_HANDLEPLACEHOLDERSL 0x860024
+#define DUP3_CHARVESTERAO_HANDLEPLACEHOLDERSL 0x860025
+#define CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL 0x860026
+#define DUP1_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL 0x860027
+#define DUP2_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL 0x860028
+#define DUP3_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL 0x860029
+#define DUP4_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL 0x86002a
+#define DUP5_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL 0x86002b
+#define DUP6_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL 0x86002c
+#define DUP7_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL 0x86002d
+#define DUP8_CHARVESTERAO_CHECKFILEEXTENSIONANDHARVESTL 0x86002e
+#define CHARVESTERAO_HARVESTINGCOMPLETED 0x86002f
+#define DUP2_CHARVESTERAO_HARVESTINGCOMPLETED 0x860030
+#define DUP3_CHARVESTERAO_HARVESTINGCOMPLETED 0x860031
+#define DUP4_CHARVESTERAO_HARVESTINGCOMPLETED 0x860032
+#define DUP5_CHARVESTERAO_HARVESTINGCOMPLETED 0x860033
+#define DUP6_CHARVESTERAO_HARVESTINGCOMPLETED 0x860034
+#define DUP7_CHARVESTERAO_HARVESTINGCOMPLETED 0x860035
+#define DUP8_CHARVESTERAO_HARVESTINGCOMPLETED 0x860036
+#define DUP9_CHARVESTERAO_HARVESTINGCOMPLETED 0x860037
+#define DUP1_CHARVESTERAO_HARVESTINGCOMPLETED 0x860038
+#define DUP10_CHARVESTERAO_HARVESTINGCOMPLETED 0x860039
+#define DUP11_CHARVESTERAO_HARVESTINGCOMPLETED 0x86003a
+#define DUP12_CHARVESTERAO_HARVESTINGCOMPLETED 0x86003b
+#define CHARVESTERAO_HANDLESESSIONOPENED 0x86003c
+#define DUP1_CHARVESTERAO_HANDLESESSIONOPENED 0x86003d
+#define DUP2_CHARVESTERAO_HANDLESESSIONOPENED 0x86003e
+#define DUP3_CHARVESTERAO_HANDLESESSIONOPENED 0x86003f
+#define DUP4_CHARVESTERAO_HANDLESESSIONOPENED 0x860040
+#define DUP5_CHARVESTERAO_HANDLESESSIONOPENED 0x860041
+#define DUP6_CHARVESTERAO_HANDLESESSIONOPENED 0x860042
+#define DUP7_CHARVESTERAO_HANDLESESSIONOPENED 0x860043
+#define DUP8_CHARVESTERAO_HANDLESESSIONOPENED 0x860044
+#define DUP9_CHARVESTERAO_HANDLESESSIONOPENED 0x860045
+#define DUP10_CHARVESTERAO_HANDLESESSIONOPENED 0x860046
+#define DUP11_CHARVESTERAO_HANDLESESSIONOPENED 0x860047
+#define DUP12_CHARVESTERAO_HANDLESESSIONOPENED 0x860048
+#define DUP13_CHARVESTERAO_HANDLESESSIONOPENED 0x860049
+#define CHARVESTERAO_HANDLESESSIONERROR 0x86004a
+#define CHARVESTERAO_CONTEXTINITIALIZATIONSTATUS 0x86004b
+#define DUP1_CHARVESTERAO_CONTEXTINITIALIZATIONSTATUS 0x86004c
+#define DUP2_CHARVESTERAO_CONTEXTINITIALIZATIONSTATUS 0x86004d
+#define CHARVESTERAO_PAUSEHARVESTER 0x86004e
+#define DUP1_CHARVESTERAO_PAUSEHARVESTER 0x86004f
+#define CHARVESTERAO_RESUMEHARVESTERL 0x860050
+#define CHARVESTERAO_RUNL 0x860051
+#define DUP1_CHARVESTERAO_RUNL 0x860052
+#define DUP2_CHARVESTERAO_RUNL 0x860053
+#define DUP3_CHARVESTERAO_RUNL 0x860054
+#define DUP4_CHARVESTERAO_RUNL 0x860055
+#define DUP5_CHARVESTERAO_RUNL 0x860056
+#define DUP6_CHARVESTERAO_RUNL 0x860057
+#define DUP7_CHARVESTERAO_RUNL 0x860058
+#define DUP8_CHARVESTERAO_RUNL 0x860059
+#define CHARVESTERAO_DOCANCEL 0x86005a
+#define CHARVESTERAO_RUNERROR 0x86005b
+#define DUP1_CHARVESTERAO_RUNERROR 0x86005c
+#define DUP2_CHARVESTERAO_RUNERROR 0x86005d
+#define DUP3_CHARVESTERAO_RUNERROR 0x86005e
+#define DUP4_CHARVESTERAO_RUNERROR 0x86005f
+#define CHARVESTERAO_SETNEXTREQUEST 0x860060
+#define CHARVESTERAO_ISSERVERPAUSED 0x860061
+#define CHARVESTERAO_BACKUPRESTORESTART 0x860062
+#define CHARVESTERAO_BACKUPRESTOREREADY 0x860063
+#define CHARVESTERAO_HANDLEDISKSPACENOTIFICATIONL 0x860064
+#define DUP1_CHARVESTERAO_HANDLEDISKSPACENOTIFICATIONL 0x860065
+#define DUP2_CHARVESTERAO_HANDLEDISKSPACENOTIFICATIONL 0x860066
+#define CHARVESTERAO_HARVESTFILE 0x860067
+#define DUP1_CHARVESTERAO_HARVESTFILE 0x860068
+#define DUP2_CHARVESTERAO_HARVESTFILE 0x860069
+#define DUP3_CHARVESTERAO_HARVESTFILE 0x86006a
+#define DUP4_CHARVESTERAO_HARVESTFILE 0x86006b
+#define DUP5_CHARVESTERAO_HARVESTFILE 0x86006c
+#define DUP6_CHARVESTERAO_HARVESTFILE 0x86006d
+#define DUP7_CHARVESTERAO_HARVESTFILE 0x86006e
+#define DUP8_CHARVESTERAO_HARVESTFILE 0x86006f
+#define DUP9_CHARVESTERAO_HARVESTFILE 0x860070
+#define DUP10_CHARVESTERAO_HARVESTFILE 0x860071
+#define CHARVESTERAO_HARVESTFILEWITHUID 0x860072
+#define DUP1_CHARVESTERAO_HARVESTFILEWITHUID 0x860073
+#define DUP2_CHARVESTERAO_HARVESTFILEWITHUID 0x860074
+#define DUP3_CHARVESTERAO_HARVESTFILEWITHUID 0x860075
+#define DUP4_CHARVESTERAO_HARVESTFILEWITHUID 0x860076
+#define DUP5_CHARVESTERAO_HARVESTFILEWITHUID 0x860077
+#define DUP6_CHARVESTERAO_HARVESTFILEWITHUID 0x860078
+#define DUP7_CHARVESTERAO_HARVESTFILEWITHUID 0x860079
+#define DUP8_CHARVESTERAO_HARVESTFILEWITHUID 0x86007a
+#define DUP9_CHARVESTERAO_HARVESTFILEWITHUID 0x86007b
+#define DUP10_CHARVESTERAO_HARVESTFILEWITHUID 0x86007c
+#define CHARVESTERAO_REGISTERPROCESSORIGIN 0x86007d
+#define DUP1_CHARVESTERAO_REGISTERPROCESSORIGIN 0x86007e
+#define DUP2_CHARVESTERAO_REGISTERPROCESSORIGIN 0x86007f
+#define DUP3_CHARVESTERAO_REGISTERPROCESSORIGIN 0x860080
+#define DUP4_CHARVESTERAO_REGISTERPROCESSORIGIN 0x860081
+#define DUP5_CHARVESTERAO_REGISTERPROCESSORIGIN 0x860082
+#define CHARVESTERAO_UNREGISTERPROCESSORIGIN 0x860083
+#define DUP1_CHARVESTERAO_UNREGISTERPROCESSORIGIN 0x860084
+#define DUP2_CHARVESTERAO_UNREGISTERPROCESSORIGIN 0x860085
+#define DUP3_CHARVESTERAO_UNREGISTERPROCESSORIGIN 0x860086
+#define CHARVESTERAO_REGISTERHARVESTCOMPLETE 0x860087
+#define CHARVESTERAO_UNREGISTERHARVESTCOMPLETE 0x860088
+#define CHARVESTERAO_REGISTERHARVESTEREVENT 0x860089
+#define CHARVESTERAO_UNREGISTERHARVESTEREVENT 0x86008a
+#define CHARVESTERAO_GETLASTOBSERVERID 0x86008b
+#define CHARVESTERAO_CONTEXTSNAPSHOTSTATUS 0x86008c
+#define DUP1_CHARVESTERAO_CONTEXTSNAPSHOTSTATUS 0x86008d
+#define DUP2_CHARVESTERAO_CONTEXTSNAPSHOTSTATUS 0x86008e
+#define DUP3_CHARVESTERAO_CONTEXTSNAPSHOTSTATUS 0x86008f
+#define DUP4_CHARVESTERAO_CONTEXTSNAPSHOTSTATUS 0x860090
+#define DUP5_CHARVESTERAO_CONTEXTSNAPSHOTSTATUS 0x860091
+#define CHARVESTERAO_HARVESTCOMPLETED 0x860092
+#define DUP1_CHARVESTERAO_HARVESTCOMPLETED 0x860093
+#define CHARVESTERAO_BOOTROMSCANL 0x860094
+#define CHARVESTERAO_BOOTPARTIALRESTORESCANL 0x860095
+#define DUP1_CHARVESTERAO_BOOTPARTIALRESTORESCANL 0x860096
+#define CHARVESTERAO_BOOTSCANL 0x860097
+#define DUP1_CHARVESTERAO_BOOTSCANL 0x860098
+#define DUP2_CHARVESTERAO_BOOTSCANL 0x860099
+#define DUP3_CHARVESTERAO_BOOTSCANL 0x86009a
+#define DUP4_CHARVESTERAO_BOOTSCANL 0x86009b
+#define DUP5_CHARVESTERAO_BOOTSCANL 0x86009c
+#define CHARVESTERAO_MEMORYLOW 0x86009d
+#define CHARVESTERAO_MEMORYGOOD 0x86009e
+
+
+#endif
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/server/traces/harvesterserverTraces.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,44 @@
+// Created by TraceCompiler 2.2.3
+// DO NOT EDIT, CHANGES WILL BE LOST
+
+#ifndef __HARVESTERSERVERTRACES_H__
+#define __HARVESTERSERVERTRACES_H__
+
+#define KOstTraceComponentID 0x200009f5
+
+#define CHARVESTERSERVER_CONSTRUCTL 0x86009f
+#define DUP1_CHARVESTERSERVER_CONSTRUCTL 0x8600a0
+#define CHARVESTERSERVER_PAUSE 0x8600a1
+#define CHARVESTERSERVER_RESUME 0x8600a2
+#define DUP1_CHARVESTERSERVER_PAUSE 0x8600a3
+#define DUP1_CHARVESTERSERVER_RESUME 0x8600a4
+#define CHARVESTERSERVER_PAUSEREADY 0x8600a5
+#define CHARVESTERSERVER_RESUMEREADY 0x8600a6
+#define CHARVESTERSERVER_SHUTDOWNNOTIFICATION 0x8600a7
+#define CHARVESTERSERVER_RESTARTNOTIFICATION 0x8600a8
+#define CHARVESTERSERVER_HARVESTFILE 0x8600a9
+#define CHARVESTERSERVER_HARVESTFILEWITHUID 0x8600aa
+#define CHARVESTERSERVER_REGISTERPROCESSORIGIN 0x8600ab
+#define CHARVESTERSERVER_UNREGISTERPROCESSORIGIN 0x8600ac
+#define CHARVESTERSERVER_REGISTERHARVESTCOMPLETE 0x8600ad
+#define CHARVESTERSERVER_UNREGISTERHARVESTCOMPLETE 0x8600ae
+#define CHARVESTERSERVER_REGISTERHARVESTEREVENT 0x8600af
+#define CHARVESTERSERVER_UNREGISTERHARVESTEREVENT 0x8600b0
+#define CHARVESTERSERVER_CHARVESTERSERVER 0x8600b1
+#define DUP1_CHARVESTERSERVER_CHARVESTERSERVER 0x8600b2
+#define CHARVESTERSERVER_PANICCLIENT 0x8600b3
+#define CHARVESTERSERVER_PANICSERVER 0x8600b4
+#define CHARVESTERSERVER_NEWSESSIONL 0x8600b5
+#define DUP1_CHARVESTERSERVER_NEWSESSIONL 0x8600b6
+#define CHARVESTERSERVER_RUNERROR 0x8600b7
+#define CHARVESTERSERVER_THREADFUNCTIONL 0x8600b8
+#define DUP1_CHARVESTERSERVER_THREADFUNCTIONL 0x8600b9
+#define CHARVESTERSERVER_THREADFUNCTION 0x8600ba
+#define DUP1_CHARVESTERSERVER_THREADFUNCTION 0x8600bb
+#define _E32MAIN 0x8600bc
+
+
+#endif
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/server/traces/harvesterserversessionTraces.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,21 @@
+// Created by TraceCompiler 2.2.3
+// DO NOT EDIT, CHANGES WILL BE LOST
+
+#ifndef __HARVESTERSERVERSESSIONTRACES_H__
+#define __HARVESTERSERVERSESSIONTRACES_H__
+
+#define KOstTraceComponentID 0x200009f5
+
+#define CHARVESTERSERVERSESSION_NEWL 0x8600bd
+#define CHARVESTERSERVERSESSION_NEWLC 0x8600be
+#define CHARVESTERSERVERSESSION_CONSTRUCTL 0x8600bf
+#define CHARVESTERSERVERSESSION_CHARVESTERSERVERSESSION 0x8600c0
+#define DUP1_CHARVESTERSERVERSESSION_CHARVESTERSERVERSESSION 0x8600c1
+#define CHARVESTERSERVERSESSION_SERVICEL 0x8600c2
+#define CHARVESTERSERVERSESSION_DISCONNECT 0x8600c3
+
+
+#endif
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeoCoderPlugin/data/2002DD11.rss Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,48 @@
+/*
+* 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 "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: Resource file used to register ecom dll's with registry.
+*
+*/
+
+#include <ecom/RegistryInfo.rh>
+
+RESOURCE REGISTRY_INFO theInfo
+ {
+ // UID for the DLL
+ dll_uid = 0x2002DD11;
+
+ // Declare array of interface info
+ interfaces =
+ {
+ INTERFACE_INFO
+ {
+ // UID of interface that is implemented
+ interface_uid = 0x2002DD13;
+ implementations =
+ {
+ // Info for Reverse GeoCoder
+ IMPLEMENTATION_INFO
+ {
+ implementation_uid = 0x2002DD12;
+ version_no = 1;
+ display_name = "Reverse GeoCoder";
+ default_data = "";
+ opaque_data = "";
+ }
+ };
+ }
+ };
+ }
+
+//End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeoCoderPlugin/group/bld.inf Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* 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 "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: This file provides the information required for building the plugin
+*
+*/
+
+PRJ_PLATFORMS
+
+
+PRJ_EXPORTS
+
+
+PRJ_MMPFILES
+reversegeocoderplugin.mmp
+
+
+
+//End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeoCoderPlugin/group/reversegeocoderplugin.mmp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,58 @@
+/*
+* 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 "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: Project file for ECom ReverseGeoCoderPlugin plug-in
+*
+*/
+
+#include <platform_paths.hrh>
+#include <data_caging_paths.hrh>
+
+TARGET reversegeocoderplugin.dll
+TARGETTYPE PLUGIN
+
+// ECom Dll recognition UID followed by the unique UID for this dll
+UID 0x10009D8D 0x2002DD11
+CAPABILITY CAP_ECOM_PLUGIN
+
+SOURCEPATH ..\src
+SOURCE proxy.cpp
+SOURCE reversegeocoderplugin.cpp
+
+
+USERINCLUDE ..\inc
+USERINCLUDE ..\..\inc
+USERINCLUDE ..\..\..\inc
+USERINCLUDE ..\..\ReverseGeocode\inc
+
+
+MW_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE /epoc32/include/stdapis
+
+
+SOURCEPATH ../data
+START RESOURCE 2002DD11.RSS
+TARGET reversegeocoderplugin.rsc
+END
+
+LIBRARY euser.lib
+LIBRARY ecom.lib
+LIBRARY reversegeocode.lib
+LIBRARY libc.lib
+
+PAGED
+BYTEPAIRCOMPRESSTARGET
+OPTION ARMCC -O3 -OTime
+
+//End of File
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeoCoderPlugin/inc/reversegeocoderplugin.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,127 @@
+/*
+* 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 "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: The header file for ReverseGeoCoderPlugin that creates the ReverseGeocoder
+*
+*/
+
+
+#ifndef __REVERSEGEOCODERPLUGIN_H__
+#define __REVERSEGEOCODERPLUGIN_H__
+
+// INCLUDES
+#include <e32base.h>
+
+#include "reversegeocode.h"
+
+/**
+ * CReverseGeoCoderPlugin
+ *
+ * An implementation of the CReverseGeoCoderPlugin definition.
+ * Encapsulates the reverse goecoding functionality
+ * This is concrete class, instance of which
+ * ECOM framework gives to ECOM clients.
+ */
+class CReverseGeoCoderPlugin : public CBase
+ {
+public:
+
+ /**
+ * Create instance of concrete implementation.
+ * @return: Instance of this class.
+ */
+ static CReverseGeoCoderPlugin* NewL();
+
+ /**
+ * Static constructor.
+ * @return: Instance of this class.
+ */
+ static CReverseGeoCoderPlugin* NewLC();
+
+ /**
+ * Destructor.
+ */
+ ~CReverseGeoCoderPlugin();
+
+
+protected:
+
+ /**
+ * The default constructor
+ * Perform the first phase of two phase construction
+ */
+ CReverseGeoCoderPlugin();
+
+ /**
+ * Perform the second phase construction of a
+ * CImplementationClassPlus object.
+ */
+ void ConstructL();
+
+public:
+
+ /**
+ * Creates the instance of Reverse Geocoder
+ *
+ */
+ void CreateReverseGeoCoderL();
+
+ /**
+ * Initializes the ReverseGeoCodeObserver
+ * @param: aObserver The observer class instance that is to be notified when reverse geocoding completes
+ *
+ */
+ virtual void AddObserverL(MReverseGeocodeObserver& aObserver);
+
+ /**
+ * A wrapper API to fetch the address from geocoordinates
+ * Internally calls the ReverseGeoCoder
+ * @param aLocality A TLocality object that contains the geocoordinate information
+ * @param aOption Indicates if the connection is silent connection or not
+ *
+ */
+ virtual void GetAddressByCoordinateL( TLocality aLocality,const TConnectionOption aOption );
+
+ /**
+ * Wrapper API to check if the ReverseGeoCoder allows a silent connection
+ * @return:TBool Indicates if a silent connection is allowed
+ *
+ */
+ virtual TBool SilentConnectionAllowed();
+
+private:
+
+ /**
+ * iRevGeocoder
+ * An instance of the CReverseGeocode class to fetch the place name from geocoordinates
+ */
+ CReverseGeocode *iRevGeocoder;
+
+ /*
+ * iObserver
+ * An instance of the class that is to be notified once Reverse Geocoding is completed
+ */
+ MReverseGeocodeObserver* iObserver;
+ /**
+ * iDtorKey
+ * Identification of the plugin on cleanup
+ */
+ TUid iDtorKey;
+
+ };
+
+
+#endif //__REVERSEGEOCODERPLUGIN_H__
+
+//End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeoCoderPlugin/src/proxy.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,48 @@
+/*
+* 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 "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: This file is the standard proxy for the ECOM plugin
+*
+*/
+
+
+// INCLUDE FILES
+#include <e32std.h>
+#include <ecom/implementationproxy.h>
+
+#include "reversegeocoderplugin.h"
+
+
+// ----------------------------------------------------------------------------
+// Provides a key value pair table, this is used to identify
+// the correct construction function for the requested interface.
+// ----------------------------------------------------------------------------
+//
+
+const TImplementationProxy ImplementationTable[] =
+ {
+ IMPLEMENTATION_PROXY_ENTRY(0x2002DD12, CReverseGeoCoderPlugin::NewL)
+ };
+
+// ----------------------------------------------------------------------------
+// ImplementationGroupProxy
+// Function used to return an instance of the proxy table.
+// ----------------------------------------------------------------------------
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+ {
+ aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+ return ImplementationTable;
+ }
+
+//End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeoCoderPlugin/src/reversegeocoderplugin.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,161 @@
+/*
+* 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 "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: The source file for ReverseGeoCoderPlugin that creates the ReverseGeocoder
+*
+*/
+
+// INCLUDE FILES
+#include <w32std.h>
+#include <lbsposition.h>
+
+
+#include "reversegeocoderplugin.h"
+#include "reversegeocode.h"
+#include "geotagger.h"
+#include "locationmanagerdebug.h"
+
+
+// ----------------------------------------------------------------------------
+// CReverseGeoCoderPlugin::NewL
+// Create instance of concrete ECOM interface implementation
+// ----------------------------------------------------------------------------
+//
+CReverseGeoCoderPlugin* CReverseGeoCoderPlugin::NewL()
+ {
+ LOG( "CReverseGeoCoderPlugin::NewL" );
+ CReverseGeoCoderPlugin* self = CReverseGeoCoderPlugin::NewLC();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CReverseGeoCoderPlugin::NewLC
+// Create instance of concrete ECOM interface implementation
+// ----------------------------------------------------------------------------
+//
+CReverseGeoCoderPlugin* CReverseGeoCoderPlugin::NewLC()
+ {
+ LOG( "CReverseGeoCoderPlugin::NewLC" );
+ CReverseGeoCoderPlugin* self = new (ELeave) CReverseGeoCoderPlugin;
+ CleanupStack::PushL (self);
+ self->ConstructL();
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CReverseGeoCoderPlugin::CReverseGeoCoderPlugin()
+// The default constructor
+// ----------------------------------------------------------------------------
+//
+CReverseGeoCoderPlugin::CReverseGeoCoderPlugin()
+ : iRevGeocoder(NULL),
+ iObserver(NULL)
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CReverseGeoCoderPlugin::ConstructL
+// Second phase construction.
+// ----------------------------------------------------------------------------
+//
+void CReverseGeoCoderPlugin::ConstructL()
+ {
+ LOG( "CReverseGeoCoderPlugin::ConstructL" );
+ }
+
+// ----------------------------------------------------------------------------
+// CReverseGeoCoderPlugin::~CReverseGeoCoderPlugin
+// Destructor
+// ----------------------------------------------------------------------------
+//
+CReverseGeoCoderPlugin::~CReverseGeoCoderPlugin()
+ {
+ LOG( "CReverseGeoCoderPlugin::~CReverseGeoCoderPlugin,begin" );
+ delete iRevGeocoder;
+ iObserver = NULL;
+ LOG( "CReverseGeoCoderPlugin::~CReverseGeoCoderPlugin,end" );
+ }
+
+// ----------------------------------------------------------------------------
+// CReverseGeoCoderPlugin::CreateReverseGeoCoderL
+// Creates an instance of the ReverseGeoCoder
+// ----------------------------------------------------------------------------
+//
+void CReverseGeoCoderPlugin::CreateReverseGeoCoderL()
+ {
+ LOG( "CReverseGeoCoderPlugin::CreateReverseGeoCoderL,begin" );
+ if(iObserver)
+ {
+ iRevGeocoder = CReverseGeocode::NewL(*iObserver);
+ }
+ LOG( "CReverseGeoCoderPlugin::CreateReverseGeoCoderL,end" );
+ }
+
+// ----------------------------------------------------------------------------
+// CReverseGeoCoderPlugin::AddObserverL
+// Initializes the ReverseGeoCodeObserver
+// ----------------------------------------------------------------------------
+//
+void CReverseGeoCoderPlugin::AddObserverL(MReverseGeocodeObserver& aObserver)
+ {
+ LOG( "CReverseGeoCoderPlugin::AddObserverL,begin" );
+ iObserver = &aObserver;
+
+ if(!iRevGeocoder)
+ {
+ CreateReverseGeoCoderL();
+ }
+ LOG( "CReverseGeoCoderPlugin::AddObserverL,end" );
+ }
+
+
+// ----------------------------------------------------------------------------
+// CReverseGeoCoderPlugin::GetAddressByCoordinateL
+// Gets the address for the given geo-coordinaates.
+// ----------------------------------------------------------------------------
+//
+void CReverseGeoCoderPlugin::GetAddressByCoordinateL( TLocality aLocality,
+ const TConnectionOption aOption )
+ {
+ LOG( "CReverseGeoCoderPlugin::GetAddressByCoordinateL,begin" );
+ if(iRevGeocoder)
+ {
+ iRevGeocoder->GetAddressByCoordinateL(aLocality, aOption);
+ }
+ LOG( "CReverseGeoCoderPlugin::GetAddressByCoordinateL,end" );
+ }
+
+
+ // ----------------------------------------------------------------------------
+ // CReverseGeoCoderPlugin::SilentConnectionAllowed
+ // Wrapper API to check if the ReverseGeoCoder allows a silent connection
+ // ----------------------------------------------------------------------------
+ //
+TBool CReverseGeoCoderPlugin::SilentConnectionAllowed()
+ {
+ LOG( "CReverseGeoCoderPlugin::SilentConnectionAllowed,begin" );
+ TBool ret = EFalse;
+ if(iRevGeocoder)
+ {
+ ret = iRevGeocoder->SilentConnectionAllowed();
+ }
+ LOG1( "CReverseGeoCoderPlugin::SilentConnectionAllowed,end ret - %d", ret );
+ return ret;
+ }
+
+
+
+ //End of File
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeocode/bwincw/reversegeocodewinscw.def Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+ ?NewL@CReverseGeocode@@SAPAV1@AAVMReverseGeocodeObserver@@@Z @ 1 NONAME ; class CReverseGeocode * CReverseGeocode::NewL(class MReverseGeocodeObserver &)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeocode/eabi/reversegeocodearm.def Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,5 @@
+EXPORTS
+ _ZN15CReverseGeocode4NewLER23MReverseGeocodeObserver @ 1 NONAME
+ _ZTI23CConnectionTimerHandler @ 2 NONAME
+ _ZTV23CConnectionTimerHandler @ 3 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeocode/group/bld.inf Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 2005-2009 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: Build information file
+*
+*/
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+
+PRJ_MMPFILES
+ReverseGeocode.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeocode/group/reversegeocode.mmp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,77 @@
+/*
+* Copyright (c) 2005-2009 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: Project definition file
+*
+*/
+
+#include <platform_paths.hrh>
+#include <data_caging_paths.hrh>
+
+#if defined(WINSCW)
+deffile ../bwincw/reversegeocodewinscw.def
+#elif defined(ARMCC)
+deffile ../eabi/reversegeocodearm.def
+#endif
+nostrictdef
+
+VERSION 10.0
+TARGET reversegeocode.dll
+TARGETTYPE dll
+UID 0x1000008d 0xEF7E39A4
+
+VENDORID VID_DEFAULT
+CAPABILITY CAP_GENERAL_DLL
+
+USERINCLUDE ../inc
+USERINCLUDE ../../inc
+USERINCLUDE ../../../inc
+
+
+MW_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE /epoc32/include/stdapis
+
+SOURCEPATH ../src
+
+SOURCE clientengine.cpp
+SOURCE xmlhandler.cpp
+SOURCE internalreversegeocode.cpp
+SOURCE internaladdressinfo.cpp
+SOURCE reversegeocode.cpp
+SOURCE connectiontimerhandler.cpp
+
+LIBRARY cone.lib
+LIBRARY netmeta.lib
+LIBRARY euser.lib
+LIBRARY insock.lib
+LIBRARY inetprotutil.lib
+LIBRARY http.lib
+LIBRARY ecom.lib // for HTTP Client API
+LIBRARY bafl.lib
+LIBRARY commdb.lib
+LIBRARY cmmanager.lib // ALR / SNAP
+LIBRARY xmlframework.lib
+LIBRARY esock.lib
+LIBRARY lbs.lib
+LIBRARY charconv.lib
+LIBRARY extendedconnpref.lib
+LIBRARY etel.lib
+LIBRARY etelmm.lib
+LIBRARY libc.lib
+
+PAGED
+BYTEPAIRCOMPRESSTARGET
+OPTION ARMCC -O3 -OTime
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeocode/inc/clientengine.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,302 @@
+/*
+* Copyright (c) 2006-2009 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: HTTP client engine, which takes of doing an Http GET request for
+* the maps server.
+*/
+
+#ifndef __CLIENTENGINE_H__
+#define __CLIENTENGINE_H__
+
+#include <http/mhttptransactioncallback.h>
+#include <http/mhttpauthenticationcallback.h>
+#include <es_sock.h>
+#include <cmmanager.h>
+#include <comms-infras/cs_mobility_apiext.h>
+#include <etel.h>
+#include <etelmm.h>
+
+#include "reversegeocode.h"
+
+class RHTTPSession;
+class RHTTPTransaction;
+
+const TInt KDefaultBufferSize = 256;
+
+/*
+ * Enumration for the different states of HTTP GET request.
+ */
+enum THttpStatus
+ {
+ EHttpSessionError =0,
+ EHttpExitingApp,
+ EHttpConnecting,
+ EHttpTxCancelled,
+ EHttpHdrReceived,
+ EHttpBytesReceieved,
+ EHttpBodyReceieved,
+ EHttpTxCompleted,
+ EHttpTxSuccess,
+ EHttpTxFailed,
+ EHttpConnectionFailure,
+ EHttpUnknownEvent,
+ EHttpMhfRunError,
+ EHttpAuthNote,
+ EHttpAuthFailed,
+ EHttpAuthRequired,
+ };
+
+enum TMobileRoamingStatus
+ {
+ EMobileNotRegistered = 0x00,
+ EMobileRegHomeNetwork, // home network
+ EMobileNationalRoaming,
+ EMobileInternationalRoaming
+ };
+
+/*
+* MClientObserver
+* CClientEngine passes events and responses body data with this interface.
+* An instance of this class must be provided for construction of CClientEngine.
+*/
+class MClientObserver
+ {
+ public:
+ /*
+ * ClientEvent()
+ *
+ * Called when event occurs in CClientEngine.
+ *
+ * @params aEvent Status of the event.
+ */
+ virtual void ClientEvent( const THttpStatus& aEvent ) = 0;
+
+ /*
+ * ClientBodyReceived()
+ *
+ * Called when a part of the HTTP body is received.
+ *
+ * @param aBodyData Part of the body data received. (e.g. part of
+ * the received HTML page)
+ */
+ virtual void ClientBodyReceived( const TDesC8& aBodyData ) = 0;
+
+ /*
+ * Get registrer network country code
+ *
+ * @return current register n/w info
+ */
+ virtual RMobilePhone::TMobilePhoneNetworkInfoV2& GetCurrentRegisterNw() = 0;
+
+ /*
+ * UE is registered to home network?
+ *
+ * @return ETrue if UE is registered at home network else EFalse
+ */
+ virtual TBool IsRegisteredAtHomeNetwork() = 0;
+
+ /*
+ * Get home network country code
+ * @param aHomeNwInfoAvailableFlag ETrue if home n/w info available else EFalse
+ * @return user home n/w info
+ */
+ virtual const RMobilePhone::TMobilePhoneNetworkInfoV1&
+ GetHomeNetworkInfo(TBool& aHomeNwInfoAvailableFlag) = 0;
+ };
+
+
+/*
+* Provides simple interface to HTTP Client API.
+*/
+NONSHARABLE_CLASS( CClientEngine ): public CActive,
+ public MHTTPTransactionCallback,
+ public MMobilityProtocolResp
+ {
+
+ //Internal Engine state
+ enum TEngineState
+ {
+ EIdle = 0,
+ EGet
+ };
+
+ public:
+ /*
+ * Create a CClientEngine object.
+ *
+ * @params iObserver refernce to the MClientObservers implementation
+ *
+ * @returns A pointer to the created instance of CClientEngine
+ */
+ static CClientEngine* NewL( MClientObserver& iObserver );
+
+ /*
+ * Create a CClientEngine object. This leaves the object on the clean up
+ * stack.
+ *
+ * @params iObserver refernce to the MClientObservers implementation
+ *
+ * @returns A pointer to the created instance of CClientEngine
+ */
+ static CClientEngine* NewLC( MClientObserver& iObserver );
+
+ /*
+ * Destroy the object
+ *
+ */
+ ~CClientEngine();
+
+ /*
+ * Starts a new HTTP GET transaction.
+ *
+ * @param aUri URI to get request. (e.g. http://host.org")
+ */
+ void IssueHTTPGetL( const TDesC8& aUri, const TConnectionOption aOption );
+
+ /*
+ * Closes currently running transaction and frees resources related to it.
+ */
+ void CancelTransaction();
+
+ /*
+ * Closes the connection
+ */
+ void CloseConnection();
+
+
+ /*
+ * checks if silent connection is allowed
+ * @return ETrue if silent connection is allowed
+ */
+ TBool SilentConnectionAllowed();
+
+ private:
+ /*
+ * Perform the second phase construction of a CClientEngine object.
+ */
+ void ConstructL();
+
+ /*
+ * Performs the first phase of two phase construction.
+ * @param iObserver The observer that is notified after the HTTP transcation is over
+ */
+ CClientEngine( MClientObserver& iObserver );
+
+ /*
+ * Sets header value of an HTTP request.
+ *
+ * @param aHeaders Headers of the HTTP request
+ * @param aHdrField Enumerated HTTP header field, e.g. HTTP::EUserAgent
+ * @param aHdrValue New value for header field.
+ */
+ void SetHeaderL( RHTTPHeaders aHeaders, TInt aHdrField,
+ const TDesC8& aHdrValue );
+
+ /*
+ * Sets up the connection
+ * @param aOption The connection option
+ */
+ void SetupConnectionL( const TConnectionOption aOption );
+
+ private:
+ //From MHTTPSessionEventCallback
+ /*
+ * Called by framework to notify about transaction events.
+ *
+ * @param aTransaction Transaction, where the event occured.
+ * @param aEvent Occured event.
+ */
+ void MHFRunL( RHTTPTransaction aTransaction, const THTTPEvent& aEvent );
+
+ /*
+ * Called by framework to notify about transaction events.
+ *
+ * @param aTransaction Transaction, where the event occured.
+ * @param aError Error status code.
+ * @param aEvent The event that was being processed when leave occured.
+ *
+ * @retuen KErrNone, if the error was handled. Otherwise the value of aError, or
+ * some other error value. Returning error value causes causes
+ * HTTP-CORE 6 panic.
+ */
+ TInt MHFRunError( TInt aError, RHTTPTransaction aTransaction, const THTTPEvent& aEvent );
+
+ private:
+ // from MMobilityProtocolResp
+ void PreferredCarrierAvailable( TAccessPointInfo aOldAPInfo,
+ TAccessPointInfo aNewAPInfo,
+ TBool aIsUpgrade,
+ TBool aIsSeamless );
+ void NewCarrierActive( TAccessPointInfo aNewAPInfo, TBool aIsSeamless );
+ void Error( TInt aError );
+
+ TBool IsDataConnectionAskAlwaysL();
+ TMobileRoamingStatus UeRegNetworkStatus();
+ TBool IsVisitorNetwork(const TMobileRoamingStatus& aRoamingStatus) const;
+ TBool IsWlanOnly(const TMobileRoamingStatus& aRoamingStatus,
+ const TCmGenConnSettings& aGenConnSettings) const;
+
+private: // from CActive
+
+ /**
+ * RunL
+ * This method is called on completion of the active object request
+ */
+
+ void RunL();
+
+ /**
+ * DoCancel
+ * Cancels any outstanding requests
+ */
+ void DoCancel();
+
+ /**
+ * This method is called if the RunL leaves
+ * @param aError The errcode with which it leaves
+ */
+ TInt RunError(TInt aError);
+
+private:
+
+ /**
+ * Submits a HTTP transaction
+ */
+ void DoHTTPGetL();
+
+private:
+ // declare members
+ RSocketServ iSocketServ;
+ RConnection iConnection;
+ TUint32 iSelectedIap;
+
+ RHTTPSession iSession;
+ RHTTPTransaction iTransaction;
+
+ MClientObserver& iObserver; // Used for passing body data and events to UI
+ TBool iRunning; // ETrue, if transaction running
+ TBool iConnectionSetupDone;
+
+ TInt iPrevProfileId;
+
+ CActiveCommsMobilityApiExt* iMobility;
+ TBool iTransactionOpen;
+ TEngineState iEngineState;
+ HBufC8* iUri;
+ RCmManager iCmManager;
+
+ };
+
+#endif // __CLIENTENGINE_H__
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeocode/inc/connectiontimerhandler.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,92 @@
+/*
+* 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 "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: Handle connection close
+*
+*/
+
+#ifndef __CONNECTIONTIMERHANDLER_H__
+#define __CONNECTIONTIMERHANDLER_H__
+
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+class MConnectionTimeoutHandlerInterface
+ {
+ public:
+
+ /**
+ * Handles the timedout event
+ * @param aErrorCode the errcode for time out
+ */
+ virtual void HandleTimedoutEvent(TInt aErrorCode) = 0;
+ };
+
+class CConnectionTimerHandler : public CTimer
+{
+
+public:
+
+ /**
+ * @param aConnectionTimeoutHandlerInterface the interace class that handles the timeout events
+ */
+ static CConnectionTimerHandler* NewL(MConnectionTimeoutHandlerInterface& aConnectionTimeoutHandlerInterface);
+
+ /**
+ * Destructor
+ */
+ ~CConnectionTimerHandler();
+
+ /**
+ * starts a timer
+ * @param aTimeoutVal the time after which the timer will expire
+ */
+ void StartTimer(const TInt aTimeoutVal);
+
+
+protected:
+
+ /**
+ * RunL
+ * from CActive
+ */
+ void RunL();
+
+ private:
+
+ /**
+ * Second phase construction
+ */
+ void ConstructL();
+
+ /**
+ * @param aConnectionTimeoutHandlerInterface the interace class that handles the timeout events
+ */
+ CConnectionTimerHandler(MConnectionTimeoutHandlerInterface& aConnectionTimeoutHandlerInterface);
+
+
+
+private:
+
+ /**
+ * An instance of the interace class that handles the timeout events
+ */
+ MConnectionTimeoutHandlerInterface& iConnectionTimeoutHandlerInterface;
+};
+
+
+#endif /*__CONNECTIONTIMERHANDLER_H__*/
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeocode/inc/internaladdressinfo.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,158 @@
+/*
+* Copyright (c) 2006-2009 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: Implementation class from the CAddressInfo abstract class.
+*/
+
+#ifndef INTERNALADDRESSINFO_H_
+#define INTERNALADDRESSINFO_H_
+
+#include "reversegeocode.h"
+/*
+ * Internal implementation class for theCAddressInfo abstract class.
+ */
+NONSHARABLE_CLASS( CInternalAddressInfo ) : public MAddressInfo
+ {
+ public:
+ //from CAddressInfo class
+
+ /**
+ * Gets the country name
+ * @return The country name
+ */
+ virtual TDesC& GetCountryName();
+
+ /**
+ * Gets the state name
+ * @return The state name
+ */
+ virtual TDesC& GetState();
+
+ /**
+ * Gets the city name
+ * @return The city name
+ */
+ virtual TDesC& GetCity();
+
+ /**
+ * Gets the district name
+ * @return The district name
+ */
+ virtual TDesC& GetDistrict();
+
+ /**
+ * Gets the pincode
+ * @return The cpincode
+ */
+ virtual TDesC& GetPincode();
+
+ /**
+ * Gets the Thoroughfare name
+ * @return The Thoroughfare name
+ */
+ virtual TDesC& GetThoroughfareName();
+
+ /**
+ * Gets the ThoroughfareNumber
+ * @return The ThoroughfareNumber
+ */
+ virtual TDesC& GetThoroughfareNumber();
+
+ protected:
+
+ /**
+ * Performs the secondphase construction
+ */
+ void ConstructL();
+
+ /**
+ * Constructor
+ */
+ CInternalAddressInfo();
+
+ public:
+
+
+ /**
+ * Factory function to create the instance
+ * @return A pointer to the CInternalAddressInfo
+ */
+ static CInternalAddressInfo* NewL();
+
+
+ /**
+ * Destructor
+ */
+ ~CInternalAddressInfo();
+
+ // internal setter utilities to
+ // set the different attributes of the address.
+
+ /**
+ * Sets the country name
+ * @param aCountryName The country name
+ */
+ void SetCountryName( const TDesC& aCountryName );
+
+ /**
+ * Sets the state name
+ * @param aStateName The state name
+ */
+ void SetState( const TDesC& aStateName );
+
+ /**
+ * Sets the City name
+ * @param aCityName The City name
+ */
+ void SetCity( const TDesC& aCityName );
+
+ /**
+ * Sets the District name
+ * @param aDistrictName The District name
+ */
+ void SetDistrict( const TDesC& aDistrictName );
+
+ /**
+ * Sets the Pincode
+ * @param aPincode The Pincode\
+ */
+ void SetPincode( const TDesC& aPincode );
+
+ /**
+ * Sets the Thoroughfare name
+ * @param aTFName The Thoroughfare name
+ */
+ void SetThoroughfareName( const TDesC& aTFName );
+ /**
+ * Sets the ThoroughfareNumber
+ * @param aTFNumber The ThoroughfareNumber
+ */
+ void SetThoroughfareNumber( const TDesC& aTFNumber );
+
+ /**
+ * Resets the address info
+ */
+ void ResetAddressInfoL();
+
+ private:
+ HBufC* iCountryName;
+ HBufC* iState;
+ HBufC* iCity;
+ HBufC* iDistrict;
+ HBufC* iPin;
+ HBufC* iTFName;
+ HBufC* iTFNumber;
+ };
+#endif /* INTERNALADDRESSINFO_H_ */
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeocode/inc/internalreversegeocode.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,165 @@
+/*
+* Copyright (c) 2006-2009 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: Implementaion class for the CReverseGeocode class.
+*/
+#ifndef _INTERNALREVERSEGEOCODE_H_
+#define _INTERNALREVERSEGEOCODE_H_
+
+#include <coemain.h>
+
+#include "reversegeocode.h"
+#include "xmlhandler.h"
+#include "clientengine.h"
+#include "connectiontimerhandler.h"
+
+
+/*
+ * Internal implementation class for the CReverseGeocode class.
+ */
+NONSHARABLE_CLASS( CInternalReverseGeocode ) : public CReverseGeocode,
+ public MClientObserver,
+ public MXmlHandlerObserver,
+ public MConnectionTimeoutHandlerInterface
+ {
+public:
+ /**
+ * Factory function to create the instance
+ * @param aObserver The observer instance that is to be notified when reverse geocoding is over
+ * @return A pointer to the CInternalReverseGeocode instance
+ */
+ static CInternalReverseGeocode* NewL( MReverseGeocodeObserver& aObserver );
+
+ /**
+ * Gets the address for the given geo-coordinaates.
+ * @param aLocality The locality information
+ * aOption The connection option whether its silent or not
+ */
+ virtual void GetAddressByCoordinateL( TLocality aLocality, const TConnectionOption aOption );
+
+ /**
+ * Checks if a silent connection is allowed
+ * @return ETrue If silentconnection is allowed
+ */
+ virtual TBool SilentConnectionAllowed();
+
+
+ /**
+ * Helper function to get the appropriate language for the request.
+ * @param aLanguage The language for the request
+ */
+ void GetLanguageForTheRequest( TDes8& aLanguage );
+
+
+ /**
+ * destructor
+ *
+ */
+ ~CInternalReverseGeocode();
+
+ // MConnectionTimeoutHandlerInterface
+ /**
+ * Closes the connection once it times out
+ * @param aErrorCode The Error code
+ */
+ void HandleTimedoutEvent(TInt aErrorCode);
+
+protected:
+
+ /**
+ * Second phase construction
+ */
+ void ConstructL();
+
+
+ /**
+ * First phase construction.
+ * @param aObserver The observer instance that is to be notified when reverse geocoding is over
+ */
+ CInternalReverseGeocode( MReverseGeocodeObserver& aObserver );
+
+ //From MClientObserver
+ /**
+ * callback which notifies progess of HTTP request
+ * @param aEvent The Httpstatus
+ */
+ void ClientEvent( const THttpStatus& aEvent );
+
+ /**
+ * callback through which the HTTP body data is recieved.
+ * @param aBodyData The body recieved
+ */
+ void ClientBodyReceived(const TDesC8& aBodyData);
+
+ /*
+ * Get registrer network country code
+ *
+ * @return current register n/w info
+ */
+ RMobilePhone::TMobilePhoneNetworkInfoV2& GetCurrentRegisterNw();
+
+ //From MXmlHandlerObserver
+ /**
+ * callback which notifys the completion of parsing.
+ * @param aError The err code
+ * aAddressInfo The address info obtained after parsing
+ */
+ void OnParseCompletedL( TInt aError, MAddressInfo& aAddressInfo );
+
+ /*
+ * UE is registered to home network?
+ *
+ * @return ETrue if UE is registered at home network else EFalse
+ */
+ TBool IsRegisteredAtHomeNetwork();
+
+
+ /*
+ * Get home network country code
+ * @param aHomeNwInfoAvailableFlag ETrue if home n/w info available else EFalse
+ * @return user home n/w info
+ */
+ const RMobilePhone::TMobilePhoneNetworkInfoV1&
+ GetHomeNetworkInfo(TBool& aHomeNwInfoAvailableFlag);
+
+private:
+
+ /**
+ * Starts the timer
+ */
+ void StartTimer();
+
+ /**
+ * Closes the http connection and notifies the observer
+ */
+ void CloseConnection();
+
+private:
+ CXmlHandler *iXmlHandler;
+ CClientEngine *iClientEngine;
+ CInternalAddressInfo *iAddressInfo;
+ HBufC8* iXMLBuf;
+ MReverseGeocodeObserver& iObserver;
+ CConnectionTimerHandler* iTimer;
+
+ // Optimize the buffer len..??
+ TBuf8<KMaxFileName> iQueryString;
+ TBuf8<KMaxFileName> iAuthCode;
+ TBuf8<KMaxFileName> iRefURL;
+ TBuf8<KMaxFileName> iLang;
+ TBool iStartTimerFlag;
+};
+
+#endif //_INTERNALREVERSEGEOCODE_H_
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeocode/inc/reversegeocode.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,173 @@
+/*
+* Copyright (c) 2006-2009 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: Reverse Geocode utility which converts the geo coordinates in to
+* the actual address information.
+*/
+
+#ifndef REVERSEGEOCODE_H_
+#define REVERSEGEOCODE_H_
+
+#include <e32base.h>
+#include <lbsposition.h>
+#include <etel.h>
+#include <etelmm.h>
+#include "geotagger.h"
+
+/*
+ * Data class to get the address details. An handle to this type will be given to the
+ * user through MReverseGeocodeObserver::ReverseGeocodeComplete callback, through which
+ * user can retrieve the address details using the following interfaces.
+ *
+ **/
+class MAddressInfo
+ {
+ public:
+ /*
+ * Gets the reference to the country name. Scope of this returned reference is limited to
+ * this perticular call. User has to store it for their further processing.
+ *
+ * @return reference to the String which holds the Country Name.
+ */
+ virtual TDesC& GetCountryName()= 0;
+
+ /*
+ * Gets the reference to the State. Scope of this returned reference is limited to
+ * this perticular call. User has to store it for their further processing.
+ *
+ * @return reference to the String which holds the State name.
+ */
+ virtual TDesC& GetState()= 0;
+
+ /*
+ * Gets the reference to the City. Scope of this returned reference is limited to
+ * this perticular call. User has to store it for their further processing.
+ *
+ * @return reference to the String which holds the City Name.
+ */
+ virtual TDesC& GetCity()= 0;
+
+ /*
+ * Gets the reference to the District name. Scope of this returned reference is limited to
+ * this perticular call. User has to store it for their further processing.
+ *
+ * @return reference to the String which holds the District Name.
+ */
+ virtual TDesC& GetDistrict()= 0;
+
+ /*
+ * Gets the reference to the postal code. Scope of this returned reference is limited to
+ * this perticular call. User has to store it for their further processing.
+ *
+ * @return reference to the String which holds the postal code.
+ */
+ virtual TDesC& GetPincode()= 0;
+
+ /*
+ * Gets the reference to the thoroughfare name. Scope of this returned reference is limited to
+ * this perticular call. User has to store it for their further processing.
+ *
+ * @return reference to the String which holds the thoroughfare name.
+ */
+ virtual TDesC& GetThoroughfareName()= 0;
+
+ /*
+ * Gets the reference to the thoroughfare number. Scope of this returned reference is limited to
+ * this perticular call. User has to store it for their further processing.
+ *
+ * @return reference to the String which holds the thoroughfare number.
+ */
+ virtual TDesC& GetThoroughfareNumber() = 0;
+ };
+
+/*
+ * Observer class which exposes callbacks to notify the completion of reversegeocoding event.
+ *
+ **/
+class MReverseGeocodeObserver
+ {
+ public:
+ /*
+ * Callback function which notifys the completion of reverse geocode event. This signals the completion
+ * of the asynchronous function CReverseGeoCode::GetAddressByCoordinate.
+ *
+ * @param aErrorcode Error status KErrNone in case of success or other system specific errorcodes
+ * in case of failures.
+ *
+ * @param aAddressInfo refrence to the address stucture, through which user can access the
+ * address information.
+ */
+
+ virtual void ReverseGeocodeComplete( TInt& aErrorcode, MAddressInfo& aAddressInfo ) =0;
+
+ /*
+ * Get registrer network country code
+ *
+ * @return current register n/w info
+ */
+ virtual RMobilePhone::TMobilePhoneNetworkInfoV2& GetCurrentRegisterNw() = 0;
+
+
+ /*
+ * UE is registered to home network?
+ *
+ * @return ETrue if UE is registered at home network else EFalse
+ */
+ virtual TBool IsRegisteredAtHomeNetwork() = 0;
+
+ /*
+ * Get home network country code
+ * @param aHomeNwInfoAvailableFlag ETrue if home n/w info available else EFalse
+ * @return user home n/w info
+ */
+ virtual const RMobilePhone::TMobilePhoneNetworkInfoV1&
+ GetHomeNetworkInfo(TBool& aHomeNwInfoAvailableFlag) = 0;
+ };
+
+/*
+ * CReverseGeocode
+ * Concrete class which exposes interfaces to convert the geo-coordinates information
+ * in to the address information.
+ *
+ **/
+class CReverseGeocode : public CBase
+ {
+ public:
+ /*
+ * Factory function to create the instance of CReverseGeocode Class. This also registers
+ * observer for getting the reverse geocode completion notifications.
+ *
+ * @param aObserver refrence to the instance MReverseGeocodeObserver's
+ * implementation class.
+ * @return pointer to the instance of CReverseGeocode.
+ */
+ IMPORT_C static CReverseGeocode* NewL( MReverseGeocodeObserver& aObserver );
+
+ /*
+ * Gets the address information for the given geo coordinates. This is an asynchronous function
+ * Whose completion will be notified by the MReverseGeocodeObserver::ReverseGeocodeComplete callback.
+ *
+ * @param aObserver refrence to the instance MReverseGeocodeObserver's
+ * implementation class.
+ */
+ virtual void GetAddressByCoordinateL( TLocality aLocality,
+ const TConnectionOption aOption = ESilent ) = 0;
+
+ /*
+ * checks if silent connection is allowed
+ * @return ETrue if silent connection is allowed
+ */
+ virtual TBool SilentConnectionAllowed() = 0;
+ };
+
+#endif /* REVERSEGEOCODE_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeocode/inc/xmlhandler.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,217 @@
+/*
+* Copyright (c) 2006-2009 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: XMLHandler class to parse the resultant reverse geocoded
+* information.
+*/
+
+#ifndef __XMLHANDLER_H__
+#define __XMLHANDLER_H__
+
+// INCLUDE FILES
+#include <e32base.h>
+#include <xml/contenthandler.h> // for mcontenthandler
+#include <xml/parser.h> // for cparser
+using namespace Xml;
+
+//Forward declarations
+class CAddressInfo;
+class CInternalAddressInfo;
+
+/*
+ * Category of the address information. This is used for
+ * internal parsing procedure.
+ */
+namespace xmlhandler
+ {
+ enum TLocationInfoType
+ {
+ ENone = 0,
+ ECountryName,
+ EState,
+ ECity,
+ EDistrict,
+ EPostalCode,
+ EThoroughfareName,
+ EThoroughfareNumber
+ };
+ }
+
+/**
+ * MXmlHandlerObserver, an observer to CXmlHandler class.
+ */
+class MXmlHandlerObserver
+ {
+ public:
+ /*
+ * Signifies the completion of parsing of the output data.
+ *
+ * @param aError error status of parsing part.
+ * @param aLocationInfo reference to the resultant address information structure.
+ */
+ virtual void OnParseCompletedL( TInt aError, MAddressInfo& aLocationInfo ) = 0;
+ };
+
+/**
+ * CXmlHandler, a class to parse XML file and then output log information
+ * to a buffer.
+ */
+NONSHARABLE_CLASS( CXmlHandler ) : public MContentHandler
+ {
+ public: // Constructors and destructor
+
+ /**
+ * 1st phase constructor
+ *
+ * @param aObserver The observer class to be notified after xml parsing is done
+ * aAddressInfo The address info
+ */
+ static CXmlHandler* NewL( MXmlHandlerObserver& aObserver, CInternalAddressInfo *aAddressInfo );
+
+ /**
+ * 1st phase constructor pushes the object into cleanup stack
+ * @param aObserver The observer class to be notified after xml parsing is done
+ * aAddressInfo The address info
+ */
+ static CXmlHandler* NewLC( MXmlHandlerObserver& aObserver, CInternalAddressInfo *aAddressInfo );
+
+ /**
+ * Destructor
+ */
+ virtual ~CXmlHandler();
+
+ public: // Public methods
+
+ /**
+ * Starts parsing the xml content
+ * @param aBuf The xml data
+ */
+
+ void StartParsingL( HBufC8 *aBuf );
+
+ private: // Constructors
+
+ /**
+ * @param aObserver The observer class to be notified after xml parsing is done
+ * @param aAddressInfo The address info
+ */
+
+ CXmlHandler( MXmlHandlerObserver& aObserver, CInternalAddressInfo *aAddressInfo );
+
+ /**
+ * Second phase construction
+ */
+ void ConstructL();
+
+ private:
+ // from MContentHandler
+
+ /**
+ * This method is a callback to indicate the start of the document
+ * @param aDocParam Specifies the various parameters of the document.
+ * @param aErrorCode The error code. If this is not KErrNone then special action may be required.
+ *
+ */
+ void OnStartDocumentL( const RDocumentParameters &aDocParam, TInt aErrorCode );
+
+ /**
+ * This method is a callback to indicate the end of the document
+ * @param aErrorCode The error code. If this is not KErrNone then special action may be required.
+ */
+ void OnEndDocumentL( TInt aErrorCode );
+
+ /**
+ * This method is a callback to indicate an element has been parsed.
+ * @param aElement Is a handle to the element's details.
+ * @param aAttributes Contains the attributes for the element
+ * @param aErrorCode The error code. If this is not KErrNone then special action may be required
+ */
+ void OnStartElementL( const RTagInfo &aElement, const RAttributeArray &aAttributes, TInt aErrorCode );
+
+ /**
+ * This method is a callback to indicate the end of the element has been reached.
+ * @param aElement Is a handle to the element's details.
+ * @param aErrorCode The error code. If this is not KErrNone then special action may be required
+ */
+
+ void OnEndElementL( const RTagInfo &aElement, TInt aErrorCode );
+
+ /**
+ * This method is a callback that sends the content of the element
+ * @param aBytes the raw content data for the element
+ * @param aErrorCode The error code. If this is not KErrNone then special action may be required
+ */
+ void OnContentL( const TDesC8 &aBytes, TInt aErrorCode );
+
+ /**
+ * This method is a notification of the beginning of the scope of a prefix-URI Namespace mapping
+ * @param aPrefix the Namespace prefix being declared
+ * @param aUri the Namespace URI the prefix is mapped to
+ * @param aErrorCode The error code. If this is not KErrNone then special action may be required
+ */
+ void OnStartPrefixMappingL( const RString &aPrefix, const RString &aUri, TInt aErrorCode );
+
+ /**
+ * This method is a notification of the end of the scope of a prefix-URI mapping
+ * @param aPrefix the Namespace prefix being declared
+ * @param aErrorCode The error code. If this is not KErrNone then special action may be required
+ */
+ void OnEndPrefixMappingL( const RString &aPrefix, TInt aErrorCode );
+
+ /**
+ * This method is a notification of ignorable whitespace in element content
+ * @param aBytes the ignored bytes from the document being parsed
+ * @param aErrorCode The error code. If this is not KErrNone then special action may be required
+ */
+ void OnIgnorableWhiteSpaceL( const TDesC8 &aBytes, TInt aErrorCode );
+
+ /**
+ * This method is a notification of a skipped entity
+ * @param aName the name of the skipped entity.
+ * @param aErrorCode The error code. If this is not KErrNone then special action may be required
+ */
+ void OnSkippedEntityL( const RString &aName, TInt aErrorCode );
+
+ /**
+ * This method is a receive notification of a processing instruction.
+ * @param aTarget the processing instruction target
+ * @param aData the processing instruction data
+ * @param aErrorCode The error code. If this is not KErrNone then special action may be required
+ */
+ void OnProcessingInstructionL( const TDesC8 &aTarget, const TDesC8 &aData, TInt aErrorCode);
+
+ /**
+ * This method indicates an error has occurred
+ * @param aErrorCode The error code.
+ */
+ void OnError( TInt aErrorCode );
+
+ /**
+ * This method obtains the interface matching the specified uid.
+ * @param aUid the uid identifying the required interface
+ */
+ TAny *GetExtendedInterface( const TInt32 aUid );
+
+ private: // Private data
+
+ MXmlHandlerObserver& iObserver;
+ CParser* iParser;
+ HBufC8* iBuffer;
+ CInternalAddressInfo *iAddressInfo;
+ xmlhandler::TLocationInfoType iCurrentElement;
+ TBool iThoroughfare ;
+ };
+
+#endif /* __XMLHANDLER_H__ */
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeocode/src/clientengine.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,670 @@
+/*
+* Copyright (c) 2006-2009 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: Implementation of HTTP Client Engine.
+*/
+
+//Symbian headers
+#include <http.h>
+#include <commdbconnpref.h>
+#include <connpref.h>
+#include <extendedconnpref.h>
+#include <commdb.h>
+#include <etel3rdparty.h> // voice call notification
+#include <mmtsy_names.h> // kmmtsymodulename
+#include "locationmanagerdebug.h"
+#include "clientengine.h"
+
+// Used user agent for requests
+_LIT8(KUserAgent, "SimpleClient 1.0");
+
+// This client accepts all content types.
+_LIT8(KAccept, "*/*");
+
+// ----------------------------------------------------------------------------
+// CClientEngine::NewL()
+// ----------------------------------------------------------------------------
+CClientEngine* CClientEngine::NewL( MClientObserver& aObserver)
+ {
+ LOG("CClientEngine::NewL ,begin");
+ CClientEngine* self = CClientEngine::NewLC( aObserver);
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CClientEngine::NewLC()
+// ----------------------------------------------------------------------------
+CClientEngine* CClientEngine::NewLC(MClientObserver& aObserver)
+ {
+ LOG("CClientEngine::NewLC ,begin");
+ CClientEngine* self = new ( ELeave ) CClientEngine( aObserver);
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CClientEngine::CClientEngine()
+// ----------------------------------------------------------------------------
+CClientEngine::CClientEngine( MClientObserver& aObserver):
+ CActive( CActive::EPriorityStandard ),
+ iObserver( aObserver ),
+ iConnectionSetupDone( EFalse ),
+ iPrevProfileId( -1 ),
+ iMobility(NULL),
+ iTransactionOpen( EFalse ),
+ iUri(NULL)
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CClientEngine::~CClientEngine()
+// ----------------------------------------------------------------------------
+CClientEngine::~CClientEngine()
+ {
+ LOG("CClientEngine::~CClientEngine ,begin");
+ Cancel();
+
+ if ( iTransactionOpen )
+ {
+ iTransaction.Close();
+ iTransactionOpen = EFalse;
+ }
+
+ if ( iMobility )
+ {
+ iMobility->Cancel();
+ }
+ delete iMobility;
+ if(iConnectionSetupDone)
+ {
+ iSession.Close();
+ iConnection.Close();
+ iSocketServ.Close();
+ }
+ delete iUri;
+
+ iCmManager.Close();
+
+
+ // DON'T cose RMobilePhone object
+
+ LOG("CClientEngine::~CClientEngine ,end");
+ }
+
+// ----------------------------------------------------------------------------
+// CClientEngine::ConstructL()
+// ----------------------------------------------------------------------------
+void CClientEngine::ConstructL()
+ {
+ LOG("CClientEngine::ConstructL ,begin");
+ CActiveScheduler::Add(this);
+ iCmManager.OpenL();
+ LOG("CClientEngine::ConstructL ,end");
+ }
+
+// ----------------------------------------------------------------------------
+// CClientEngine::CloseConnection()
+// ----------------------------------------------------------------------------
+void CClientEngine::CloseConnection()
+ {
+ LOG("CClientEngine::CloseConnection ,begin" );
+ if ( iTransactionOpen )
+ {
+ iTransaction.Close();
+ iTransactionOpen = EFalse;
+ }
+
+ if ( iMobility )
+ {
+ iMobility->Cancel();
+ delete iMobility;
+ iMobility = NULL;
+ }
+
+ if(iConnectionSetupDone)
+ {
+ iSession.Close();
+ iConnection.Close();
+ iSocketServ.Close();
+
+ iConnectionSetupDone = EFalse;
+ }
+ LOG("CClientEngine::CloseConnection ,end");
+ }
+
+
+// ----------------------------------------------------------------------------
+// CClientEngine::IsVisitorNetwork()
+// ----------------------------------------------------------------------------
+TBool CClientEngine::IsVisitorNetwork(const TMobileRoamingStatus& aRegNetworkStatus) const
+ {
+ LOG1("CClientEngine::IsVisitorNetwork. reg network status - %d",
+ (TInt) aRegNetworkStatus);
+
+ return (aRegNetworkStatus == EMobileNationalRoaming ||
+ aRegNetworkStatus== EMobileInternationalRoaming);
+
+ }
+
+// ----------------------------------------------------------------------------
+// CClientEngine::IsWlanOnly()
+// ----------------------------------------------------------------------------
+TBool CClientEngine::IsWlanOnly(const TMobileRoamingStatus& aRoamingStatus,
+ const TCmGenConnSettings& aGenConnSettings) const
+ {
+ LOG1("CClientEngine::IsVisitorNetwork. reg network status - %d",(TInt) aRoamingStatus);
+ TBool wlanOnlyFlag = EFalse;
+ switch(aRoamingStatus)
+ {
+ case EMobileRegHomeNetwork:
+ LOG("Home network");
+ wlanOnlyFlag = (aGenConnSettings.iCellularDataUsageHome == ECmCellularDataUsageDisabled);
+ break;
+ case EMobileNationalRoaming:
+ case EMobileInternationalRoaming:
+ LOG("Visitor network");
+ wlanOnlyFlag = (aGenConnSettings.iCellularDataUsageVisitor == ECmCellularDataUsageDisabled);
+ break;
+ default:
+ break;
+ } // end of switch
+ LOG1("Wlan only flag - %d", wlanOnlyFlag ? 1 : 0);
+ return wlanOnlyFlag;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CClientEngine::UeRegNetworkStatus()
+// ----------------------------------------------------------------------------
+TMobileRoamingStatus CClientEngine::UeRegNetworkStatus()
+ {
+ LOG("CClientEngine::UeRegNetworkStatus() ,begin");
+ TMobileRoamingStatus roamingStatus = EMobileNotRegistered;
+ if(iObserver.IsRegisteredAtHomeNetwork())
+ {
+ // home network.
+ roamingStatus = EMobileRegHomeNetwork;
+ LOG("UE registered in home network");
+ }
+ else
+ {
+ // roaming network
+ TBool homeNwInfoAvailableFlag = EFalse;
+ const RMobilePhone::TMobilePhoneNetworkInfoV1& homeNwInfo =
+ iObserver.GetHomeNetworkInfo(homeNwInfoAvailableFlag);
+ if(homeNwInfoAvailableFlag)
+ {
+ RMobilePhone::TMobilePhoneNetworkCountryCode countryCode =
+ iObserver.GetCurrentRegisterNw().iCountryCode;
+ if(countryCode.Compare(homeNwInfo.iCountryCode) == 0)
+ {
+ // national roaming..
+ LOG("UE is in nation roaming");
+ roamingStatus = EMobileNationalRoaming;
+ }
+ else
+ {
+ // international roaming.
+ LOG("UE is in international roaming");
+ roamingStatus = EMobileInternationalRoaming;
+ }
+ }
+ }
+ if(roamingStatus == EMobileNotRegistered)
+ {
+ LOG("UE is not registered with the network. Offline mode.");
+ }
+ LOG("CClientEngine::UeRegNetworkStatus ,end");
+ return roamingStatus;
+ }
+
+// ----------------------------------------------------------------------------
+// CClientEngine::IsDataConnectionAskAlwaysL()
+// ----------------------------------------------------------------------------
+TBool CClientEngine::IsDataConnectionAskAlwaysL()
+ {
+ LOG("CClientEngine::IsDataConnectionAskAlwaysL ,begin");
+ TMobileRoamingStatus roamingStatus = UeRegNetworkStatus();
+
+ TCmGenConnSettings genConnSettings;
+ TBool retVal = EFalse;
+ iCmManager.ReadGenConnSettingsL(genConnSettings);
+
+ LOG1("wlan usage - %d", genConnSettings.iUsageOfWlan);
+ LOG1("Home usage - %d", genConnSettings.iCellularDataUsageHome);
+ LOG1("Visitor usage - %d", genConnSettings.iCellularDataUsageVisitor);
+
+ if((IsWlanOnly(roamingStatus, genConnSettings) && genConnSettings.iUsageOfWlan == ECmUsageOfWlanManual) // wlan
+ || (roamingStatus == EMobileRegHomeNetwork && // home
+ genConnSettings.iCellularDataUsageHome == ECmCellularDataUsageConfirm)
+ || (IsVisitorNetwork(roamingStatus) && // roaming
+ genConnSettings.iCellularDataUsageVisitor == ECmCellularDataUsageConfirm)
+ )
+ {
+ retVal = ETrue;
+ }
+ LOG("CClientEngine::IsDataConnectionAskAlwaysL ,end");
+ return retVal;
+ }
+
+// ----------------------------------------------------------------------------
+// CClientEngine::SetupConnectionL()
+// ----------------------------------------------------------------------------
+void CClientEngine::SetupConnectionL( const TConnectionOption aOption )
+ {
+ LOG("CClientEngine::SetupConnectionL ,begin");
+ if ( aOption == ESilent && IsDataConnectionAskAlwaysL())
+ {
+ LOG("Silent mode. connection setup is asked always.");
+ if ( iConnectionSetupDone )
+ {
+ LOG("Already connected. Close the connection\n");
+ CloseConnection();
+ }
+ User::Leave(KErrNotSupported);
+ }
+ if ( iConnectionSetupDone )
+ {
+ // Connection setup is done
+ LOG("Already connected.\n");
+ User::Leave(KErrAlreadyExists);
+ }
+
+
+ LOG1("SetupConnectionL: connection option: %d\n", aOption );
+
+ // Open HTTP Session
+ iSession.OpenL();
+ User::LeaveIfError(iSocketServ.Connect());
+ User::LeaveIfError(iConnection.Open(iSocketServ));
+
+ if ( aOption == ESilent )
+ {
+ // Create overrides
+ TConnPrefList prefList;
+ TExtendedConnPref prefs;
+ prefs.SetSnapPurpose( CMManager::ESnapPurposeInternet );
+ prefs.SetNoteBehaviour( TExtendedConnPref::ENoteBehaviourConnSilent );
+ prefList.AppendL( &prefs );
+
+ iConnection.Start(prefList, iStatus);
+ }
+ else
+ {
+ iConnection.Start( iStatus );
+ }
+
+
+ SetActive();
+ LOG("CClientEngine::SetupConnectionL ,end");
+ }
+
+// ----------------------------------------------------------------------------
+// CClientEngine::SetHeaderL()
+// ----------------------------------------------------------------------------
+void CClientEngine::SetHeaderL( RHTTPHeaders aHeaders, TInt aHdrField, const TDesC8& aHdrValue )
+ {
+ LOG("CClientEngine::SetHeaderL ,begin");
+ RStringF valStr = iSession.StringPool().OpenFStringL( aHdrValue );
+ CleanupClosePushL( valStr );
+ THTTPHdrVal val(valStr);
+ aHeaders.SetFieldL( iSession.StringPool().StringF( aHdrField, RHTTPSession::GetTable()), val);
+ CleanupStack::PopAndDestroy(); // valStr
+ LOG("CClientEngine::SetHeaderL ,end");
+ }
+
+// ----------------------------------------------------------------------------
+// CClientEngine::IssueHTTPGetL()
+// ----------------------------------------------------------------------------
+void CClientEngine::IssueHTTPGetL( const TDesC8& aUri, const TConnectionOption aOption )
+ {
+ LOG("CClientEngine::IssueHTTPGetL ,begin");
+ if ( IsActive() )
+ {
+ // If there is some request in pending state
+ // return with out further processing
+ // Should we leave here !?
+ LOG("Client engine is already active");
+ return;
+ }
+
+ delete iUri;
+ iUri = NULL;
+
+ iUri = aUri.AllocL();
+
+ // Create HTTP connection
+ TRAPD( err, SetupConnectionL( aOption ) );
+ //If the Err is KErrNone, It will lead to RunL and
+ //hence jump to the DoHTTPGetL() from there.
+
+ if( err == KErrAlreadyExists )
+ {
+ DoHTTPGetL();
+ }
+ else if( err != KErrNone )
+ {
+ LOG("Connection failure. Leaving.");
+ iObserver.ClientEvent( EHttpConnectionFailure );
+ User::Leave(err);
+ }
+ iEngineState = EGet;
+ LOG("CClientEngine::IssueHTTPGetL ,end");
+ }
+
+// ----------------------------------------------------------------------------
+// CClientEngine::DoHTTPGetL()
+// ----------------------------------------------------------------------------
+void CClientEngine::DoHTTPGetL()
+ {
+ LOG("CClientEngine::DoHTTPGetL ,begin");
+ // Parse string to URI (as defined in RFC2396)
+ TUriParser8 uri;
+ uri.Parse( *iUri );
+
+ // Get request method string for HTTP GET
+ RStringF method = iSession.StringPool().StringF( HTTP::EGET,RHTTPSession::GetTable() );
+
+ // Open transaction with previous method and parsed uri. This class will
+ // receive transaction events in MHFRunL and MHFRunError.
+ iTransaction = iSession.OpenTransactionL( uri, *this, method );
+ iTransactionOpen = ETrue;
+
+ // Set headers for request; user agent and accepted content type
+ RHTTPHeaders hdr = iTransaction.Request().GetHeaderCollection();
+ SetHeaderL( hdr, HTTP::EUserAgent, KUserAgent );
+ SetHeaderL( hdr, HTTP::EAccept, KAccept );
+
+ // Submit the transaction. After this the framework will give transaction
+ // events via MHFRunL and MHFRunError.
+ iTransaction.SubmitL();
+
+ iObserver.ClientEvent( EHttpConnecting );
+ LOG("CClientEngine::DoHTTPGetL ,end");
+}
+
+// ----------------------------------------------------------------------------
+// CClientEngine::CancelTransaction()
+// ----------------------------------------------------------------------------
+void CClientEngine::CancelTransaction()
+ {
+ LOG("CClientEngine::CancelTransaction ,begin");
+ iEngineState = EIdle;
+ delete iUri;
+ iUri = NULL;
+
+ // Close() also cancels transaction (Cancel() can also be used but
+ // resources allocated by transaction must be still freed with Close())
+ if( iTransactionOpen )
+ {
+ iTransaction.Close();
+ iTransactionOpen = EFalse;
+
+ iObserver.ClientEvent( EHttpTxCancelled );
+ }
+ LOG("CClientEngine::CancelTransaction ,end");
+ }
+
+// ----------------------------------------------------------------------------
+// CClientEngine::MHFRunL()
+// ----------------------------------------------------------------------------
+void CClientEngine::MHFRunL( RHTTPTransaction aTransaction, const THTTPEvent& aEvent )
+ {
+ LOG("CClientEngine::MHFRunL ,begin");
+ switch ( aEvent.iStatus )
+ {
+ case THTTPEvent::EGotResponseHeaders:
+ {
+ // HTTP response headers have been received. Use
+ // aTransaction.Response() to get the response. However, it's not
+ // necessary to do anything with the response when this event occurs.
+ iObserver.ClientEvent( EHttpHdrReceived );
+ break;
+ }
+ case THTTPEvent::EGotResponseBodyData:
+ {
+ // Part (or all) of response's body data received. Use
+ // aTransaction.Response().Body()->GetNextDataPart() to get the actual
+ // body data.
+
+ // Get the body data supplier
+ MHTTPDataSupplier* body = aTransaction.Response().Body();
+ TPtrC8 dataChunk;
+
+ // GetNextDataPart() returns ETrue, if the received part is the last
+ // one.
+ TBool isLast = body->GetNextDataPart(dataChunk);
+ iObserver.ClientBodyReceived(dataChunk);
+
+ iObserver.ClientEvent( EHttpBytesReceieved );
+
+ // NOTE: isLast may not be ETrue even if last data part received.
+ // (e.g. multipart response without content length field)
+ // Use EResponseComplete to reliably determine when body is completely
+ // received.
+ if( isLast )
+ {
+ iObserver.ClientEvent( EHttpBodyReceieved );
+ }
+ // Always remember to release the body data.
+ body->ReleaseData();
+ break;
+ }
+ case THTTPEvent::EResponseComplete:
+ {
+ // Indicates that header & body of response is completely received.
+ // No further action here needed.
+
+ iObserver.ClientEvent( EHttpTxCompleted );
+ break;
+ }
+ case THTTPEvent::ESucceeded:
+ {
+ // Indicates that transaction succeeded.
+ iObserver.ClientEvent( EHttpTxSuccess );
+ // Transaction can be closed now. It's not needed anymore.
+ aTransaction.Close();
+ iTransactionOpen = EFalse;
+ break;
+ }
+ case THTTPEvent::EFailed:
+ {
+ // Transaction completed with failure.
+ iObserver.ClientEvent( EHttpTxFailed );
+ aTransaction.Close();
+ iTransactionOpen = EFalse;
+ break;
+ }
+ default:
+ // There are more events in THTTPEvent, but they are not usually
+ // needed. However, event status smaller than zero should be handled
+ // correctly since it's error.
+ {
+ if ( aEvent.iStatus < 0 )
+ {
+ iObserver.ClientEvent( EHttpConnectionFailure );
+ // Close the transaction on errors
+ aTransaction.Close();
+ iTransactionOpen = EFalse;
+ }
+ break;
+ }
+ }
+ LOG("CClientEngine::MHFRunL ,end");
+ }
+
+// ----------------------------------------------------------------------------
+// CClientEngine::MHFRunError()
+// ----------------------------------------------------------------------------
+TInt CClientEngine::MHFRunError( TInt /*aError*/, RHTTPTransaction /*aTransaction*/, const THTTPEvent& /*aEvent*/ )
+ {
+ LOG("CClientEngine::MHFRunError ,begin");
+ // Just notify about the error and return KErrNone.
+ CloseConnection();
+ iObserver.ClientEvent(EHttpMhfRunError);
+ return KErrNone;
+ }
+
+// ----------------------------------------------------------------------------
+// CClientEngine::PreferredCarrierAvailable()
+// ----------------------------------------------------------------------------
+void CClientEngine::PreferredCarrierAvailable( TAccessPointInfo /*aOldAPInfo*/,
+ TAccessPointInfo /*aNewAPInfo*/,
+ TBool /*aIsUpgrade*/,
+ TBool aIsSeamless )
+ {
+ LOG("CClientEngine::PreferredCarrierAvailable ,begin");
+ if( !aIsSeamless && iMobility)
+ {
+ iMobility->MigrateToPreferredCarrier();
+ }
+ LOG("CClientEngine::PreferredCarrierAvailable ,end");
+ }
+
+// ----------------------------------------------------------------------------
+// CClientEngine::NewCarrierActive()
+// ----------------------------------------------------------------------------
+void CClientEngine::NewCarrierActive( TAccessPointInfo /*aNewAPInfo*/,
+ TBool aIsSeamless )
+ {
+ LOG("CClientEngine::NewCarrierActive ,begin");
+ if( !aIsSeamless && iMobility)
+ {
+ iMobility->NewCarrierAccepted();
+ }
+ LOG("CClientEngine::NewCarrierActive ,end");
+ }
+
+// ----------------------------------------------------------------------------
+// CClientEngine::Error()
+// ----------------------------------------------------------------------------
+void CClientEngine::Error(TInt /*aError*/)
+ {
+ LOG("CClientEngine::Error");
+ }
+
+// ----------------------------------------------------------------------------
+// CClientEngine::DoCancel()
+// ----------------------------------------------------------------------------
+void CClientEngine::DoCancel()
+ {
+ LOG("CClientEngine::DoCancel");
+ iConnection.Stop();
+ }
+
+// ----------------------------------------------------------------------------
+// CClientEngine::DoCancel()
+// ----------------------------------------------------------------------------
+TInt CClientEngine::RunError(TInt /*aError*/)
+ {
+ LOG("CClientEngine::RunError");
+ // Just notify about the error and return KErrNone.
+ CloseConnection();
+ iObserver.ClientEvent( EHttpTxFailed );
+ return KErrNone;
+ }
+// ----------------------------------------------------------------------------
+// CClientEngine::RunL()
+// ----------------------------------------------------------------------------
+void CClientEngine::RunL()
+ {
+ LOG1("CClientEngine::RunL: error is: %d\n", iStatus.Int() );
+ TInt statusCode = iStatus.Int();
+ if ( statusCode == KErrNone )
+ {
+ // Connection done ok
+ iConnectionSetupDone = ETrue;
+
+ RStringPool strPool = iSession.StringPool();
+
+ // Remove first session properties just in case.
+ RHTTPConnectionInfo connInfo = iSession.ConnectionInfo();
+
+ // Clear RConnection and Socket Server instances
+ connInfo.RemoveProperty(strPool.StringF(HTTP::EHttpSocketServ,RHTTPSession::GetTable()));
+ connInfo.RemoveProperty(strPool.StringF(HTTP::EHttpSocketConnection,RHTTPSession::GetTable()));
+
+ // Clear the proxy settings
+ connInfo.RemoveProperty(strPool.StringF(HTTP::EProxyUsage,RHTTPSession::GetTable()));
+ connInfo.RemoveProperty(strPool.StringF(HTTP::EProxyAddress,RHTTPSession::GetTable()));
+
+ // RConnection and Socket Server
+ connInfo.SetPropertyL ( strPool.StringF(HTTP::EHttpSocketServ,
+ RHTTPSession::GetTable()),
+ THTTPHdrVal (iSocketServ.Handle()) );
+
+ TInt connPtr1 = REINTERPRET_CAST(TInt, &iConnection);
+ connInfo.SetPropertyL ( strPool.StringF(HTTP::EHttpSocketConnection,
+ RHTTPSession::GetTable() ), THTTPHdrVal (connPtr1) );
+
+ // Register for mobility API
+ if(iMobility)
+ {
+ delete iMobility;
+ iMobility = NULL ;
+ }
+ iMobility = CActiveCommsMobilityApiExt::NewL( iConnection, *this );
+ // Start selected HTTP action
+ switch( iEngineState )
+ {
+ case EIdle:
+ {
+ //
+ CancelTransaction();
+ break;
+ }
+ case EGet:
+ {
+ DoHTTPGetL();
+ break;
+ }
+ };
+ }
+ else
+ {
+ //handle error
+ if ( statusCode == KErrPermissionDenied )
+ {
+ iObserver.ClientEvent( EHttpAuthFailed );
+ }
+ else
+ {
+ //Throw some general Transaction falure error!
+ iObserver.ClientEvent( EHttpTxFailed );
+ }
+ CloseConnection();
+ }
+ LOG("CClientEngine::RunL ,end");
+ }
+
+// ----------------------------------------------------------------------------
+// CClientEngine::SilentConnectionAllowed()
+// ----------------------------------------------------------------------------
+TBool CClientEngine::SilentConnectionAllowed()
+ {
+ LOG("CClientEngine::SilentConnectionAllowed ,begin");
+ TBool retVal = EFalse;
+ TRAPD(err, retVal = IsDataConnectionAskAlwaysL());
+ if(err == KErrNone)
+ {
+ // data connection is always ask... Silent connection is not allowed
+ retVal = !retVal;
+ }
+ LOG1("CClientEngine::SilentConnectionAllowed ,end. Ret - %d", retVal);
+ return retVal;
+ }
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeocode/src/connectiontimerhandler.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,94 @@
+/*
+* 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 "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: Connection close timer handler
+*/
+
+#include "connectiontimerhandler.h"
+#include "locationmanagerdebug.h"
+
+
+// ----------------------------------------------------------------------------
+// CConnectionTimerHandler::CConnectionTimerHandler()
+// ----------------------------------------------------------------------------
+
+
+CConnectionTimerHandler::CConnectionTimerHandler(MConnectionTimeoutHandlerInterface& aConnectionTimeoutHandlerInterface):
+ CTimer(EPriorityStandard ),
+ iConnectionTimeoutHandlerInterface(aConnectionTimeoutHandlerInterface)
+{
+
+}
+
+// ----------------------------------------------------------------------------
+// CConnectionTimerHandler::~CConnectionTimerHandler()
+// ----------------------------------------------------------------------------
+CConnectionTimerHandler::~CConnectionTimerHandler()
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CConnectionTimerHandler::NewL()
+// ----------------------------------------------------------------------------
+CConnectionTimerHandler* CConnectionTimerHandler::NewL(MConnectionTimeoutHandlerInterface& aConnectionTimeoutHandlerInterface)
+ {
+ LOG("CConnectionTimerHandler::NewL ,begin");
+ CConnectionTimerHandler* self = new( ELeave ) CConnectionTimerHandler(aConnectionTimeoutHandlerInterface);
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CConnectionTimerHandler::ConstructL()
+// ----------------------------------------------------------------------------
+void CConnectionTimerHandler::ConstructL()
+ {
+ LOG("CConnectionTimerHandler::ConstructL ,begin");
+ CActiveScheduler::Add(this);
+ CTimer::ConstructL();
+ LOG("CConnectionTimerHandler::ConstructL ,end");
+ }
+
+// ----------------------------------------------------------------------------
+// CConnectionTimerHandler::StartTimer
+// starts a timer
+// ----------------------------------------------------------------------------
+void CConnectionTimerHandler::StartTimer(const TInt aTimeoutVal)
+ {
+ LOG("CConnectionTimerHandler::StartTimer ,begin");
+ if(!IsActive())
+ {
+ // already active.
+ LOG("Timer started");
+ After(aTimeoutVal);
+ }
+ LOG("CConnectionTimerHandler::StartTimer ,end");
+ }
+
+// ----------------------------------------------------------------------------
+// CConnectionTimerHandler::RunL
+// ----------------------------------------------------------------------------
+void CConnectionTimerHandler::RunL( )
+ {
+ LOG("CConnectionTimerHandler::RunL ,begin");
+ iConnectionTimeoutHandlerInterface.HandleTimedoutEvent(iStatus.Int());
+ LOG("CConnectionTimerHandler::RunL ,end");
+ }
+
+
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeocode/src/internaladdressinfo.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,339 @@
+/*
+* Copyright (c) 2006-2009 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: Implementation of Internal address info structure.
+*/
+
+#include "internaladdressinfo.h"
+#include "locationmanagerdebug.h"
+
+
+
+// ----------------------------------------------------------------------------
+// CInternalAddressInfo::CInternalAddressInfo()
+// Constructor
+// ----------------------------------------------------------------------------
+CInternalAddressInfo::CInternalAddressInfo(): iCountryName( NULL ),
+ iState( NULL ),
+ iCity( NULL ),
+ iDistrict( NULL ),
+ iPin( NULL ),
+ iTFName( NULL ),
+ iTFNumber( NULL )
+
+ {
+
+
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalAddressInfo::~CInternalAddressInfo()
+// Destructor
+// ----------------------------------------------------------------------------
+CInternalAddressInfo::~CInternalAddressInfo()
+ {
+ LOG("CInternalAddressInfo::~CInternalAddressInfo ,begin");
+ if (iCountryName)
+ {
+ delete iCountryName;
+ iCountryName = NULL ;
+ }
+ if (iState)
+ {
+ delete iState;
+ iState= NULL ;
+ }
+ if (iCity)
+ {
+ delete iCity;
+ iCity= NULL ;
+ }
+ if (iDistrict)
+ {
+ delete iDistrict;
+ iDistrict = NULL ;
+ }
+ if (iPin)
+ {
+ delete iPin;
+ iPin = NULL ;
+ }
+ if (iTFName)
+ {
+ delete iTFName;
+ iTFName = NULL ;
+ }
+ if (iTFNumber)
+ {
+ delete iTFNumber;
+ iTFNumber = NULL ;
+ }
+
+ LOG("CInternalAddressInfo::~CInternalAddressInfo ,end");
+ }
+
+// ----------------------------------------------------------------------------
+// CInternalAddressInfo::NewL()
+// Factory function to create the instance
+// ----------------------------------------------------------------------------
+CInternalAddressInfo* CInternalAddressInfo::NewL()
+ {
+ LOG("CInternalAddressInfo::NewL ,begin");
+ CInternalAddressInfo *self = new (ELeave) CInternalAddressInfo();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalAddressInfo::ConstructL()
+// Second phase construction.
+// ----------------------------------------------------------------------------
+void CInternalAddressInfo::ConstructL()
+ {
+ LOG("CInternalAddressInfo::ConstructL ,begin");
+ //Copy all with the empty strings;
+ ResetAddressInfoL();
+ LOG("CInternalAddressInfo::ConstructL ,end");
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalAddressInfo::GetCountryName()
+// Gets Country name
+// ----------------------------------------------------------------------------
+TDesC& CInternalAddressInfo::GetCountryName()
+ {
+ return *iCountryName;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalAddressInfo::GetState()
+// Gets State name
+// ----------------------------------------------------------------------------
+TDesC& CInternalAddressInfo::GetState()
+ {
+ return *iState;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalAddressInfo::GetCity()
+// Gets City name.
+// ----------------------------------------------------------------------------
+TDesC& CInternalAddressInfo::GetCity()
+ {
+ return *iCity;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalAddressInfo::GetDistrict()
+// Gets District name of the address.
+// ----------------------------------------------------------------------------
+TDesC& CInternalAddressInfo::GetDistrict()
+ {
+ return *iDistrict;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalAddressInfo::GetPincode()
+// Gets the postal code.
+// ----------------------------------------------------------------------------
+TDesC& CInternalAddressInfo::GetPincode()
+ {
+ return *iPin;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalAddressInfo::GetThoroughfareName()
+// Gets thoroughfare name
+// ----------------------------------------------------------------------------
+TDesC& CInternalAddressInfo::GetThoroughfareName()
+ {
+ return *iTFName;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalAddressInfo::GetThoroughfareNumber()
+// Gets thoroughfare number
+// ----------------------------------------------------------------------------
+TDesC& CInternalAddressInfo::GetThoroughfareNumber()
+ {
+ return *iTFNumber;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalAddressInfo::SetCountryName()
+// Sets the country name information
+// ----------------------------------------------------------------------------
+void CInternalAddressInfo::SetCountryName( const TDesC& aCountryName )
+ {
+ if( iCountryName )
+ {
+ delete iCountryName;
+ }
+ iCountryName = aCountryName.Alloc();
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalAddressInfo::SetState()
+// Sets the State name information
+// ----------------------------------------------------------------------------
+void CInternalAddressInfo::SetState( const TDesC& aState )
+ {
+ if( iState )
+ {
+ delete iState;
+ }
+ iState = aState.Alloc();
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalAddressInfo::SetCity()
+// Sets the City name information
+// ----------------------------------------------------------------------------
+void CInternalAddressInfo::SetCity( const TDesC& aCity )
+ {
+ if( iCity )
+ {
+ delete iCity;
+ }
+ iCity = aCity.Alloc();
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalAddressInfo::SetDistrict()
+// Sets the District name information
+// ----------------------------------------------------------------------------
+void CInternalAddressInfo::SetDistrict( const TDesC& aDisrict )
+ {
+ if( iDistrict )
+ {
+ delete iDistrict;
+ }
+ iDistrict = aDisrict.Alloc();
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalAddressInfo::SetPincode()
+// Sets the Postal code information
+// ----------------------------------------------------------------------------
+void CInternalAddressInfo::SetPincode( const TDesC& aPincode )
+ {
+ if( iPin )
+ {
+ delete iPin;
+ }
+ iPin = aPincode.Alloc();
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalAddressInfo::SetThoroughfareName()
+// Sets the thoroughfare name information
+// ----------------------------------------------------------------------------
+void CInternalAddressInfo::SetThoroughfareName( const TDesC& aTFName )
+ {
+ if( iTFName )
+ {
+ delete iTFName;
+ }
+ iTFName = aTFName.Alloc();
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalAddressInfo::SetThoroughfareNumber()
+// Sets the thoroughfare number information
+// ----------------------------------------------------------------------------
+void CInternalAddressInfo::SetThoroughfareNumber( const TDesC& aTFNumber )
+ {
+ if( iTFNumber )
+ {
+ delete iTFNumber;
+ }
+ iTFNumber = aTFNumber.Alloc();
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalAddressInfo::ResetAddressInfoL()
+// resets the address info
+// ----------------------------------------------------------------------------
+void CInternalAddressInfo::ResetAddressInfoL()
+ {
+ // Allocate empty buffer to avoid crash on get method
+
+ // Free memory
+ if(iCountryName)
+ {
+ delete iCountryName;
+ iCountryName = NULL;
+ }
+ if(iState)
+ {
+ delete iState;
+ iState = NULL;
+ }
+ if(iCity)
+ {
+ delete iCity;
+ iCity = NULL;
+ }
+ if(iDistrict)
+ {
+ delete iDistrict;
+ iDistrict = NULL;
+ }
+ if(iPin)
+ {
+ delete iPin;
+ iPin = NULL;
+ }
+ if(iTFName)
+ {
+ delete iTFName;
+ iTFName = NULL;
+ }
+ if(iTFNumber)
+ {
+ delete iTFNumber;
+ iTFNumber = NULL;
+ }
+ // Allocate empty strings,
+ iCountryName = KNullDesC().AllocL();
+ iCity = KNullDesC().AllocL();
+ iState = KNullDesC().AllocL();
+ iDistrict = KNullDesC().AllocL();
+ iPin = KNullDesC().AllocL();
+ iTFName = KNullDesC().AllocL();
+ iTFNumber = KNullDesC().AllocL();
+
+ }
+
+
+//end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeocode/src/internalreversegeocode.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,454 @@
+/*
+* Copyright (c) 2006-2009 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: Implementation of reversegeocodea achieved using HTTP get
+* request to the Maps server.
+*/
+
+#include "internalreversegeocode.h"
+#include "internaladdressinfo.h"
+#include "locationmanagerdebug.h"
+
+
+//Maximum length for the response buffer size
+const int KMaxResponseLength = 2048;
+//Authentication token for the Maps server
+//This authentication in specific to our photo-tagging feature
+_LIT8( KAuthenticationToken, "eb0ae60051e27d3cfcae94e7b47e9eff" );
+//Static RefererURL which shows that request has been made from this app
+_LIT8( KRefererURL, "s60_app_photos" );
+
+//Language option for the REST request
+_LIT8( KDefaultLanguage, "eng" );
+
+
+//Format of the HTTP request for the reverse geocode
+_LIT8( KRequestFormat, "http://loc.mobile.maps.svc.ovi.com/geocoder/rgc/1.0?token=%S&referer=%S&n=10&lat=%f&long=%f&lg=%S&output=xml" );
+
+
+// http://www.loc.gov/marc/languages/
+// These are the nokia language id converted to MARC language strings.
+ static const char Marc_Table[ 104 ][ 4 ] = {
+ " ", // dummy
+ "ENG", // 1 English
+ "FRE", // 2 French
+ "GER", // 3 German
+ "SPA", // 4 Spanish
+ "ITA", // 5 Italian
+ "SWE", // 6 Swedish
+ "DAN", // 7 Danish
+ "NOR", // 8 Norwegian
+ "FIN", // 9 Finnish
+ "010", // 10 American
+ "011", // 11 Swiss French
+ "GSW", // 12 Swiss German
+ "POR", // 13 Portuguese
+ "TUR", // 14 Turkish
+ "ICE", // 15 Icelandic
+ "RUS", // 16 Russian
+ "HUN", // 17 Hungarian
+ "DUT", // 18 Dutch
+ "019", // 19 Flemish
+ "020", // 20 Australian English
+ "021", // 21 Belgian French
+ "022", // 22 Austrian German
+ "023", // 23 New Zealand English
+ "FRE", // 24 International French
+ "CZE", // 25 Czech
+ "SLO", // 26 Slovak
+ "POL", // 27 Polish
+ "SLV", // 28 Slovenian
+ "029", // 29 TaiwanChinese
+ "CHT", // 30 HongKongChinese
+ "CHI", // 31 PeoplesRepublicOfChina Chinese
+ "JPN", // 32 Japanese
+ "THA", // 33 Thai
+ "AFR", // 34 Afrikaans
+ "ALB", // 35 Albanian
+ "AMH", // 36 Amharic
+ "ARA", // 37 Arabic
+ "ARM", // 38 Armenian
+ "TGL", // 39 Tagalog
+ "BEL", // 40 Belarusian
+ "BEN", // 41 Bengali
+ "BUL", // 42 Bulgarian
+ "BUR", // 43 Burmese
+ "CAT", // 44 Catalan
+ "SCR", // 45 Croatian
+ "046", // 46 Canadian English
+ "ENG", // 47 International English
+ "048", // 48 SouthAfrican English
+ "EST", // 49 Estonian
+ "PER", // 50 Persian (Farsi)
+ "051", // 51 Canadian French
+ "GAE", // 52 Scots Gaelic
+ "GEO", // 53 Georgian
+ "GRE", // 54 Greek
+ "055", // 55 Cyprus Greek
+ "GUJ", // 56 Gujarati
+ "HEB", // 57 Hebrew
+ "HIN", // 58 Hindi
+ "IND", // 59 Bahasa indonesia
+ "GLE", // 60 Irish
+ "061", // 61 Swiss Italian
+ "KAN", // 62 Kannada
+ "KAZ", // 63 Kazakh
+ "KHM", // 64 Khmer
+ "KOR", // 65 Korean
+ "LAO", // 66 Lao
+ "LAV", // 67 Latvian
+ "LIT", // 68 Lithuanian
+ "MAC", // 69 Macedonian
+ "070", // 70 Bahasa Malaysia
+ "MAL", // 71 Malayalam
+ "MAR", // 72 Marathi
+ "MOL", // 73 Moldavian
+ "MON", // 74 Mongolian
+ "NNO", // 75 Norwegian Nynorsk
+ "076", // 76 Brazilian Portuguese
+ "PAN", // 77 Punjabi
+ "RUM", // 78 Romanian
+ "SCC", // 79 Serbian
+ "SNH", // 80 Sinhalese
+ "SOM", // 81 Somali
+ "082", // 82 International Spanish
+ "083", // 83 LatinAmerican Spanish
+ "SWA", // 84 Swahili
+ "085", // 85 Finland Swedish
+ "TAJ", // 86 Tajik
+ "TAM", // 87 Tamil
+ "TEL", // 88 Telugu
+ "TIB", // 89 Tibetan
+ "TIR", // 90 Tigrinya
+ "091", // 91 Cyprus Turkish
+ "TUK", // 92 Turkmen
+ "UKR", // 93 Ukrainian
+ "URD", // 94 Urdu
+ "UZB", // 95 Uzbek
+ "VIE", // 96 Vietnamese
+ "WEL", // 97 Welsh
+ "ZUL", // 98 Zulu
+ "UND", // 99 Other
+ "UND", // 100 Undef
+ "UND", // 101 Undef
+ "BAQ", // 102 Basque
+ "103", // 103 Galician
+ };
+
+ // Timer interval
+ const TInt KInterval = 15000000; // 15 seconds
+
+
+// ----------------------------------------------------------------------------
+// CInternalReverseGeocode::NewL()
+// Factory function to create the instance
+// ----------------------------------------------------------------------------
+CInternalReverseGeocode* CInternalReverseGeocode::NewL( MReverseGeocodeObserver& aObserver )
+ {
+ LOG( "CInternalReverseGeocode::NewL,begin" );
+ CInternalReverseGeocode *self = new (ELeave) CInternalReverseGeocode( aObserver );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalReverseGeocode::CInternalReverseGeocode()
+// Constructor
+// ----------------------------------------------------------------------------
+CInternalReverseGeocode::CInternalReverseGeocode( MReverseGeocodeObserver& aObserver ):
+ iXmlHandler ( NULL ),
+ iClientEngine ( NULL ),
+ iXMLBuf ( NULL ),
+ iObserver( aObserver ),
+ iTimer( NULL ),
+ iStartTimerFlag(EFalse)
+ {
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalReverseGeocode::~CInternalReverseGeocode()
+// Destructor
+// ----------------------------------------------------------------------------
+CInternalReverseGeocode::~CInternalReverseGeocode()
+ {
+ LOG( "CInternalReverseGeocode::~CInternalReverseGeocode,begin" );
+ if ( iTimer)
+ {
+ iTimer->Cancel();
+ delete iTimer;
+ iTimer = NULL;
+ }
+ delete iXMLBuf;
+ delete iXmlHandler;
+ delete iClientEngine;
+ delete iAddressInfo;
+ LOG( "CInternalReverseGeocode::~CInternalReverseGeocode,end" );
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalReverseGeocode::GetAddressByCoordinateL()
+// Gets the address for the given geo-coordinaates.
+// ----------------------------------------------------------------------------
+void CInternalReverseGeocode::GetAddressByCoordinateL( TLocality aLocality,
+ const TConnectionOption aOption )
+ {
+ LOG("CInternalReverseGeocode::GetAddressByCoordinateL ,begin");
+ TReal64 latitude = aLocality.Latitude();
+ TReal64 longitude = aLocality.Longitude();
+
+ iAuthCode.Copy( KAuthenticationToken );
+ iRefURL.Copy( KRefererURL );
+
+
+ GetLanguageForTheRequest( iLang );
+
+ //Form the request URI
+ iQueryString.Format( KRequestFormat, &iAuthCode, &iRefURL, latitude, longitude, &iLang );
+ TInt err = KErrNone;
+ TRAP(err, iClientEngine->IssueHTTPGetL( iQueryString, aOption ));
+
+ if ( iTimer && iTimer->IsActive() )
+ {
+ iTimer->Cancel();
+ }
+ if(err == KErrNone || err == KErrNotSupported)
+ {
+ // connection is closed because of data usage is set to manual
+ iStartTimerFlag = EFalse;
+ }
+ LOG("CInternalReverseGeocode::GetAddressByCoordinateL ,end");
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalReverseGeocode::ConstructL()
+// second phase construction.
+// ----------------------------------------------------------------------------
+void CInternalReverseGeocode::ConstructL()
+ {
+ LOG( "CInternalReverseGeocode::ConstructL,begin" );
+ iXMLBuf = HBufC8::NewL( KMaxResponseLength );
+
+ //Address Info
+ iAddressInfo = CInternalAddressInfo::NewL();
+
+ iXmlHandler = CXmlHandler::NewL( *this, iAddressInfo );
+
+ iClientEngine = CClientEngine::NewL( *this );
+
+ iTimer = CConnectionTimerHandler::NewL(*this);
+
+ LOG( "CInternalReverseGeocode::ConstructL,end" );
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalReverseGeocode::OnParseCompletedL()
+// callback which notifys the completion of parsing.
+// ----------------------------------------------------------------------------
+void CInternalReverseGeocode::OnParseCompletedL( TInt aError, MAddressInfo& aLocationInfo )
+ {
+ LOG( "CInternalReverseGeocode::OnParseCompletedL,begin" );
+ ARG_USED(aLocationInfo);
+ iStartTimerFlag = ETrue;
+ iObserver.ReverseGeocodeComplete( aError, *iAddressInfo );
+ if(iStartTimerFlag)
+ {
+ StartTimer();
+ }
+ LOG( "CInternalReverseGeocode::OnParseCompletedL,end" );
+ }
+
+// ----------------------------------------------------------------------------
+// CInternalReverseGeocode::ClientEvent()
+// callback which notifys progess of HTTP request
+// ----------------------------------------------------------------------------
+void CInternalReverseGeocode::ClientEvent( const THttpStatus& aEvent )
+ {
+ LOG( "CInternalReverseGeocode::ClientEvent,begin" );
+ TInt err;
+ //Have a Switch here
+ switch( aEvent )
+ {
+ case EHttpTxCompleted:
+ //Reading is done
+ //Parse the String and get the restults
+ if( iXmlHandler )
+ {
+ TRAP_IGNORE( iXmlHandler->StartParsingL( iXMLBuf ) );
+ }
+ break;
+ //All these cases will in turn lead to
+ //generic failure due to connection/Tx related problems
+ case EHttpConnectionFailure:
+ // May happen if Socket connection fails
+ err = KErrCouldNotConnect;
+ iObserver.ReverseGeocodeComplete( err , *iAddressInfo );
+ break;
+ case EHttpTxFailed:
+ case EHttpMhfRunError:
+ // May happen if Socket connection fails
+ // Complete the RGC with generic error.
+ err = KErrGeneral;
+ iObserver.ReverseGeocodeComplete( err , *iAddressInfo );
+ break;
+ case EHttpTxCancelled:
+ //On Cancellation of request.
+ err = KErrCancel;
+ iObserver.ReverseGeocodeComplete( err , *iAddressInfo );
+ break;
+ case EHttpAuthFailed:
+ //On Cancellation of request.
+ err = KErrPermissionDenied;
+ iObserver.ReverseGeocodeComplete( err , *iAddressInfo );
+ break;
+ }
+ LOG( "CInternalReverseGeocode::ClientEvent,end" );
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalReverseGeocode::ClientBodyReceived()
+// callback through which the HTTP body data is recieved.
+// ----------------------------------------------------------------------------
+void CInternalReverseGeocode::ClientBodyReceived( const TDesC8& aBodyData )
+ {
+ LOG( "CInternalReverseGeocode::ClientBodyReceived" );
+ //Dump the contents here
+ TPtr8 ptr = iXMLBuf->Des();
+ ptr.Zero();
+ ptr.Append( aBodyData );
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalReverseGeocode::GetLanguageForTheRequest()
+// Gets the appropriate language based on the Phone language setting
+// ----------------------------------------------------------------------------
+void CInternalReverseGeocode::GetLanguageForTheRequest( TDes8& aLanguage )
+ {
+ LOG( "CInternalReverseGeocode::GetLanguageForTheRequest,begin" );
+ //get the current phone langauge
+ TInt phoneLangIndex = User::Language();
+
+ // Get the converted language
+ if ( phoneLangIndex < sizeof( Marc_Table ) / sizeof( Marc_Table[ 0 ] ) )
+ {
+ aLanguage = (const TUint8*) Marc_Table[ phoneLangIndex ];
+ }
+ else
+ {
+ //By default language will be Eng
+ aLanguage.Copy( KDefaultLanguage );
+ }
+ LOG( "CInternalReverseGeocode::GetLanguageForTheRequest,begin" );
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalReverseGeocode::CloseConnection()
+// Closes the http connection and notifies the observer
+// ----------------------------------------------------------------------------
+void CInternalReverseGeocode::CloseConnection()
+ {
+ LOG( "CInternalReverseGeocode::CloseConnection ,begin" );
+ if(iClientEngine)
+ {
+ iClientEngine->CloseConnection();
+ LOG( "Connection closed\n" );
+ TInt err = KErrCouldNotConnect;
+ iObserver.ReverseGeocodeComplete( err , *iAddressInfo );
+ }
+ LOG( "CInternalReverseGeocode::CloseConnection,end" );
+ }
+
+// ----------------------------------------------------------------------------
+// CInternalReverseGeocode::StartTimer()
+// starts the timer
+// ----------------------------------------------------------------------------
+void CInternalReverseGeocode::StartTimer()
+ {
+ LOG( "CInternalReverseGeocode::StartTimer ,begin" );
+ if(iTimer)
+ {
+ iTimer->StartTimer( KInterval);
+ LOG( "Timer started" );
+ }
+ LOG( "CInternalReverseGeocode::StartTimer,end" );
+ }
+
+// ----------------------------------------------------------------------------
+// CInternalReverseGeocode::HandleTimedoutEvent()
+// Closes the connection once it times out
+// ----------------------------------------------------------------------------
+void CInternalReverseGeocode::HandleTimedoutEvent(TInt aErrorCode)
+ {
+ LOG( "CInternalReverseGeocode::HandleTimedoutEvent" );
+ ARG_USED(aErrorCode);
+ CloseConnection();
+ }
+
+// ----------------------------------------------------------------------------
+// CInternalReverseGeocode::SilentConnectionAllowed()
+// Checks if a silent connection is allowed
+// ----------------------------------------------------------------------------
+TBool CInternalReverseGeocode::SilentConnectionAllowed()
+ {
+ LOG( "CInternalReverseGeocode::SilentConnectionAllowed ,begin" );
+ TBool retVal = EFalse;
+ if(iClientEngine)
+ {
+ retVal = iClientEngine->SilentConnectionAllowed();
+ }
+ LOG1("Silent connection allowed ,end- %d", (TInt)retVal);
+ return retVal;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CInternalReverseGeocode::GetCurrentRegisterNw()
+// ----------------------------------------------------------------------------
+RMobilePhone::TMobilePhoneNetworkInfoV2& CInternalReverseGeocode::GetCurrentRegisterNw()
+ {
+ LOG( "CInternalReverseGeocode::GetCurrentRegisterNw ,begin" );
+ return iObserver.GetCurrentRegisterNw();
+ }
+
+// ----------------------------------------------------------------------------
+// CInternalReverseGeocode::IsRegisteredAtHomeNetwork()
+// ----------------------------------------------------------------------------
+TBool CInternalReverseGeocode::IsRegisteredAtHomeNetwork()
+ {
+ LOG( "CInternalReverseGeocode::IsRegisteredAtHomeNetwork" );
+ return iObserver.IsRegisteredAtHomeNetwork();
+ }
+
+// ----------------------------------------------------------------------------
+// CInternalReverseGeocode::GetHomeNetworkInfo()
+// ----------------------------------------------------------------------------
+const RMobilePhone::TMobilePhoneNetworkInfoV1&
+ CInternalReverseGeocode::GetHomeNetworkInfo(TBool& aHomeNwInfoAvailableFlag)
+ {
+ LOG( "CInternalReverseGeocode::GetHomeNetworkInfo" );
+ return iObserver.GetHomeNetworkInfo(aHomeNwInfoAvailableFlag);
+ }
+
+
+//end of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeocode/src/reversegeocode.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2006-2009 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: Implementation of exported interface class of reverse geo-code
+*/
+
+#include "reversegeocode.h"
+#include "internalreversegeocode.h"
+#include "locationmanagerdebug.h"
+
+// --------------------------------------------------------------------------
+// CReverseGeocode::NewL()
+// factory class to create the instance
+// --------------------------------------------------------------------------
+
+EXPORT_C CReverseGeocode* CReverseGeocode::NewL( MReverseGeocodeObserver& aObserver )
+ {
+ LOG("CReverseGeocode::NewL ,begin");
+ CInternalReverseGeocode *self = CInternalReverseGeocode::NewL( aObserver );
+
+ return self;
+ }
+
+//End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/ReverseGeocode/src/xmlhandler.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,389 @@
+/*
+* Copyright (c) 2006-2009 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: Implementation of the Parser
+*/
+
+
+
+
+#include <utf.h>
+#include "internaladdressinfo.h"
+#include "xmlhandler.h"
+#include "locationmanagerdebug.h"
+
+using namespace xmlhandler;
+
+// CONSTANTS
+_LIT8( KXmlMimeType, "text/xml" );
+_LIT8( KCountry, "country" );
+_LIT8( KState, "state" );
+_LIT8( KDistrict, "district" );
+_LIT8( KCity, "city" );
+_LIT8( KPostalCode, "postCode" );
+_LIT8( KThoroughfare, "thoroughfare" );
+_LIT8( KNameTag, "name" );
+_LIT8( KNumberTag, "number" );
+
+// METHODS DEFINITION
+
+// --------------------------------------------------------------------------
+// CXmlHandler::NewL
+// --------------------------------------------------------------------------
+CXmlHandler* CXmlHandler::NewL( MXmlHandlerObserver& aObserver, CInternalAddressInfo *aAddressInfo )
+ {
+ LOG("CXmlHandler::NewL ,begin");
+ CXmlHandler* self = CXmlHandler::NewLC( aObserver, aAddressInfo );
+ CleanupStack::Pop();
+ return self;
+ }
+
+// --------------------------------------------------------------------------
+// CXmlHandler::NewLC
+// --------------------------------------------------------------------------
+
+CXmlHandler* CXmlHandler::NewLC( MXmlHandlerObserver& aObserver, CInternalAddressInfo *aAddressInfo )
+ {
+ LOG("CXmlHandler::NewLC ,begin");
+ CXmlHandler* self = new ( ELeave ) CXmlHandler( aObserver, aAddressInfo );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// --------------------------------------------------------------------------
+// CXmlHandler::~CXmlHandler
+// --------------------------------------------------------------------------
+CXmlHandler::~CXmlHandler()
+ {
+ LOG("CXmlHandler::~CXmlHandler");
+ delete iParser;
+ delete iBuffer;
+ }
+
+// --------------------------------------------------------------------------
+// CXmlHandler::CXmlHandler
+// --------------------------------------------------------------------------
+CXmlHandler::CXmlHandler( MXmlHandlerObserver& aObserver, CInternalAddressInfo *aAddressInfo ):
+ iObserver( aObserver ),
+ iParser( NULL ),
+ iBuffer( NULL ),
+ iAddressInfo( aAddressInfo ),
+ iThoroughfare( EFalse )
+ {
+ }
+
+// --------------------------------------------------------------------------
+// CXmlHandler::ConstructL
+// --------------------------------------------------------------------------
+void CXmlHandler::ConstructL()
+ {
+ LOG("CXmlHandler::ConstructL ,begin");
+ iParser = CParser::NewL( KXmlMimeType, *this );
+
+ }
+
+// --------------------------------------------------------------------------
+// CXmlHandler::StartParsingL()
+// --------------------------------------------------------------------------
+void CXmlHandler::StartParsingL( HBufC8 *aBuf )
+ {
+ LOG("CXmlHandler::StartParsingL ,begin");
+ //Reset the address values before starting new content parsing
+ iAddressInfo->ResetAddressInfoL();
+
+ if( iBuffer )
+ {
+ delete iBuffer;
+ iBuffer = NULL;
+ }
+
+ iBuffer = HBufC8::NewL( aBuf->Size() );
+ TPtr8 ptr = iBuffer->Des();
+ ptr.Copy( aBuf->Ptr() , aBuf->Size() );
+
+ // Now, we have the whole file content in iBuffer.
+ // We are ready to parse the XML content.
+ iParser->ParseBeginL();
+ iParser->ParseL( *iBuffer );
+
+ // Since we read the whole file contents within one-shot,
+ // we can call ParseEndL() right after calling ParseL().
+ iParser->ParseEndL();
+ LOG("CXmlHandler::StartParsingL ,end");
+ }
+
+// --------------------------------------------------------------------------
+// CXmlHandler::OnStartDocumentL()
+// --------------------------------------------------------------------------
+void CXmlHandler::OnStartDocumentL( const RDocumentParameters& /*aDocParam*/,
+ TInt aErrorCode )
+ {
+ LOG1("CXmlHandler::OnStartDocumentL ,Error code - %d", aErrorCode);
+ if( KErrNone != aErrorCode )
+ {
+ iObserver.OnParseCompletedL( aErrorCode, *iAddressInfo );
+ }
+ else
+ {
+ // Do nothing
+ }
+ LOG("CXmlHandler::OnStartDocumentL ,end");
+ }
+
+// --------------------------------------------------------------------------
+// CXmlHandler::OnEndDocumentL()
+// --------------------------------------------------------------------------
+void CXmlHandler::OnEndDocumentL( TInt aErrorCode )
+ {
+ LOG1("CXmlHandler::OnEndDocumentL ,Errcode - %d", aErrorCode);
+ iObserver.OnParseCompletedL( aErrorCode, *iAddressInfo );
+ }
+
+// --------------------------------------------------------------------------
+// CXmlHandler::OnStartElementL()
+// --------------------------------------------------------------------------
+void CXmlHandler::OnStartElementL( const RTagInfo& aElement,
+ const RAttributeArray& /*aAttributes*/, TInt aErrorCode )
+ {
+ LOG1("CXmlHandler::OnStartElementL , Errorcode - %d", aErrorCode);
+ if ( KErrNone == aErrorCode )
+ {
+ // If we find the start of an element, we write to the screen,
+ // for example: "<tag>"
+
+ if( !aElement.LocalName().DesC().Compare( KCountry ) )
+ {
+ iCurrentElement = ECountryName;
+ }
+ else if( !aElement.LocalName().DesC().Compare( KState ) )
+ {
+ iCurrentElement = EState;
+ }
+ else if( !aElement.LocalName().DesC().Compare( KCity ) )
+ {
+ iCurrentElement = ECity;
+ }
+ else if( !aElement.LocalName().DesC().Compare( KDistrict ) )
+ {
+ iCurrentElement = EDistrict;
+ }
+ else if( !aElement.LocalName().DesC().Compare( KPostalCode ) )
+ {
+ iCurrentElement = EPostalCode;
+ }
+ else if( !aElement.LocalName().DesC().Compare( KThoroughfare ) )
+ {
+ iThoroughfare = ETrue;
+ }
+ else if( !aElement.LocalName().DesC().Compare( KNameTag ) && iThoroughfare )
+ {
+ iCurrentElement = EThoroughfareName;
+ }
+ else if( !aElement.LocalName().DesC().Compare( KNumberTag ) && iThoroughfare )
+ {
+ iCurrentElement = EThoroughfareNumber;
+ }
+ else
+ {
+ ///Do something
+ }
+ }
+ else
+ {
+ iObserver.OnParseCompletedL( aErrorCode, *iAddressInfo );
+ }
+ LOG("CXmlHandler::OnStartElementL ,end");
+ }
+
+// --------------------------------------------------------------------------
+// CXmlHandler::OnEndElementL()
+// --------------------------------------------------------------------------
+void CXmlHandler::OnEndElementL( const RTagInfo& /*aElement*/, TInt aErrorCode )
+ {
+ LOG1("CXmlHandler::OnEndElementL ,Error code - %d", aErrorCode);
+ if( KErrNone == aErrorCode )
+ {
+ // at the end of the tag </tag>
+ //Set it to ENone
+ iCurrentElement = ENone;
+ iThoroughfare = EFalse;
+ }
+ else
+ {
+ iObserver.OnParseCompletedL( aErrorCode, *iAddressInfo );
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CXmlHandler::OnContentL()
+// --------------------------------------------------------------------------
+void CXmlHandler::OnContentL( const TDesC8 &aBytes, TInt aErrorCode )
+ {
+ LOG1("CXmlHandler::OnContentL ,Errorcode - %d", aErrorCode);
+ if( KErrNone == aErrorCode )
+ {
+
+ if( iCurrentElement == ENone )
+ {
+ //ignore if the current element is not there
+ return;
+ }
+
+ // convert the content to UCS-2
+ // from UTF-8
+ RBuf buffer;
+ buffer.CreateL( aBytes.Length() );
+ CleanupClosePushL(buffer);
+ CnvUtfConverter::ConvertToUnicodeFromUtf8( buffer , aBytes );
+
+ if( iCurrentElement == ECountryName )
+ {
+ iAddressInfo->SetCountryName( buffer );
+ }
+ else if( iCurrentElement == EState )
+ {
+ iAddressInfo->SetState( buffer );
+ }
+ else if( iCurrentElement == EDistrict )
+ {
+ iAddressInfo->SetDistrict( buffer );
+ }
+ else if( iCurrentElement == ECity )
+ {
+ iAddressInfo->SetCity( buffer );
+ }
+ else if( iCurrentElement == EPostalCode )
+ {
+ iAddressInfo->SetPincode( buffer );
+ }
+ else if( iCurrentElement == EThoroughfareName )
+ {
+ iAddressInfo->SetThoroughfareName( buffer );
+ }
+ else if( iCurrentElement == EThoroughfareNumber )
+ {
+ iAddressInfo->SetThoroughfareNumber( buffer );
+ }
+ else
+ {
+ ///Do something
+ }
+ CleanupStack::PopAndDestroy(); // buffer
+ }
+ else
+ {
+ iObserver.OnParseCompletedL( aErrorCode, *iAddressInfo );
+ }
+ LOG("CXmlHandler::OnContentL ,end");
+ }
+
+// --------------------------------------------------------------------------
+// CXmlHandler::OnStartPrefixMappingL()
+// --------------------------------------------------------------------------
+void CXmlHandler::OnStartPrefixMappingL( const RString& /*aPrefix*/,
+ const RString& /*aUri*/, TInt aErrorCode )
+ {
+ LOG1("CXmlHandler::OnStartPrefixMappingL ,Error code - %d", aErrorCode);
+ if( KErrNone != aErrorCode )
+ {
+ iObserver.OnParseCompletedL( aErrorCode, *iAddressInfo );
+ }
+ else
+ {
+ // Do nothing
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CXmlHandler::OnEndPrefixMappingL()
+// --------------------------------------------------------------------------
+void CXmlHandler::OnEndPrefixMappingL( const RString& /*aPrefix*/, TInt aErrorCode )
+ {
+ LOG1("CXmlHandler::OnEndPrefixMappingL ,Error code - %d", aErrorCode);
+ if( KErrNone != aErrorCode )
+ {
+ iObserver.OnParseCompletedL( aErrorCode, *iAddressInfo );
+ }
+ else
+ {
+ // Do nothing
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CXmlHandler::OnIgnorableWhiteSpaceL()
+// --------------------------------------------------------------------------
+void CXmlHandler::OnIgnorableWhiteSpaceL( const TDesC8& /*aBytes*/,TInt aErrorCode )
+ {
+ LOG1("CXmlHandler::OnIgnorableWhiteSpaceL ,Error code - %d", aErrorCode);
+ if( KErrNone != aErrorCode )
+ {
+ iObserver.OnParseCompletedL( aErrorCode, *iAddressInfo );
+ }
+ else
+ {
+ // Do nothing
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CXmlHandler::OnSkippedEntityL()
+// --------------------------------------------------------------------------
+void CXmlHandler::OnSkippedEntityL( const RString& /*aName*/, TInt aErrorCode )
+ {
+ LOG1("CXmlHandler::OnSkippedEntityL ,Error code - %d", aErrorCode);
+ if( KErrNone != aErrorCode )
+ {
+ iObserver.OnParseCompletedL( aErrorCode, *iAddressInfo );
+ }
+ else
+ {
+ // Do nothing
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CXmlHandler::OnProcessingInstructionL()
+// --------------------------------------------------------------------------
+void CXmlHandler::OnProcessingInstructionL( const TDesC8& /*aTarget*/, const TDesC8& /*aData*/, TInt aErrorCode )
+ {
+ LOG1("CXmlHandler::OnProcessingInstructionL ,Error code - %d", aErrorCode);
+ if( KErrNone != aErrorCode )
+ {
+ iObserver.OnParseCompletedL( aErrorCode, *iAddressInfo );
+ }
+ else
+ {
+ // Do nothing
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CXmlHandler::OnError()
+// --------------------------------------------------------------------------
+void CXmlHandler::OnError( TInt aErrorCode )
+ {
+ LOG1("CXmlHandler::OnError ,Error code - %d", aErrorCode);
+ TRAP_IGNORE( iObserver.OnParseCompletedL( aErrorCode, *iAddressInfo ) );
+ }
+
+// --------------------------------------------------------------------------
+// CXmlHandler::GetExtendedInterface()
+// --------------------------------------------------------------------------
+TAny* CXmlHandler::GetExtendedInterface( const TInt32 /*aUid*/ )
+ {
+ return 0;
+ }
+
+// End of File
--- a/locationmanager/client/bwincw/locationmanagerclientwinscw.def Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/client/bwincw/locationmanagerclientwinscw.def Tue Jul 06 14:44:37 2010 +0300
@@ -29,4 +29,10 @@
?StopTrackLog@RTrackLog@@QAEXXZ @ 28 NONAME ; void RTrackLog::StopTrackLog(void)
?TrackLogName@RTrackLog@@QAEHAAVTDes16@@@Z @ 29 NONAME ; int RTrackLog::TrackLogName(class TDes16 &)
?LocationSnapshot@RLocationObjectManipulator@@QAEHK@Z @ 30 NONAME ; int RLocationObjectManipulator::LocationSnapshot(unsigned long)
+ ?GeoTagStaus@RLocationGeoTagger@@QAEXAAVTRequestStatus@@AAW4TGeoTaggingSatus@@@Z @ 31 NONAME ; void RLocationGeoTagger::GeoTagStaus(class TRequestStatus &, enum TGeoTaggingSatus &)
+ ?CancelGeoTaggingRequest@RLocationGeoTagger@@QAEXXZ @ 32 NONAME ; void RLocationGeoTagger::CancelGeoTaggingRequest(void)
+ ?StartGeoTagging@RLocationGeoTagger@@QAEXAAVTRequestStatus@@W4TConnectionOption@@@Z @ 33 NONAME ; void RLocationGeoTagger::StartGeoTagging(class TRequestStatus &, enum TConnectionOption)
+ ??1RLocationGeoTagger@@QAE@XZ @ 34 NONAME ; RLocationGeoTagger::~RLocationGeoTagger(void)
+ ??0RLocationGeoTagger@@QAE@XZ @ 35 NONAME ; RLocationGeoTagger::RLocationGeoTagger(void)
+ ?CancelTagPendingRequest@RLocationGeoTagger@@QAEXXZ @ 36 NONAME ; void RLocationGeoTagger::CancelTagPendingRequest(void)
--- a/locationmanager/client/eabi/locationmanagerclientarm.def Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/client/eabi/locationmanagerclientarm.def Tue Jul 06 14:44:37 2010 +0300
@@ -35,4 +35,12 @@
_ZTI19CTrackLogObserverAO @ 34 NONAME ABSENT; #<TI>#
_ZTV19CTrackLogObserverAO @ 35 NONAME ABSENT; #<VT>#
_ZN26RLocationObjectManipulator16LocationSnapshotEm @ 36 NONAME
+ _ZN18RLocationGeoTagger11GeoTagStausER14TRequestStatusR16TGeoTaggingSatus @ 37 NONAME
+ _ZN18RLocationGeoTagger15StartGeoTaggingER14TRequestStatus17TConnectionOption @ 38 NONAME
+ _ZN18RLocationGeoTagger23CancelGeoTaggingRequestEv @ 39 NONAME
+ _ZN18RLocationGeoTagger23CancelTagPendingRequestEv @ 40 NONAME
+ _ZN18RLocationGeoTaggerC1Ev @ 41 NONAME
+ _ZN18RLocationGeoTaggerC2Ev @ 42 NONAME
+ _ZN18RLocationGeoTaggerD1Ev @ 43 NONAME
+ _ZN18RLocationGeoTaggerD2Ev @ 44 NONAME
--- a/locationmanager/client/group/locationmanagerclient.mmp Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/client/group/locationmanagerclient.mmp Tue Jul 06 14:44:37 2010 +0300
@@ -40,9 +40,10 @@
SOURCEPATH ../src
SOURCE rlocationmanager.cpp
SOURCE rlocationtrail.cpp
-SOURCE rlocationobjectmanipulator.cpp
-SOURCE CTrackLogObserverAO.cpp
-SOURCE rtracklog.cpp
+SOURCE rlocationobjectmanipulator.cpp
+SOURCE CTrackLogObserverAO.cpp
+SOURCE rtracklog.cpp
+SOURCE rlocationgeotagger.cpp
MW_LAYER_SYSTEMINCLUDE
@@ -51,7 +52,10 @@
LIBRARY lbs.lib
LIBRARY mdccommon.lib
+DEBUGLIBRARY flogger.lib
PAGED
BYTEPAIRCOMPRESSTARGET
OPTION ARMCC -O3 -OTime
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/client/src/rlocationgeotagger.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,114 @@
+/*
+* 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 "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:An interface to Location Manager geo tagger
+*
+*/
+
+#include <f32file.h>
+#include <s32mem.h>
+#include <data_caging_path_literals.hrh>
+
+#include <locationeventdef.h>
+#include "rlocationgeotagger.h"
+#include "locationmanagerdefs.h"
+#include "locationmanagerdebug.h"
+
+EXPORT_C RLocationGeoTagger::RLocationGeoTagger()
+ : iTagPendingData (NULL)
+ {
+ }
+
+EXPORT_C RLocationGeoTagger::~RLocationGeoTagger()
+ {
+ delete iTagPendingData;
+ }
+
+// --------------------------------------------------------------------------
+// RLocationGeoTagger::IsTagPending
+// --------------------------------------------------------------------------
+//
+EXPORT_C void RLocationGeoTagger::GeoTagStaus( TRequestStatus& aStatus,
+ TGeoTaggingSatus& aTagPendingFlag )
+ {
+ LOG( "RLocationGeoTagger::IsTagPending(), begin" );
+
+ delete iTagPendingData;
+ iTagPendingData = new TPckg<TGeoTaggingSatus>( aTagPendingFlag);
+
+ if ( iHandle && iTagPendingData )
+ {
+ SendReceive( ELocManTagPending, TIpcArgs( iTagPendingData ), aStatus );
+ }
+ else
+ {
+ if ( !iTagPendingData )
+ {
+ CompleteRequest(aStatus, KErrNoMemory);
+ }
+ else
+ {
+ CompleteRequest(aStatus, KErrDisconnected);
+ }
+ }
+ LOG( "RLocationGeoTagger::IsTagPending(), end" );
+ }
+
+// --------------------------------------------------------------------------
+// RLocationGeoTagger::StartGeoTagging
+// --------------------------------------------------------------------------
+//
+EXPORT_C void RLocationGeoTagger::StartGeoTagging
+ (TRequestStatus& aStatus, const TConnectionOption aConnectionOption )
+ {
+ LOG( "RLocationGeoTagger::StartGeoTaggingL(), begin" );
+
+ if ( iHandle )
+ {
+ SendReceive( ELocManStartGeoTaging, TIpcArgs( aConnectionOption ), aStatus);
+ }
+ LOG( "RLocationGeoTagger::StartGeoTaggingL(), end" );
+ }
+
+// --------------------------------------------------------------------------
+// RLocationGeoTagger::CancelTagPendingRequest
+// --------------------------------------------------------------------------
+//
+EXPORT_C void RLocationGeoTagger::CancelTagPendingRequest()
+ {
+ LOG( "RLocationGeoTagger::CancelTagPendingRequest(), begin" );
+
+ if ( iHandle )
+ {
+ SendReceive( ELocManCancelTagPendingReq);
+ }
+ LOG( "RLocationGeoTagger::CancelTagPendingRequest(), end" );
+ }
+
+
+// --------------------------------------------------------------------------
+// RLocationGeoTagger::CancelTagPendingRequest
+// --------------------------------------------------------------------------
+//
+EXPORT_C void RLocationGeoTagger::CancelGeoTaggingRequest()
+ {
+ LOG( "RLocationGeoTagger::CancelGeoTaggingRequest(), begin" );
+ if ( iHandle )
+ {
+ SendReceive( ELocManCancelGeoTaggingReq);
+ }
+ LOG( "RLocationGeoTagger::CancelGeoTaggingRequest(), end" );
+ }
+
+
+//End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/geoconverter/bwincw/geoconverterwinscw.def Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,5 @@
+EXPORTS
+ ?ConvertL@CGeoConverter@@QAEXABVTNetworkInfoV1@CTelephony@@@Z @ 1 NONAME ; void CGeoConverter::ConvertL(class CTelephony::TNetworkInfoV1 const &)
+ ??1CGeoConverter@@UAE@XZ @ 2 NONAME ; CGeoConverter::~CGeoConverter(void)
+ ?NewL@CGeoConverter@@SAPAV1@AAVMGeoConverterObserver@@@Z @ 3 NONAME ; class CGeoConverter * CGeoConverter::NewL(class MGeoConverterObserver &)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/geoconverter/eabi/geoconverterarm.def Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,9 @@
+EXPORTS
+ _ZN13CGeoConverter4NewLER21MGeoConverterObserver @ 1 NONAME
+ _ZN13CGeoConverter8ConvertLERKN10CTelephony14TNetworkInfoV1E @ 2 NONAME
+ _ZN13CGeoConverterD0Ev @ 3 NONAME
+ _ZN13CGeoConverterD1Ev @ 4 NONAME
+ _ZN13CGeoConverterD2Ev @ 5 NONAME
+ _ZTI13CGeoConverter @ 6 NONAME
+ _ZTV13CGeoConverter @ 7 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/geoconverter/group/bld.inf Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,28 @@
+/*
+* Copyright (c) 2005-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 "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Build information file
+*
+*/
+
+PRJ_PLATFORMS
+ DEFAULT
+
+
+PRJ_MMPFILES
+geoconverter.mmp
+
+PRJ_TESTMMPFILES
+
+PRJ_TESTEXPORTS
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/geoconverter/group/geoconverter.mmp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2005-2009 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: Project definition file
+*
+*/
+
+
+#include <platform_paths.hrh>
+#include <data_caging_paths.hrh>
+
+VERSION 10.0
+TARGET geoconverter.dll
+TARGETTYPE DLL
+UID 0x1000008d 0x2002E6A1
+
+VENDORID VID_DEFAULT
+CAPABILITY CAP_GENERAL_DLL
+
+
+#if defined(WINSCW)
+deffile ../bwincw/geoconverterwinscw.def
+#elif defined(ARMCC)
+deffile ../eabi/geoconverterarm.def
+#endif
+nostrictdef
+
+
+USERINCLUDE ../inc
+USERINCLUDE ../../inc
+USERINCLUDE ../../../inc
+
+SYSTEMINCLUDE /epoc32/include/stdapis
+SYSTEMINCLUDE /epoc32/include/platform/lbs
+MW_LAYER_SYSTEMINCLUDE
+
+SOURCEPATH ../src
+SOURCE cgeoconverter.cpp
+
+
+LIBRARY euser.lib
+LIBRARY etel3rdparty.lib
+
+#include "../../inc/locplatsupport.mmh"
+#ifdef _LOC_GEOTAGGING_CELLID
+MACRO LOC_GEOTAGGING_CELLID
+LIBRARY lbslocationinfoconverter.lib
+LIBRARY lbslocationinfodatatypes.lib
+#endif
+LIBRARY lbs.lib
+DEBUGLIBRARY flogger.lib
+LIBRARY libc.lib
+
+PAGED
+BYTEPAIRCOMPRESSTARGET
+OPTION ARMCC -O3 -OTime
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/geoconverter/inc/cgeoconverter.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,93 @@
+/*
+* 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 "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: A class for converting CGI Info to lat, long.
+*
+*/
+
+#ifndef C_GEOCONVERTER_H
+#define C_GEOCONVERTER_H
+
+/**
+ *
+ * @since S60 9.2
+ */
+#ifdef LOC_GEOTAGGING_CELLID
+#include <lbslocationinfoconverter.h>
+#include <lbslocationinfo.h>
+#endif
+#include <lbsposition.h>
+#include <etel3rdparty.h>
+
+class MGeoConverterObserver
+ {
+public:
+ /**
+ * This method is used for notifying completion of geotagging
+ * @param aError error code
+ * @param aPosition position (lat/lon) for the correcponding n/w info
+ */
+ virtual void ConversionCompletedL( const TInt aError, TLocality& aPosition ) = 0;
+
+ /**
+ * This method is used to handle any error during conversion
+ * @param aError the error code
+ */
+ virtual void HandleConversionError(TInt aError) = 0;
+ };
+
+// Class to handle conversion operations
+class CGeoConverter : public CBase
+#ifdef LOC_GEOTAGGING_CELLID
+ , public MLbsLocationInfoConverterObserver
+#endif
+ {
+public:
+ /**
+ * 2-phased constructor.
+ */
+ IMPORT_C static CGeoConverter* NewL( MGeoConverterObserver& aObserver );
+ /**
+ * C++ destructor.
+ */
+ IMPORT_C virtual ~CGeoConverter();
+
+ IMPORT_C void ConvertL( const CTelephony::TNetworkInfoV1& aNetworkInfo );
+
+protected:
+ // From MLbsLocationInfoConverterObserver
+ void OnConversionComplete( TInt aStatusCode );
+
+private:
+ /**
+ * C++ constructor.
+ */
+ CGeoConverter( MGeoConverterObserver& aObserver );
+ /**
+ * 2nd phase constructor.
+ */
+ void ConstructL();
+
+private:
+ MGeoConverterObserver& iObserver;
+#ifdef LOC_GEOTAGGING_CELLID
+ CLbsLocationInfoConverter* iLocConverter;
+ CLbsLocationInfo* iLocInfo;
+ CLbsGsmCellInfo* iGsmCellInfo;
+ CLbsWcdmaCellInfo* iWcdmaCellInfo;
+#endif
+ };
+
+#endif // C_GEOCONVERTER_H
+
+// End of file.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/geoconverter/src/cgeoconverter.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,205 @@
+/*
+* 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 "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: A class for creating country and city tags for media files
+*
+*/
+
+//#include "locationmanagerdebug.h"
+#include "cgeoconverter.h"
+#include "locationmanagerdebug.h"
+
+
+
+// --------------------------------------------------------------------------
+// CGeoConverter::NewL
+// --------------------------------------------------------------------------
+//
+EXPORT_C CGeoConverter* CGeoConverter::NewL( MGeoConverterObserver& aObserver )
+ {
+ LOG("CGeoConverter::NewL");
+ CGeoConverter* self = new( ELeave ) CGeoConverter( aObserver );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+// --------------------------------------------------------------------------
+// CGeoConverter::CGeoConverter()
+// --------------------------------------------------------------------------
+//
+CGeoConverter::CGeoConverter( MGeoConverterObserver& aObserver )
+ :iObserver( aObserver )
+#ifdef LOC_GEOTAGGING_CELLID
+ ,iLocConverter(NULL),
+ iLocInfo(NULL),
+ iGsmCellInfo(NULL),
+ iWcdmaCellInfo(NULL)
+#endif
+ {
+ }
+
+// --------------------------------------------------------------------------
+// CGeoConverter::~CGeoConverter
+// --------------------------------------------------------------------------
+//
+EXPORT_C CGeoConverter::~CGeoConverter()
+ {
+ LOG("CGeoConverter::~CGeoConverter, begin");
+#ifdef LOC_GEOTAGGING_CELLID
+ delete iGsmCellInfo;
+ delete iWcdmaCellInfo;
+ delete iLocInfo;
+ delete iLocConverter;
+#endif
+ LOG("CGeoConverter::~CGeoConverter, end");
+ }
+
+// --------------------------------------------------------------------------
+// CGeoConverter::OnConversionComplete()
+// --------------------------------------------------------------------------
+//
+void CGeoConverter::OnConversionComplete( TInt aStatusCode )
+ {
+ LOG("CGeoConverter::OnConversionComplete, begin");
+#ifdef LOC_GEOTAGGING_CELLID
+ //16. Retrieve position estimate that is updated by Location Monitor server
+ //after a conversion operation is completed successfully.
+ RLbsAreaInfoBaseArray posInfoList;
+ TLocality position;
+
+
+ LOG1("Status Code - %d",aStatusCode);
+
+ if( KErrNone == aStatusCode )
+ {
+ TRAP_IGNORE(iLocInfo->GetAreaInfoL( posInfoList, CLbsLocationInfo::ELbsPosInfo );)
+
+ //Get geo-coordinates.
+
+ LOG1("PposInfoList Count - %d",posInfoList.Count());
+ if ( posInfoList.Count() )
+ {
+ static_cast<CLbsPositionInfo*>(posInfoList[0])->GetLocality(position);
+ }
+ else
+ {
+ aStatusCode = KErrNotFound;
+ }
+ }
+ TRAPD(err,iObserver.ConversionCompletedL( aStatusCode, position);)
+ if(err != KErrNone)
+ {
+ iObserver.HandleConversionError(err);
+ }
+ posInfoList.Close();
+#endif
+ LOG("CGeoConverter::OnConversionComplete, end");
+ }
+
+// --------------------------------------------------------------------------
+// CGeoConverter::ConstructL()
+// --------------------------------------------------------------------------
+//
+void CGeoConverter::ConstructL()
+ {
+ LOG("CGeoConverter::ConstructL, begin");
+#ifdef LOC_GEOTAGGING_CELLID
+ iLocInfo = CLbsLocationInfo::NewL();
+ TUid pluginUid = TUid::Uid( 0x20027011 );
+ LOG("CGeoConverter::ConstructL");
+ iLocConverter = CLbsLocationInfoConverter::NewL( *this, pluginUid );
+#endif
+ LOG("CGeoConverter::ConstructL, end");
+ }
+
+// --------------------------------------------------------------------------
+// CGeoConverter::ConvertL()
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CGeoConverter::ConvertL( const CTelephony::TNetworkInfoV1& aNetworkInfo )
+ {
+ LOG("CGeoConverter::ConvertL, begin");
+#ifdef LOC_GEOTAGGING_CELLID
+
+ //Set mobile country code
+ TLex lexer( aNetworkInfo.iCountryCode );
+ TUint countryCode;
+
+ User::LeaveIfError( lexer.Val( countryCode, EDecimal) );
+ //Set mobile network code
+ lexer = aNetworkInfo.iNetworkId;
+ TUint networkCode;
+ User::LeaveIfError( lexer.Val( networkCode, EDecimal) );
+ LOG1("Network mode - %d", aNetworkInfo.iMode);
+ CLbsAreaInfoBase* areaInfoBase = NULL;
+ switch(aNetworkInfo.iAccess)
+ {
+ case CTelephony::ENetworkAccessGsm:
+ case CTelephony::ENetworkAccessGsmCompact:
+ {
+ LOG("2G network.");
+ if(iGsmCellInfo == NULL)
+ {
+ iGsmCellInfo = CLbsGsmCellInfo::NewL();
+ }
+ iGsmCellInfo->SetMobileCountryCode( countryCode );
+
+ iGsmCellInfo->SetMobileNetworkCode( networkCode );
+ //Set cell id
+ iGsmCellInfo->SetCellId( aNetworkInfo.iCellId );
+
+ if(aNetworkInfo.iAreaKnown)
+ {
+ //Set location area code
+ iGsmCellInfo->SetLocationAreaCode( aNetworkInfo.iLocationAreaCode );
+ }
+
+ areaInfoBase = iGsmCellInfo;
+ }
+ break;
+ case CTelephony::ENetworkAccessUtran:
+ {
+ LOG("3G network.");
+ if(iWcdmaCellInfo == NULL)
+ {
+ iWcdmaCellInfo = CLbsWcdmaCellInfo::NewL();
+ }
+ iWcdmaCellInfo->SetMobileCountryCode(countryCode);
+ iWcdmaCellInfo->SetMobileNetworkCode(networkCode);
+ iWcdmaCellInfo->SetUniqueCellId(aNetworkInfo.iCellId);
+ areaInfoBase = iWcdmaCellInfo;
+ }
+ break;
+ default:
+ LOG("Unknown network mode");
+ User::Leave(KErrNotSupported);
+ break;
+ }
+ //Add the cell information to the location info class. This class
+ //would be sent to the Location Monitor server that would perform the
+ //requested conversion and update the position estimate
+ if(areaInfoBase != NULL) // self check
+ {
+ iLocInfo->AddAreaInfoL( areaInfoBase );
+ //Request conversion of GSM cell information to corresponding coordinate information
+ iLocConverter->ConvertLocationInfoL( *iLocInfo, ELbsConversionSilent,
+ ELbsConversionOutputPosition );
+ }
+#endif
+ LOG("CGeoConverter::ConvertL, end");
+ }
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/geotagger/bwins/geotagger.def Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,5 @@
+EXPORTS
+ ?NewL@CInternalGeoTagger@@SAPAV1@PAVCMdESession@@PAVMGeoTaggerObserver@@@Z @ 1 NONAME ; class CInternalGeoTagger * CInternalGeoTagger::NewL(class CMdESession *, class MGeoTaggerObserver *)
+ ?NewL@CGeoTagger@@SAPAV1@PAVMGeoTaggerObserver@@PAVCMdESession@@@Z @ 2 NONAME ; class CGeoTagger * CGeoTagger::NewL(class MGeoTaggerObserver *, class CMdESession *)
+ ??1CInternalGeoTagger@@UAE@XZ @ 3 NONAME ; CInternalGeoTagger::~CInternalGeoTagger(void)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/geotagger/eabi/geotaggerarm.def Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,6 @@
+EXPORTS
+ _ZN10CGeoTagger4NewLEP18MGeoTaggerObserverP11CMdESession @ 1 NONAME
+ _ZN18CInternalGeoTagger4NewLEP11CMdESessionP18MGeoTaggerObserver @ 2 NONAME
+ _ZTI18CInternalGeoTagger @ 3 NONAME
+ _ZTV18CInternalGeoTagger @ 4 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/geotagger/group/bld.inf Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2005-2009 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: Build information file
+*
+*/
+
+PRJ_PLATFORMS
+ DEFAULT
+
+PRJ_EXPORTS
+
+PRJ_MMPFILES
+geotagger.mmp
+
+PRJ_TESTMMPFILES
+
+PRJ_TESTEXPORTS
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/geotagger/group/geotagger.mmp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,87 @@
+/*
+* Copyright (c) 2005-2009 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: Project definition file
+*
+*/
+
+#include <platform_paths.hrh>
+#include <data_caging_paths.hrh>
+#include "../../inc/locplatsupport.mmh"
+
+VERSION 10.0
+TARGET geotagger.dll
+TARGETTYPE DLL
+UID 0x1000008d 0x2002700E
+
+VENDORID VID_DEFAULT
+CAPABILITY CAP_GENERAL_DLL
+
+#if defined(WINSCW)
+#elif defined(ARMCC)
+deffile ../eabi/geotaggerarm.def
+#endif
+nostrictdef
+
+USERINCLUDE ../inc
+USERINCLUDE ../../inc
+USERINCLUDE ../../../inc
+
+
+USERINCLUDE ../../tagcreator/inc
+
+#ifdef _LOC_GEOTAGGING_CELLID
+MACRO LOC_GEOTAGGING_CELLID
+USERINCLUDE ../../geoconverter/inc
+#endif
+
+USERINCLUDE ../../reversegeocode/inc
+USERINCLUDE ../../reversegeocoderplugin/inc
+
+
+SOURCEPATH ../src
+SOURCE cgeotagger.cpp
+SOURCE cinternalgeotagger.cpp
+
+MW_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE /epoc32/include/ecom
+SYSTEMINCLUDE /epoc32/include/platform/lbs
+SYSTEMINCLUDE /epoc32/include/stdapis
+
+LIBRARY euser.lib
+LIBRARY efsrv.lib
+LIBRARY lbs.lib
+LIBRARY mdeclient.lib
+LIBRARY etel3rdparty.lib
+LIBRARY estor.lib
+LIBRARY platformenv.lib
+
+DEBUGLIBRARY flogger.lib
+LIBRARY tagcreator.lib
+LIBRARY ecom.lib
+LIBRARY libc.lib
+
+LIBRARY reversegeocode.lib
+
+
+#ifdef _LOC_GEOTAGGING_CELLID
+LIBRARY geoconverter.lib
+#endif
+
+
+PAGED
+BYTEPAIRCOMPRESSTARGET
+OPTION ARMCC -O3 -OTime
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/geotagger/inc/cinternalgeotagger.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,290 @@
+/*
+* 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 "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: A class responsible for geotagging of media files in background.
+*
+*/
+
+#ifndef C_CINTERNALGEOTAGGER_H
+#define C_CINTERNALGEOTAGGER_H
+
+#include <e32base.h>
+#include <e32property.h>
+#include <lbs.h>
+#include <locationdatatype.h>
+#include <geotagger.h>
+
+#include "reversegeocode.h"
+#include "mdccommon.h"
+#include "mdesession.h"
+#include "mdenamespacedef.h"
+#include "mdeobjectdef.h"
+#include "mdepropertydef.h"
+#include "mderelation.h"
+#include "mdequery.h"
+#include "ctagcreator.h"
+
+#ifdef LOC_GEOTAGGING_CELLID
+#include "cgeoconverter.h"
+#endif
+
+class CReverseGeoCoderPlugin;
+
+/**
+ * GeoTagger converts a given cell ID(CGI Info) to geo-coordinates.
+ * Does reverse geocoding to get country and city name.
+ * Creates country and city tag for image/video files.
+ * @since S60 9.2
+ */
+
+class CInternalGeoTagger : public CGeoTagger,
+ public MMdESessionObserver,
+ public MMdEQueryObserver,
+ public MReverseGeocodeObserver
+#ifdef LOC_GEOTAGGING_CELLID
+ ,public MGeoConverterObserver
+#endif
+ {
+public:
+
+ /**
+ * 2-phased constructor.
+ * @param aMdeSession An instance of the CMdESession
+ * @param aObserver The observer that is to be notified when geotagging is over
+ */
+ IMPORT_C static CInternalGeoTagger* NewL( CMdESession* aMdeSession,
+ MGeoTaggerObserver* aObserver );
+
+ /**
+ * C++ destructor.
+ */
+ IMPORT_C virtual ~CInternalGeoTagger();
+
+
+public: //exported API
+ // CGeoTagger
+ /**
+ * Harvests location tags.
+ * @param aObserver, observer for geotagging.
+ * @return None.
+ */
+ virtual void CreateGeoTagsL( const TConnectionOption = EInteractive );
+
+ /**
+ * Checks if there is any untagged photos with location info and tags them.
+ * @param aTagInProgress, boolean value to indicate if geotagging is in progress.
+ * @return None.
+ */
+ virtual void PendingGeoTagsL( TBool aTagInProgress );
+
+public: //observer methods
+
+ // From MMdEQueryObserver
+
+ /**
+ * @param aQuery the query type
+ * @param aFirstNewItemIndex The new item index
+ * @param aNewItemCount The new item count
+ */
+ void HandleQueryNewResults(CMdEQuery& aQuery, TInt aFirstNewItemIndex,
+ TInt aNewItemCount);
+
+ /**
+ * This method is called on completion of a query
+ * @param aQuery the query type
+ * @param aError Error if any
+ */
+ void HandleQueryCompleted(CMdEQuery& aQuery, TInt aError);
+
+ //MReverseGeocodeObserver
+
+ /**
+ * This method is called when reverse geocoding is completed
+ *@param aErrorcode Error if any
+ *@param aAddressInfo the reverse geocoded address
+ */
+ void ReverseGeocodeComplete( TInt& aErrorcode, MAddressInfo& aAddressInfo );
+
+ /*
+ * Get registrer network country code
+ *
+ * @return current register n/w info
+ */
+ RMobilePhone::TMobilePhoneNetworkInfoV2& GetCurrentRegisterNw();
+
+ /*
+ * UE is registered to home network?
+ *
+ * @return ETrue if UE is registered at home network else EFalse
+ */
+ TBool IsRegisteredAtHomeNetwork();
+
+
+ /*
+ * Get home network country code
+ * @param aHomeNwInfoAvailableFlag ETrue if home n/w info available else EFalse
+ * @return user home n/w info
+ */
+ const RMobilePhone::TMobilePhoneNetworkInfoV1&
+ GetHomeNetworkInfo(TBool& aHomeNwInfoAvailableFlag);
+
+
+ // From MMdESessionObserver
+
+ /**
+ * Handles session opening
+ *@param aSession A reference of the CMdESession
+ *@param aError error if any
+ */
+ void HandleSessionOpened(CMdESession& aSession, TInt aError);
+
+ /**
+ * Handles any error in session opening
+ *@param aSession A reference of the CMdESession
+ *@param aError error if any
+ */
+ void HandleSessionError(CMdESession& aSession, TInt aError);
+
+#ifdef LOC_GEOTAGGING_CELLID
+public: // MGeoConverterObserver
+ /**
+ * This method is used for notifying completion of geotagging
+ * @param aError error code
+ * @param aPosition position (lat/lon) for the correcponding n/w info
+ */
+ void ConversionCompletedL( const TInt aError, TLocality& aPosition );
+
+
+ /**
+ * This method is used to handle the conversion error
+ * @param aError the error code
+ */
+ void HandleConversionError(TInt aError);
+
+#endif
+private:
+
+ /**
+ * C++ constructor.
+ * @param aMdeSession An instance of the CMdESession
+ * @param aObserver The observer that is to be notified when geotagging is over
+ */
+ CInternalGeoTagger( CMdESession* aMdeSession, MGeoTaggerObserver* aObserver );
+
+ /**
+ * 2nd phase constructor.
+ */
+ void ConstructL();
+
+ /**
+ * Get all relation objects associated with this location
+ * @param aLocID The locationId whose relation is to be fetched
+ */
+ void GetRelationObjectsL(TItemId aLocID);
+
+ /**
+ * get tags for this image
+ * @param aImageID The imageIs whose tag is to be fetched
+ */
+ void GetTagsL( TItemId aImageID );
+
+ /**
+ * Get location objects, where lat, long not populated.
+ */
+ void GetAllLocationsL( );
+
+ /**
+ * Get location objects, where lat, long not populated.
+ * @param aCountryTagId The country tagId
+ * @param aCityTagId The city tagId
+ */
+ void AddressInfoL( const TItemId aCountryTagId, const TItemId aCityTagId );
+
+ /**
+ * checks if the session is ready
+ * @return ETrue If the session is ready
+ */
+ TBool IsSessionReady();
+
+ /**
+ * Fetches the location information
+ */
+ void GetLocationInfoL();
+
+ /**
+ * starts geotagging of objects
+ */
+ void StartGeoTaggingL();
+
+ /**
+ * Checks if Location atg exists for an object
+ * @return ETrue if location tag is found
+ */
+ TBool LocationTagExists();
+
+ /**
+ * Moves to the next location for reverse geocoding
+ */
+ void IterateNextLocation();
+
+ /**
+ * @return ETrue if item had valid lat/lon else EFalse
+ */
+ TBool GPSInfoExists();
+private:
+ /**
+ * A session to Metadata Engine for creating and manipulating location objects.
+ */
+ CMdESession* iMdeSession;
+
+ /**
+ * This query object is used to find existing locations
+ */
+ CMdEObjectQuery* iLocationQuery;
+ /** @var iRelationQuery. */
+ CMdERelationQuery* iRelationQuery;
+ CMdERelationQuery* iTagQuery;
+
+ TInt iIndex;
+
+ TBool iSessionReady;
+
+ MGeoTaggerObserver* iObserver;
+
+ TLocationData iLocationData;
+
+ TItemId iLocationId;
+
+ TConnectionOption iConnectionOption;
+
+ CTagCreator* iTagCreator;
+
+ /**
+ * An active scheduler wait loop for waiting a session to MdE to open.
+ */
+ CActiveSchedulerWait* iASW;
+ TBool iMdeSessionOwnFlag;
+ TBool iTagPendingHandlerFlag;
+ CReverseGeoCoderPlugin* iRevGeocoderPlugin;
+ TUid iDtorKey;
+#ifdef LOC_GEOTAGGING_CELLID
+ /*
+ * Geo converter
+ */
+ CGeoConverter* iGeoConverter;
+#endif
+ };
+
+#endif // C_CGEOTAGGER_H
+
+// End of file.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/geotagger/src/cgeotagger.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,38 @@
+/*
+* 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 "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: A class responsible for geotagging of media files in background.
+*
+*/
+
+#include <geotagger.h>
+#include "cinternalgeotagger.h"
+#include "locationmanagerdebug.h"
+
+
+// --------------------------------------------------------------------------
+// CGeoTagger::NewL
+// --------------------------------------------------------------------------
+//
+EXPORT_C CGeoTagger* CGeoTagger::NewL( MGeoTaggerObserver* aObserver,
+ CMdESession* aMdeSession)
+ {
+ LOG("CGeoTagger::NewL, begin");
+ CInternalGeoTagger* self = CInternalGeoTagger::NewL( aMdeSession, aObserver );
+
+ return self;
+ }
+
+
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/geotagger/src/cinternalgeotagger.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,813 @@
+/*
+* 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 "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: A class responsible for geotagging of media files in background.
+*
+*/
+
+#include <e32cmn.h>
+#include <lbserrors.h>
+#include <lbssatellite.h>
+#include <ecom.h>
+
+#include "locationmanagerdebug.h"
+#include "mdeconstants.h"
+#include "mdesession.h"
+#include "cinternalgeotagger.h"
+#include "reversegeocoderplugin.h"
+
+using namespace MdeConstants;
+
+_LIT ( KCountry, "country:"); // country:india
+const TUid KReverseGeoCodeUid = {0x2002DD12};
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::NewL
+// --------------------------------------------------------------------------
+//
+EXPORT_C CInternalGeoTagger* CInternalGeoTagger::NewL( CMdESession* aMdeSession,
+ MGeoTaggerObserver* aObserver )
+ {
+ CInternalGeoTagger* self =
+ new (ELeave) CInternalGeoTagger( aMdeSession, aObserver );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::CInternalGeoTagger
+// --------------------------------------------------------------------------
+//
+CInternalGeoTagger::CInternalGeoTagger( CMdESession* aMdeSession,
+ MGeoTaggerObserver* aObserver )
+ : iMdeSession(aMdeSession),
+ iLocationQuery(NULL),
+ iRelationQuery(NULL),
+ iTagQuery(NULL),
+ iIndex(0),
+ iSessionReady( EFalse ),
+ iObserver( aObserver ),
+ iTagCreator(NULL),
+ iASW(NULL),
+ iTagPendingHandlerFlag(EFalse),
+ iRevGeocoderPlugin(NULL)
+#ifdef LOC_GEOTAGGING_CELLID
+ ,iGeoConverter(NULL)
+#endif
+ {
+ iMdeSessionOwnFlag = (iMdeSession == NULL);
+ }
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::ConstructL
+// --------------------------------------------------------------------------
+//
+void CInternalGeoTagger::ConstructL()
+ {
+ LOG("CInternalGeoTagger::ConstructL ,begin");
+ if(iMdeSession != NULL)
+ {
+ LOG("Not owning mds session");
+ iMdeSessionOwnFlag = EFalse;
+ //object is not owning iMdeSession
+ iTagCreator = CTagCreator::NewL();
+ iSessionReady = ETrue;
+
+ iTagCreator->SetSession( iMdeSession );
+ }
+ else
+ {
+ iMdeSessionOwnFlag = ETrue;
+ iASW = new (ELeave) CActiveSchedulerWait();
+ iMdeSession = CMdESession::NewL( *this );
+ //for creating tags
+ iTagCreator = CTagCreator::NewL();
+
+ iASW->Start();
+ delete iASW;
+ iASW = NULL;
+ }
+
+ //for reverse geocoding (geo-tagging)
+
+ if (!iRevGeocoderPlugin)
+ {
+
+ TRAP_IGNORE(
+ iRevGeocoderPlugin = reinterpret_cast<CReverseGeoCoderPlugin*>(
+ REComSession::CreateImplementationL(KReverseGeoCodeUid, iDtorKey));)
+
+ if(iRevGeocoderPlugin)
+ {
+ iRevGeocoderPlugin->AddObserverL(*this);
+
+ }
+
+ }
+
+ LOG("CInternalGeoTagger::ConstructL ,end");
+ }
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::~CInternalGeoTagger
+// --------------------------------------------------------------------------
+//
+CInternalGeoTagger::~CInternalGeoTagger()
+ {
+ LOG("CInternalGeoTagger::~CInternalGeoTagger ,begin");
+#ifdef LOC_GEOTAGGING_CELLID
+ if(iGeoConverter)
+ {
+ delete iGeoConverter;
+ iGeoConverter = NULL;
+ }
+#endif
+ if(iRelationQuery)
+ {
+ iRelationQuery->RemoveObserver(*this);
+ iRelationQuery->Cancel();
+ delete iRelationQuery;
+ }
+ if(iLocationQuery)
+ {
+ iLocationQuery->RemoveObserver(*this);
+ iLocationQuery->Cancel();
+ delete iLocationQuery;
+ }
+ if(iTagQuery)
+ {
+ iTagQuery->RemoveObserver(*this);
+ iTagQuery->Cancel();
+ delete iTagQuery;
+ }
+ delete iRevGeocoderPlugin;
+ iRevGeocoderPlugin = NULL;
+ REComSession::DestroyedImplementation(iDtorKey);
+ if(iMdeSessionOwnFlag)
+ {
+ delete iMdeSession;
+ delete iASW;
+ }
+ LOG("CInternalGeoTagger::~CInternalGeoTagger ,end");
+ }
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::CreateGeoTags
+// --------------------------------------------------------------------------
+//
+void CInternalGeoTagger::CreateGeoTagsL( const TConnectionOption aOption )
+ {
+ LOG("CInternalGeoTagger::CreateGeoTagsL ,begin");
+ if ( !IsSessionReady() )
+ {
+ User::Leave( KErrNotReady );
+ }
+
+ iConnectionOption = aOption;
+ iIndex = 0;
+ GetAllLocationsL();
+
+ LOG("CInternalGeoTagger::CreateGeoTagsL ,end");
+ }
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::HandleSessionOpened
+// --------------------------------------------------------------------------
+//
+void CInternalGeoTagger::HandleSessionOpened(CMdESession& /*aSession*/, TInt aError)
+ {
+ LOG("CInternalGeoTagger::HandleSessionOpened ,begin");
+ if ( iMdeSessionOwnFlag && iASW && iASW->IsStarted() )
+ {
+ iASW->AsyncStop();
+ }
+
+ if ( KErrNone == aError )
+ {
+ iSessionReady = ETrue;
+
+ iTagCreator->SetSession( iMdeSession );
+ }
+ else if(iMdeSessionOwnFlag)
+ {
+ delete iMdeSession;
+ iMdeSession = NULL;
+ }
+ LOG("CInternalGeoTagger::HandleSessionOpened ,end");
+ }
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::HandleSessionError
+// --------------------------------------------------------------------------
+//
+void CInternalGeoTagger::HandleSessionError(CMdESession& /*aSession*/, TInt /*aError*/)
+ {
+ LOG("CInternalGeoTagger::HandleSessionError ,begin");
+ if ( iMdeSessionOwnFlag && iASW && iASW->IsStarted() )
+ {
+ iASW->AsyncStop();
+ }
+ iSessionReady = EFalse;
+ if(iMdeSessionOwnFlag)
+ {
+ delete iMdeSession;
+ iMdeSession = NULL;
+ }
+ LOG("CInternalGeoTagger::HandleSessionError ,end");
+ }
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::IsSessionReady
+// --------------------------------------------------------------------------
+//
+TBool CInternalGeoTagger::IsSessionReady()
+ {
+ return iSessionReady;
+ }
+
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::GetRelationObjectsL()
+// --------------------------------------------------------------------------
+//
+void CInternalGeoTagger::GetRelationObjectsL(TItemId aLocID)
+ {
+ LOG("CInternalGeoTagger::GetRelationObjectsL ,begin");
+ CMdENamespaceDef& namespaceDef = iMdeSession->GetDefaultNamespaceDefL();
+ CMdEObjectDef& imageObjDef = namespaceDef.GetObjectDefL( Image::KImageObject );
+
+ if(iRelationQuery)
+ {
+ iRelationQuery->RemoveObserver(*this);
+ iRelationQuery->Cancel();
+ delete iRelationQuery;
+ iRelationQuery = NULL;
+ }
+
+ iRelationQuery = iMdeSession->NewRelationQueryL( namespaceDef, this );
+ User::LeaveIfNull( iRelationQuery );
+
+ iRelationQuery->SetResultMode( EQueryResultModeItem );
+
+ // both left and right condition must match
+ CMdERelationCondition& filterCond = iRelationQuery->Conditions().
+ AddRelationConditionL( ERelationConditionSideRight );
+
+ // left one must be any image object.
+ filterCond.LeftL().AddObjectConditionL( imageObjDef );
+
+ // right one must be this location object
+ filterCond.RightL().AddObjectConditionL( aLocID );
+
+ iRelationQuery->FindL(); // results to a call to HandleQueryCompleted()
+ LOG("CInternalGeoTagger::GetRelationObjectsL ,end");
+ }
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::HandleQueryNewResults()
+// --------------------------------------------------------------------------
+//
+void CInternalGeoTagger::HandleQueryNewResults(CMdEQuery& /*aQuery*/, TInt /*aFirstNewItemIndex*/,
+ TInt /*aNewItemCount*/)
+ {
+ LOG("CInternalGeoTagger::HandleQueryNewResults ,begin");
+ }
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::HandleQueryCompleted()
+// --------------------------------------------------------------------------
+//
+void CInternalGeoTagger::HandleQueryCompleted(CMdEQuery& aQuery, TInt aError)
+ {
+ LOG("CInternalGeoTagger::HandleQueryCompleted ,begin");
+
+ TInt count = aQuery.Count();
+ LOG1("CInternalGeoTagger::HandleQueryCompleted count: %d", count);
+
+ if ( &aQuery == iLocationQuery )
+ {
+ if ( count )
+ {
+ iLocationId = iLocationQuery->ResultId( iIndex++ );
+ TRAP_IGNORE( GetRelationObjectsL( iLocationId ) );
+ }
+ else
+ {
+ iIndex = 0;
+ iObserver->GeoTaggingCompleted( aError );
+ if(iTagPendingHandlerFlag)
+ {
+ iTagPendingHandlerFlag = EFalse;
+ iObserver->PendingGeoTagReqComplete(KErrNone);
+ }
+ }
+ }
+ else if ( &aQuery == iRelationQuery )
+ {
+ //if it is a relation query, then update gps info of location object.
+
+ if ( iRelationQuery->Count() )
+ {
+ TInt err = KErrNone;
+ TRAP(err, StartGeoTaggingL( ) );
+ if(err != KErrNone)
+ {
+ IterateNextLocation();
+ }
+ }
+ else
+ {
+ IterateNextLocation();
+ }
+
+ }
+
+ else if ( &aQuery == iTagQuery )
+ {
+
+ if ( LocationTagExists() ) //nothing to do for this location
+ {
+ IterateNextLocation(); //Go through next location
+ }
+ else //do reverse geocoding
+ {
+ if(iTagPendingHandlerFlag)
+ {
+ iIndex = 0;
+ iTagPendingHandlerFlag = EFalse;
+ iObserver->PendingGeoTagReqComplete(KErrNotFound);
+ return;
+ }
+
+ //Find the address for this geo-coordinate
+ if(GPSInfoExists())
+ {
+ // GPS info exist go for reverse geo coding.
+ if(iRevGeocoderPlugin)
+ {
+ TRAP_IGNORE(
+ iRevGeocoderPlugin->GetAddressByCoordinateL
+ ( iLocationData.iPosition, iConnectionOption ) );
+ }
+ else
+ {
+ IterateNextLocation(); //Go through next location
+ }
+ }
+ else
+ {
+ if ( iLocationData.iNetworkInfo.iCellId > 0 &&
+ iLocationData.iNetworkInfo.iLocationAreaCode > 0 &&
+ iLocationData.iNetworkInfo.iCountryCode.Length() > 0 &&
+ iLocationData.iNetworkInfo.iNetworkId.Length() > 0 )
+ {
+ // valid n/w information.. go for cell id based geo coding.
+#ifdef LOC_GEOTAGGING_CELLID
+ TInt err = KErrNone;
+ if(iGeoConverter == NULL)
+ {
+ TRAP(err, iGeoConverter = CGeoConverter::NewL(*this));
+ }
+
+ if(err == KErrNone && iGeoConverter != NULL)
+ {
+ TRAP(err, iGeoConverter->ConvertL(iLocationData.iNetworkInfo);)
+ }
+ if(err != KErrNone)
+ {
+ HandleConversionError(err);
+ }
+#else
+ IterateNextLocation(); //Go through next location
+#endif
+ }
+ else
+ {
+ IterateNextLocation(); //Go through next location
+ }
+ }
+ }
+
+ }
+
+ LOG("CInternalGeoTagger::HandleQueryCompleted ,end");
+ }
+
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::GPSInfoExists()
+// --------------------------------------------------------------------------
+//
+TBool CInternalGeoTagger::GPSInfoExists()
+ {
+ LOG("CInternalGeoTagger::GPSInfoExists");
+ TBool gpsInfoExists = EFalse;
+ if ( !Math::IsNaN( iLocationData.iPosition.Latitude() ) &&
+ !Math::IsNaN( iLocationData.iPosition.Longitude() )) //lat, long is there
+ {
+
+ LOG("Valid lat/lon\n");
+ gpsInfoExists = ETrue;
+ }
+ return gpsInfoExists;
+ }
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::StartGeoTagging()
+// --------------------------------------------------------------------------
+//
+void CInternalGeoTagger::StartGeoTaggingL( )
+ {
+ LOG("CInternalGeoTagger::StartGeoTaggingL ,start");
+ GetLocationInfoL();
+
+ CMdERelation& relation = iRelationQuery->Result( 0 );
+
+ GetTagsL( relation.LeftObjectId() );
+
+ LOG("CInternalGeoTagger::StartGeoTaggingL ,end");
+ }
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::GetLocationInfoL()
+// --------------------------------------------------------------------------
+//
+void CInternalGeoTagger::GetLocationInfoL()
+ {
+ LOG("CInternalGeoTagger::GetLocationInfoL, begin");
+
+ CMdENamespaceDef& namespaceDef = iMdeSession->GetDefaultNamespaceDefL();
+
+ CMdEObjectDef& locationObjectDef = namespaceDef.GetObjectDefL( Location::KLocationObject );
+
+ CMdEPropertyDef& latitudeDef = locationObjectDef.GetPropertyDefL(
+ Location::KLatitudeProperty );
+ CMdEPropertyDef& longitudeDef = locationObjectDef.GetPropertyDefL(
+ Location::KLongitudeProperty );
+ CMdEPropertyDef& cellIdDef = locationObjectDef.GetPropertyDefL(
+ Location::KCellIdProperty );
+ CMdEPropertyDef& lacCodeDef = locationObjectDef.GetPropertyDefL(
+ Location::KLocationAreaCodeProperty );
+ CMdEPropertyDef& countryCodeDef = locationObjectDef.GetPropertyDefL(
+ Location::KCountryCodeProperty );
+ CMdEPropertyDef& networkCodeDef = locationObjectDef.GetPropertyDefL(
+ Location::KNetworkCodeProperty );
+
+ CMdEObject* locationObject = NULL;
+ CMdEProperty* latProp = NULL;
+ CMdEProperty* lonProp = NULL;
+ CMdEProperty* cellProp = NULL;
+ CMdEProperty* lacProp = NULL;
+ CMdEProperty* countryProp = NULL;
+ CMdEProperty* networkProp = NULL;
+
+ locationObject = iMdeSession->GetObjectL( iLocationId, locationObjectDef );
+
+ locationObject->Property( latitudeDef, latProp, 0 );
+ locationObject->Property( longitudeDef, lonProp, 0 );
+ if ( latProp && lonProp )
+ {
+ iLocationData.iPosition.SetCoordinate( latProp->Real64ValueL(),
+ lonProp->Real64ValueL() );
+ }
+
+ locationObject->Property( cellIdDef, cellProp, 0 );
+ locationObject->Property( lacCodeDef, lacProp, 0 );
+ locationObject->Property( countryCodeDef, countryProp, 0 );
+ locationObject->Property( networkCodeDef, networkProp, 0 );
+ if ( cellProp && lacProp && countryProp && networkProp)
+ {
+ iLocationData.iNetworkInfo.iCellId = cellProp->Uint32ValueL();
+ iLocationData.iNetworkInfo.iLocationAreaCode = lacProp->Uint32ValueL();
+ iLocationData.iNetworkInfo.iCountryCode = countryProp->TextValueL();
+ iLocationData.iNetworkInfo.iNetworkId = networkProp->TextValueL();
+
+ }
+
+ LOG("CInternalGeoTagger::GetLocationInfoL ,end");
+ }
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::LocationTagExists()
+// --------------------------------------------------------------------------
+//
+TBool CInternalGeoTagger::LocationTagExists()
+ {
+ LOG("CInternalGeoTagger::LocationTagExists ,begin");
+
+ TBool tagFound = EFalse;
+ TInt error = KErrNone;
+ const TInt count = iTagQuery->Count();
+
+ for ( TInt i = 0; i < count; i++ )
+ {
+ CMdERelation& relation = static_cast<CMdERelation&>( iTagQuery->ResultItem( i ) );
+
+ TItemId tagId = relation.RightObjectId();
+ CMdEObject* object = NULL;
+ TRAP_IGNORE( object = iMdeSession->GetObjectL( tagId ) );
+
+ error = object->Uri().Find( KCountry );
+ if ( error == KErrNone )
+ {
+ i = count;
+ tagFound = ETrue;
+ }
+ }
+
+
+ LOG("CInternalGeoTagger::LocationTagExists ,end");
+ return tagFound;
+
+ }
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::AddressInfo()
+// --------------------------------------------------------------------------
+//
+void CInternalGeoTagger::AddressInfoL( const TItemId aCountryTagId, const TItemId aCityTagId )
+ {
+ LOG("CInternalGeoTagger::AddressInfoL ,begin");
+
+ const TInt count = iRelationQuery->Count();
+
+ for ( TInt i = 0; i < count; i++ )
+ {
+ CMdERelation& relation = iRelationQuery->Result( i );
+ TItemId imageId = relation.LeftObjectId();
+
+ if ( !GPSInfoExists() ) //to update EXIF
+ {
+ // update relation timestamp, composer will then update exif data
+ TTime timestamp( 0 );
+ timestamp.UniversalTime();
+ relation.SetLastModifiedDate( timestamp );
+ iMdeSession->UpdateRelationL( relation );
+ }
+
+ iTagCreator->AttachTagsL( imageId, aCountryTagId, aCityTagId );
+ }
+
+ LOG("CInternalGeoTagger::AddressInfoL ,end");
+ }
+
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::IterateNextLocation()
+// --------------------------------------------------------------------------
+//
+void CInternalGeoTagger::IterateNextLocation()
+ {
+ LOG("CInternalGeoTagger::IterateNextLocation ,begin");
+
+ if (iIndex < iLocationQuery->Count())
+ {
+ iLocationId = iLocationQuery->ResultId( iIndex++ );
+ TRAP_IGNORE( GetRelationObjectsL( iLocationId ) );
+ }
+ else
+ {
+ if ( iObserver )
+ {
+ iIndex = 0;
+ TInt error = KErrNone;
+ iObserver->GeoTaggingCompleted( error );
+ if(iTagPendingHandlerFlag)
+ {
+ iTagPendingHandlerFlag = EFalse;
+ iObserver->PendingGeoTagReqComplete(KErrNone);
+ }
+ }
+ }
+ LOG("CInternalGeoTagger::IterateNextLocation ,end");
+ }
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::GetAllLocationsL()
+// --------------------------------------------------------------------------
+//
+void CInternalGeoTagger::GetAllLocationsL()
+ {
+ LOG("CInternalGeoTagger::GetAllLocationsL ,begin");
+
+ CMdENamespaceDef& defaultNamespaceDef = iMdeSession->GetDefaultNamespaceDefL();
+ CMdEObjectDef& locObjDef = defaultNamespaceDef.GetObjectDefL(
+ MdeConstants::Location::KLocationObject );
+ CMdEPropertyDef& cellIdPropDef = locObjDef.GetPropertyDefL(
+ MdeConstants::Location::KCellIdProperty );
+
+ if(iLocationQuery)
+ {
+ iLocationQuery->RemoveObserver(*this);
+ iLocationQuery->Cancel();
+ delete iLocationQuery;
+ iLocationQuery = NULL;
+ }
+ // query objects with object definition "Image"
+ iLocationQuery = iMdeSession->NewObjectQueryL( defaultNamespaceDef, locObjDef, this );
+
+ //Define the result order
+ iLocationQuery->AppendOrderRuleL(TMdEOrderRule(cellIdPropDef, ESortAscending));
+
+ iLocationQuery->SetResultMode( EQueryResultModeId );
+ iLocationQuery->FindL();
+
+ LOG("CInternalGeoTagger::GetAllLocationsL ,end");
+ }
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::ReverseGeocodeComplete()
+// Get address details like street, city, state, etc.
+// --------------------------------------------------------------------------
+//
+void CInternalGeoTagger::ReverseGeocodeComplete( TInt& aErrorcode, MAddressInfo& aAddressInfo )
+ {
+ LOG("CInternalGeoTagger::ReverseGeocodeComplete ,begin");
+ TItemId countryTagId(0);
+ TItemId cityTagId(0);
+
+ // create country and city tags
+ if( aErrorcode == KErrNone )
+ {
+ TPtrC countryPtr( aAddressInfo.GetCountryName() );
+ TPtrC cityPtr( aAddressInfo.GetCity() );
+
+ TRAP_IGNORE( iTagCreator->CreateLocationTagsL( countryPtr, countryTagId, cityPtr, cityTagId ) );
+
+ TRAP_IGNORE(AddressInfoL( countryTagId, cityTagId ));
+
+ IterateNextLocation();
+ }
+ else
+ {
+ //handle error
+ if ( iObserver )
+ {
+ iIndex = 0;
+ iObserver->GeoTaggingCompleted( aErrorcode );
+ }
+ }
+
+
+ LOG("CInternalGeoTagger::ReverseGeocodeComplete ,end");
+ }
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::GetTagsL()
+// Get tags related to this image/video object
+// --------------------------------------------------------------------------
+//
+void CInternalGeoTagger::GetTagsL( TItemId aImageID )
+ {
+ LOG("CInternalGeoTagger::GetTagsL ,begin");
+ CMdENamespaceDef& namespaceDef = iMdeSession->GetDefaultNamespaceDefL();
+ CMdEObjectDef& tagObjectDef = namespaceDef.GetObjectDefL( Tag::KTagObject );
+
+ if(iTagQuery)
+ {
+ iTagQuery->RemoveObserver(*this);
+ iTagQuery->Cancel();
+ delete iTagQuery;
+ iTagQuery = NULL;
+ }
+
+ iTagQuery = iMdeSession->NewRelationQueryL( namespaceDef, this );
+ User::LeaveIfNull( iTagQuery );
+
+ iTagQuery->SetResultMode( EQueryResultModeItem );
+
+ // both left and right condition must match
+ CMdERelationCondition& filterCond = iTagQuery->Conditions().
+ AddRelationConditionL( ERelationConditionSideRight );
+
+ // left one must be this image object.
+ filterCond.LeftL().AddObjectConditionL( aImageID );
+
+ // right one must be tag object
+ filterCond.RightL().AddObjectConditionL( tagObjectDef );
+
+ iTagQuery->FindL(); // results to a call to HandleQueryCompleted()
+ LOG("CInternalGeoTagger::GetTagsL ,end");
+ }
+
+#ifdef LOC_GEOTAGGING_CELLID
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::ConversionCompletedL()
+// --------------------------------------------------------------------------
+//
+
+void CInternalGeoTagger::ConversionCompletedL( const TInt aError,
+ TLocality& aPosition )
+ {
+ LOG1("CInternalGeoTagger::ConversionCompletedL, begin. Error - %d", aError);
+ if(aError == KErrNone)
+ {
+ iLocationData.iPosition.SetCoordinate
+ ( aPosition.Latitude(), aPosition.Longitude());
+ if(iRevGeocoderPlugin)
+ {
+ iRevGeocoderPlugin->GetAddressByCoordinateL
+ ( iLocationData.iPosition, iConnectionOption ) ;
+ }
+ else
+ {
+ IterateNextLocation(); //Go through next location
+ }
+ }
+ else
+ {
+ IterateNextLocation(); //Go through next location
+ }
+ LOG("CInternalGeoTagger::ConversionCompletedL, end");
+ }
+
+
+//-----------------------------------------------------------------
+// CInternalGeoTagger::HandleConversionError
+//------------------------------------------------------------------
+//
+void CInternalGeoTagger::HandleConversionError(TInt aError)
+ {
+ LOG("CInternalGeoTagger::HandleConversionError, begin");
+ ARG_USED(aError);
+ IterateNextLocation(); //Go through next location
+ LOG("CInternalGeoTagger::HandleConversionError, end");
+ }
+
+#endif
+
+// --------------------------------------------------------------------------
+// CInternalGeoTagger::PendingGeoTagsL()
+// Is there any untagged photos with location info?.
+// --------------------------------------------------------------------------
+//
+void CInternalGeoTagger::PendingGeoTagsL( TBool aTagInProgress )
+ {
+ LOG("CInternalGeoTagger::PendingGeoTagsL ,begin");
+ iIndex = 0;
+ if ( aTagInProgress )
+ {
+ //Tagging is going through location trail, so photo does not need to do tagging now
+ LOG("Geo tagging in progress.\n");
+ iObserver->PendingGeoTagReqComplete( KErrInUse );
+ }
+ else
+ {
+ if(!iTagPendingHandlerFlag)
+ {
+ LOG("Processing the request.\n");
+ // tag pending request is not going on
+ iTagPendingHandlerFlag = ETrue;
+ CreateGeoTagsL();
+ }
+ else
+ {
+ // req osn progress, don't do anything.
+ LOG("Request in progress.\n");
+ iObserver->PendingGeoTagReqComplete( KErrInUse );
+ }
+ }
+ LOG("CInternalGeoTagger::PendingGeoTagsL ,end");
+ }
+
+// ----------------------------------------------------------------------------
+// CInternalGeoTagger::GetCurrentRegisterNw()
+// ----------------------------------------------------------------------------
+RMobilePhone::TMobilePhoneNetworkInfoV2& CInternalGeoTagger::GetCurrentRegisterNw()
+ {
+ LOG( "CInternalGeoTagger::GetCurrentRegisterNw ,begin" );
+ return iObserver->GetCurrentRegisterNw();
+ }
+
+// ----------------------------------------------------------------------------
+// CInternalGeoTagger::IsRegisteredAtHomeNetwork()
+// ----------------------------------------------------------------------------
+TBool CInternalGeoTagger::IsRegisteredAtHomeNetwork()
+ {
+ LOG( "CInternalGeoTagger::IsRegisteredAtHomeNetwork" );
+ return iObserver->IsRegisteredAtHomeNetwork();
+ }
+
+// ----------------------------------------------------------------------------
+// CInternalGeoTagger::GetHomeNetworkInfo()
+// ----------------------------------------------------------------------------
+const RMobilePhone::TMobilePhoneNetworkInfoV1&
+ CInternalGeoTagger::GetHomeNetworkInfo(TBool& aHomeNwInfoAvailableFlag)
+ {
+ LOG( "CInternalReverseGeocode::GetHomeNetworkInfo" );
+ return iObserver->GetHomeNetworkInfo(aHomeNwInfoAvailableFlag);
+ }
+
+// End of file
+
--- a/locationmanager/group/bld.inf Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/group/bld.inf Tue Jul 06 14:44:37 2010 +0300
@@ -14,6 +14,19 @@
* Description: Build information file
*
*/
+#include "../inc/locplatsupport.mmh"
+
+#ifdef _LOC_GEOTAGGING_CELLID
+#include "../geoconverter/group/bld.inf"
+#endif
+
+#ifdef _LOC_REVERSEGEOCODE
+#include "../tagcreator/group/bld.inf"
+#include "../ReverseGeocode/group/bld.inf"
+#include "../ReverseGeoCoderPlugin/group/bld.inf"
+#include "../geotagger/group/bld.inf"
+#endif
+
#include "../locationtrail/group/bld.inf"
#include "../server/group/bld.inf"
--- a/locationmanager/inc/locationmanagerdebug.h Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/inc/locationmanagerdebug.h Tue Jul 06 14:44:37 2010 +0300
@@ -39,6 +39,8 @@
#define __CLOGGING__
#endif
+// Added to remove compilation warnings.
+#define ARG_USED(a) (void)(a)
// Then actual definitions depending on the
--- a/locationmanager/inc/locationmanagerdefs.h Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/inc/locationmanagerdefs.h Tue Jul 06 14:44:37 2010 +0300
@@ -51,7 +51,11 @@
ELocManTrackLogName,
ELocManRegObserver,
ELocManGetCaptureSetting,
- ELocManCancelTrackLogNotify
+ ELocManCancelTrackLogNotify,
+ ELocManTagPending,
+ ELocManStartGeoTaging,
+ ELocManCancelTagPendingReq,
+ ELocManCancelGeoTaggingReq
};
/** Message argument indices */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/inc/locplatsupport.mmh Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2009-2010 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: Definition file for Location Manager.
+*
+*/
+
+#ifndef __LOCPLATSUPPORT_MMH__
+#define __LOCPLATSUPPORT_MMH__
+
+/*
+* Define this flag when platform supports cellid based location.
+*/
+
+#define _LOC_GEOTAGGING_CELLID
+
+/*
+* Define this flag when platform supports reverse geotagging.
+*/
+//#define _LOC_REVERSEGEOCODE
+
+
+#endif // __LOCPLATSUPPORT_MMH__
+
+// End of file.
+
--- a/locationmanager/locationtrail/bwincw/locationtrailwinscw.def Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/locationtrail/bwincw/locationtrailwinscw.def Tue Jul 06 14:44:37 2010 +0300
@@ -15,7 +15,7 @@
?GetTrackLogName@CTrackLog@@QAEXAAV?$TBuf@$0BAA@@@@Z @ 14 NONAME ; void CTrackLog::GetTrackLogName(class TBuf<256> &)
?IsRecording@CTrackLog@@QAEHXZ @ 15 NONAME ; int CTrackLog::IsRecording(void)
?LocationTrailState@CLocationRecord@@QAEXAAW4TTrailState@RLocationTrail@@@Z @ 16 NONAME ; void CLocationRecord::LocationTrailState(enum RLocationTrail::TTrailState &)
- ?NewL@CLocationRecord@@SAPAV1@XZ @ 17 NONAME ; class CLocationRecord * CLocationRecord::NewL(void)
+ ?NewL@CLocationRecord@@SAPAV1@AAVMGeoTaggerObserver@@AAVRMobilePhone@@@Z @ 17 NONAME ; class CLocationRecord * CLocationRecord::NewL(class MGeoTaggerObserver &, class RMobilePhone &)
?NewL@CNetworkInfo@@SAPAV1@PAVMNetworkInfoObserver@@@Z @ 18 NONAME ; class CNetworkInfo * CNetworkInfo::NewL(class MNetworkInfoObserver *)
?NewL@CPositionInfo@@SAPAV1@PAVMPositionInfoObserver@@@Z @ 19 NONAME ; class CPositionInfo * CPositionInfo::NewL(class MPositionInfoObserver *)
?NewL@CTrackLog@@SAPAV1@XZ @ 20 NONAME ; class CTrackLog * CTrackLog::NewL(void)
@@ -31,5 +31,12 @@
?SetStateToStopping@CLocationRecord@@QAEXXZ @ 30 NONAME ; void CLocationRecord::SetStateToStopping(void)
?LocationSnapshotL@CLocationRecord@@QAEXABI@Z @ 31 NONAME ; void CLocationRecord::LocationSnapshotL(unsigned int const &)
?RemappingNeeded@CLocationRecord@@QAEHXZ @ 32 NONAME ; int CLocationRecord::RemappingNeeded(void)
- ?IsLowBattery@CLocationRecord@@QAEHXZ @ 33 NONAME ; int CLocationRecord::IsLowBattery(void)
+ ?StartGeoTagging@CLocationRecord@@QAEHW4TConnectionOption@@@Z @ 33 NONAME ; int CLocationRecord::StartGeoTagging(enum TConnectionOption)
+ ?StartNwInfoChangeNotifier@CNetworkInfo@@QAEXXZ @ 34 NONAME ; void CNetworkInfo::StartNwInfoChangeNotifier(void)
+ ?StopNwInfoChangeNotifier@CNetworkInfo@@QAEXXZ @ 35 NONAME ; void CNetworkInfo::StopNwInfoChangeNotifier(void)
+ ?CancelGeoTagging@CLocationRecord@@QAEXXZ @ 36 NONAME ; void CLocationRecord::CancelGeoTagging(void)
+ ?TaggingInProgress@CLocationRecord@@QAEHXZ @ 37 NONAME ; int CLocationRecord::TaggingInProgress(void)
+ ?MapNetworkInfo@CNetworkInfo@@SAXPAVTNetworkInfoV1@CTelephony@@PAVTMobilePhoneNetworkInfoV2@RMobilePhone@@PAVTMobilePhoneLocationAreaV1@5@@Z @ 38 NONAME ; void CNetworkInfo::MapNetworkInfo(class CTelephony::TNetworkInfoV1 *, class RMobilePhone::TMobilePhoneNetworkInfoV2 *, class RMobilePhone::TMobilePhoneLocationAreaV1 *)
+ ?GetCurrentRegisteredNw@CLocationRecord@@QAEAAVTMobilePhoneNetworkInfoV2@RMobilePhone@@XZ @ 39 NONAME ; class RMobilePhone::TMobilePhoneNetworkInfoV2 & CLocationRecord::GetCurrentRegisteredNw(void)
+ ?IsLowBattery@CLocationRecord@@QAEHXZ @ 40 NONAME ; int CLocationRecord::IsLowBattery(void)
--- a/locationmanager/locationtrail/eabi/locationtrailarm.def Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/locationtrail/eabi/locationtrailarm.def Tue Jul 06 14:44:37 2010 +0300
@@ -10,7 +10,7 @@
_ZN15CLocationRecord18LocationTrailStateERN14RLocationTrail11TTrailStateE @ 9 NONAME
_ZN15CLocationRecord21CancelLocationRequestEv @ 10 NONAME
_E32Dll @ 11 NONAME ABSENT
- _ZN15CLocationRecord4NewLEv @ 12 NONAME
+ _ZN15CLocationRecord4NewLER18MGeoTaggerObserverR12RMobilePhone @ 12 NONAME
_ZN15CLocationRecord4StopEv @ 13 NONAME
_ZN15CLocationRecord6StartLEN14RLocationTrail20TTrailCaptureSettingE @ 14 NONAME
_ZN9CTrackLog11IsRecordingEv @ 15 NONAME
@@ -53,5 +53,12 @@
_ZN9CTrackLogD0Ev @ 52 NONAME
_ZN9CTrackLogD1Ev @ 53 NONAME
_ZN9CTrackLogD2Ev @ 54 NONAME
- _ZN15CLocationRecord12IsLowBatteryEv @ 55 NONAME
+ _ZN12CNetworkInfo24StopNwInfoChangeNotifierEv @ 55 NONAME
+ _ZN12CNetworkInfo25StartNwInfoChangeNotifierEv @ 56 NONAME
+ _ZN15CLocationRecord15StartGeoTaggingE17TConnectionOption @ 57 NONAME
+ _ZN15CLocationRecord16CancelGeoTaggingEv @ 58 NONAME
+ _ZN15CLocationRecord17TaggingInProgressEv @ 59 NONAME
+ _ZN12CNetworkInfo14MapNetworkInfoEPN10CTelephony14TNetworkInfoV1EPN12RMobilePhone25TMobilePhoneNetworkInfoV2EPNS3_26TMobilePhoneLocationAreaV1E @ 60 NONAME
+ _ZN15CLocationRecord22GetCurrentRegisteredNwEv @ 61 NONAME
+ _ZN15CLocationRecord12IsLowBatteryEv @ 62 NONAME
--- a/locationmanager/locationtrail/group/locationtrail.mmp Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/locationtrail/group/locationtrail.mmp Tue Jul 06 14:44:37 2010 +0300
@@ -17,6 +17,7 @@
#include <platform_paths.hrh>
#include <data_caging_paths.hrh>
+#include "../../inc/locplatsupport.mmh"
VERSION 10.0
TARGET LocationTrail.dll
@@ -37,6 +38,24 @@
USERINCLUDE ../../inc
USERINCLUDE ../../../inc
+#ifdef _LOC_REVERSEGEOCODE
+MACRO LOC_REVERSEGEOCODE
+USERINCLUDE ../../tagcreator/inc
+USERINCLUDE ../../ReverseGeocode/inc
+USERINCLUDE ../../ReverseGeoCoderPlugin/inc
+#endif
+
+#ifdef _LOC_GEOTAGGING_CELLID
+MACRO LOC_GEOTAGGING_CELLID
+USERINCLUDE ../../geoconverter/inc
+#endif
+
+SYSTEMINCLUDE /epoc32/include/stdapis
+SYSTEMINCLUDE /epoc32/include/ecom
+SYSTEMINCLUDE /epoc32/include/platform/lbs
+
+MW_LAYER_SYSTEMINCLUDE
+
SOURCEPATH ../src
SOURCE clocationrecord.cpp
SOURCE cnetworkinfo.cpp
@@ -45,19 +64,36 @@
SOURCE cgpxconverterao.cpp
SOURCE locationremappingao.cpp
-MW_LAYER_SYSTEMINCLUDE
-
LIBRARY euser.lib
LIBRARY efsrv.lib
LIBRARY lbs.lib
LIBRARY etel3rdparty.lib
-LIBRARY mdeclient.lib
+LIBRARY etel.lib
+LIBRARY etelmm.lib
+LIBRARY mdeclient.lib
LIBRARY estor.lib
-LIBRARY PlatformEnv.lib
-LIBRARY centralrepository.lib
+LIBRARY PlatformEnv.lib
+LIBRARY centralrepository.lib
+LIBRARY ecom.lib
+LIBRARY commsdat.lib
+
+
+DEBUGLIBRARY flogger.lib
+LIBRARY libc.lib
+#ifdef _LOC_REVERSEGEOCODE
+LIBRARY reversegeocode.lib
+LIBRARY tagcreator.lib
+LIBRARY geotagger.lib
+#endif
+
+#ifdef _LOC_GEOTAGGING_CELLID
+LIBRARY geoconverter.lib
+#endif
+
PAGED
BYTEPAIRCOMPRESSTARGET
OPTION ARMCC -O3 -OTime
-
+// End of file
+
--- a/locationmanager/locationtrail/inc/cgpxconverterao.h Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/locationtrail/inc/cgpxconverterao.h Tue Jul 06 14:44:37 2010 +0300
@@ -100,11 +100,14 @@
/**
* Adds temp-file and possible pre-calculated boundaries
* into processing queue
+ * @param aFileName The temp file name
+ * @param aBoundaries The pre-calculated boundaries
*/
void AddToQueueL( const TDesC& aFileName, TBoundaries* aBoundaries = NULL );
/**
* Adds observer for GPX file creation notifications
+ * @param aObserver The observer that recieves the file creation notifications
*/
void AddObserver( MGpxConversionObserver* aObserver );
@@ -122,11 +125,13 @@
/**
* Set next state for RunL
+ * @param aState The next processing state
*/
void SetState( TProcessingState aState );
/**
* Resolve where to save tracklog file
+ * aFileName The name of the file
*/
void GetTrackLogPathL( TDes& aFileName );
--- a/locationmanager/locationtrail/inc/clocationrecord.h Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/locationtrail/inc/clocationrecord.h Tue Jul 06 14:44:37 2010 +0300
@@ -22,6 +22,11 @@
#include <e32property.h>
#include <lbs.h>
+
+#include <etel.h>
+#include <etelmm.h>
+#include <geotagobserver.h>
+
#include "rlocationtrail.h"
#include "locationdatatype.h"
#include "cnetworkinfo.h"
@@ -37,6 +42,17 @@
#include "mdequery.h"
#include "locationremappingao.h"
+#ifdef LOC_GEOTAGGING_CELLID
+#include "cgeoconverter.h"
+#endif
+
+#ifdef LOC_REVERSEGEOCODE
+#include <geotagger.h>
+#include "ctagcreator.h"
+#include "reversegeocode.h"
+class CReverseGeoCoderPlugin;
+#endif
+
typedef RLocationTrail::TTrailState TLocTrailState;
class CTelephony;
@@ -55,11 +71,22 @@
* This method is used to notify about location trail state changes.
*/
virtual void LocationTrailStateChange() = 0;
-
+
+ /**
+ * This method is used to fetch the current location
+ * @param aSatelliteInfo The satellite information
+ * @param aNetworkInfo The network informatiom
+ * @param aError ErrCode if any
+ */
virtual void CurrentLocation( const TPositionSatelliteInfo& aSatelliteInfo,
const CTelephony::TNetworkInfoV1& aNetworkInfo,
const TInt aError ) = 0;
-
+
+
+ /**
+ * This method is used to notify about GPS signal quality changes.
+ * @param aSatelliteInfo The satellite information
+ */
virtual void GPSSignalQualityChanged( const TPositionSatelliteInfo& aSatelliteInfo ) = 0;
/**
@@ -86,6 +113,21 @@
TLocTrailState iTrailState; // Trail state for this item.
};
+/**
+* Location snap shot item class.
+*/
+class TLocationSnapshotItem
+ {
+ public:
+ TLocationData iLocationData; // Location info & network info
+ TItemId iObjectId; // current media object id.
+ TItemId iLocationId;
+ TUint iFlag; //indicator for various scenarios
+#ifdef LOC_REVERSEGEOCODE
+ TItemId iCountryTagId;
+ TItemId iCityTagId;
+#endif
+ };
class MLocationAddObserver
{
public:
@@ -107,14 +149,21 @@
public MNetworkInfoObserver,
public MPositionInfoObserver,
public MMdEQueryObserver
+#ifdef LOC_GEOTAGGING_CELLID
+ ,public MGeoConverterObserver
+#endif
+#ifdef LOC_REVERSEGEOCODE
+ ,public MReverseGeocodeObserver
+#endif
{
public:
/**
* 2-phased constructor.
+ * @param aGeoTaggerObserver The observer that is notified after geotagging
* @since S60 3.1
*/
- IMPORT_C static CLocationRecord* NewL();
-
+ IMPORT_C static CLocationRecord* NewL(MGeoTaggerObserver& aGeoTaggerObserver, RMobilePhone& aPhone);
+
/**
* C++ destructor.
* @since S60 3.1
@@ -195,66 +244,178 @@
/**
* Set observer (TrackLog) for notifying new locations in location trail
+ * @param aObserver, An observer for location changes
*/
IMPORT_C void SetAddObserver( MLocationAddObserver* aObserver );
-
+
+
+ /**
+ * Update network information
+ *
+ */
static TInt UpdateNetworkInfo( TAny* aAny );
+
+ /*
+ * creates a location object from the given location data and objectId
+ * @param aLocationData the location data
+ * @param aObjectId the object Id
+ */
IMPORT_C void CreateLocationObjectL( const TLocationData& aLocationData,
const TUint& aObjectId );
-
+
+
+ /**
+ * Handle the photos taken by phone camera.
+ * @param aObjectId Object id
+ */
IMPORT_C void LocationSnapshotL( const TUint& aObjectId );
-
+
+ /**
+ * Creates a location object with given location data
+ * @param aLocationData The location data
+ * @return The locationId
+ */
TItemId DoCreateLocationL( const TLocationData& aLocationData );
-
+
+ /**
+ * Creates a "contains" relation for the given ObjectId and LocationId and adds it to the iMdeSession
+ * @param aObjectId Object id
+ * @param aLocationId location id
+ * @return item id
+ */
TItemId CreateRelationL( const TUint& aObjectId, const TUint& aLocationId );
-
+ /**
+ * Sets the CMdESession for tagcreation
+ * @param aSession The CMdESession object
+ */
IMPORT_C void SetMdeSession( CMdESession* aSession );
+ /**
+ * Sets the current location trail state to Stop
+ */
IMPORT_C void SetStateToStopping();
+ /**
+ * returns the timevalue of the CMdEObject corresponding to a given ObjectId
+ * @param aObjectId the objectId
+ * @return the timevalue associated with given object
+ */
TTime GetMdeObjectTimeL( TItemId aObjectId );
-
+
+ /**
+ * Checks if Remapping is needed
+ * @return Boolean to indicate if remapping is needed or not
+ */
IMPORT_C TBool RemappingNeeded();
-
+
+
IMPORT_C TBool IsLowBattery();
+ /**
+ * Checks if geotagging is in progress
+ * @return Boolean to indicate if geotagging is in progress
+ */
+ IMPORT_C TBool TaggingInProgress();
+
+
+ /**
+ * Initiates geotagging
+ * @param aConnectionOption connection option,silent or not
+ * @return Etrue if geotagging is started
+ */
+ IMPORT_C TBool StartGeoTagging(const TConnectionOption aConnectionOption);
+
+ /**
+ * Cancels the geotagging
+ */
+ IMPORT_C void CancelGeoTagging();
+
public: // from MNetworkInfoObserver.
/**
*
+ * NetworkInfo
+ * This method is used for setting the network cell id to the
* @since S60 3.1
- * @param
- * @return
+ * @param aNetworkInfo N/W info
+ * @param aError Error code
*/
void NetworkInfo( const CTelephony::TNetworkInfoV1 &aNetworkInfo, TInt aError );
+
+ /**
+ * Get mobile phone object for network info object
+ * @return mobile phone object
+ */
+ RMobilePhone& GetMobilePhone4NwInfo();
public: // from MPositionInfoObserver
/**
- *
+ * This method is used for setting the position info to the
+ * location trail.
* @since S60 3.1
- * @param
- * @return
+ * @param aPositionInfo the position information
+ * @param aError Captures the errcode if any
*/
void Position( const TPositionInfo& aPositionInfo, const TInt aError );
public: // From MMdEQueryObserver
+ /**
+ * Handle query new results
+ * @param aQuery Query object
+ * @param aFirstNewItemIndex new item index
+ * @param aNewItemCount item count
+ */
void HandleQueryNewResults(CMdEQuery& aQuery, TInt aFirstNewItemIndex,
TInt aNewItemCount);
-
+
+
+ /*
+ * This method is called when any of the location/image/tag query is completed
+ * @param aQuery The Query type
+ * @param aError Indicates if the query was completed successfully or with any err
+ *
+ */
void HandleQueryCompleted(CMdEQuery& aQuery, TInt aError);
+
+#ifdef LOC_GEOTAGGING_CELLID
+public: // MGeoConverterObserver
+ /**
+ * This method is used for notifying completion of geotagging
+ * @param aError error code
+ * @param aPosition position (lat/lon) for the correcponding n/w info
+ */
+ void ConversionCompletedL( const TInt aError, TLocality& aPosition );
+
+ /**
+ * This method is used to handle the conversion error
+ * @param aError the error code
+ */
+ void HandleConversionError(TInt aError);
-private:
+#endif
+public:
+
+ /*
+ * Get registrer network country code
+ *
+ * @return current register n/w info
+ */
+ IMPORT_C RMobilePhone::TMobilePhoneNetworkInfoV2& GetCurrentRegisteredNw();
+
+
+private:
/**
* Stores the location info into the array.
+ * @param aSatelliteInfo Satellite information
*/
- void StoreLocation( /*const TPosition& aPosition, const TCourse& aCourse,*/
- const TPositionSatelliteInfo& aSatelliteInfo );
+ void StoreLocation( const TPositionSatelliteInfo& aSatelliteInfo );
/**
* Changes the current state. New state is published in P&S and
* possible observer is notified.
+ * @param aState The location trail state that is to be set
*/
void SetCurrentState( TLocTrailState aState );
@@ -262,15 +423,18 @@
* Returns the requested location via callback method, if the location
* is valid. Otherwise new location value is requested until the value
* is succesful, or the time out limit has been reached.
+ * @param aSatelliteInfo The satelliteInfo object
+ * @param aError Indicates any error in handling the location request
*
*/
void HandleLocationRequest( const TPositionSatelliteInfo& aSatelliteInfo /*TLocality& aPosition*/,
const TInt aError );
/**
* C++ constructor.
+ * @param aGeoTaggerObserver The observer that is to be notified when geotagging completes
*/
- CLocationRecord();
-
+ CLocationRecord(MGeoTaggerObserver& aGeoTaggerObserver, RMobilePhone& aPhone);
+
/**
* 2nd phase constructor.
*/
@@ -282,12 +446,157 @@
* @param aValue, Read value
*/
void ReadCenRepValueL(TInt aKey, TInt& aValue);
-
+
+ /**
+ * Validates the lat lon values recieved
+ * @param aSatelliteInfo The satelliteInfo object
+ * @return ETrue if the lat=lon are valid
+ */
TBool CheckGPSFix( const TPositionSatelliteInfo& aSatelliteInfo );
-
+
+
+ /**
+ * Starts the network info timer
+ */
void StartTimerL();
+
+ /**
+ * Fetches the location info from the db
+ */
+
+ void FindLocationFromDBL();
+
+
+ /**
+ * Find location entry
+ * @param aQuery query type for the tag
+ * @param aLocationId Location Id
+ */
+ void FindAnyLocationMatchesL( CMdEQuery& aQuery, TUint& aLocationId );
+
+ /**
+ * Remaps the location objects when GPS is available
+ * @param aGPSInfoAvailable Boolean value to indicate if GPS is available
+ */
+ void RemapObjectsL( TBool aGPSInfoAvailable );
+
+ /**
+ * Check any location object already exists with same network info
+ */
+ void FindLocationWithSameNetInfoL();
+
+ /**
+ * Initialises the location object definitions
+ */
+ void InitialiseL();
+
+ /**
+ * handle network location related query on complete
+ * @param aQuery the query type
+ */
+ void HandleNetLocationQueryL( CMdEQuery& aQuery );
+
+
+ /**
+ * handle the location query on location query complete
+ * @param aQuery the query type
+ */
+ void HandleLocationQueryL( CMdEQuery& aQuery );
+
+ /**
+ * Callback method on geotagging complete
+ */
+ void GeoTaggingCompleted();
+
+#ifdef LOC_REVERSEGEOCODE
+ /**
+ * Get any imagefor this location object
+ * @param aLocID, location object Id
+ */
+ void GetRelatedImageL( TItemId aLocID );
+
+ /**
+ * Get tags for this image
+ * @param aImageID, image object Id
+ */
+ void GetTagsL( TItemId aImageID );
+
+ /**
+ * handle the tag query on complete
+ * @param aQuery the query type
+ */
+ void HandleTagQueryL( CMdEQuery& aQuery );
+
+
+ // MReverseGeocodeObserver
+ //from reverse-geocode observer
+ /*
+ * Call back method from reverse geo coder with address details like country, city..
+ * @param aErrorcode Indicates any error in Reverse geocoding
+ * aAddressInfo address info
+ */
+ void ReverseGeocodeComplete( TInt& aErrorcode, MAddressInfo& aAddressInfo );
+
+ /*
+ * Get registrer network country code
+ *
+ * @return current register n/w info
+ */
+ RMobilePhone::TMobilePhoneNetworkInfoV2& GetCurrentRegisterNw();
+
+ /*
+ * UE is registered to home network?
+ *
+ * @return ETrue if UE is registered at home network else EFalse
+ */
+ TBool IsRegisteredAtHomeNetwork();
+
+
+ /*
+ * Get home network country code
+ * @param aHomeNwInfoAvailableFlag ETrue if home n/w info available else EFalse
+ * @return user home n/w info
+ */
+ const RMobilePhone::TMobilePhoneNetworkInfoV1&
+ GetHomeNetworkInfo(TBool& aHomeNwInfoAvailableFlag);
+
+ /**
+ * Find country & city tags id
+ * @param aQuery query type for the tag
+ * @param aCountryTagId country tag Id
+ * @param aCityTagId city tag Id
+ */
+ void FindCountryAndCityTagL( CMdEQuery& aQuery, TItemId& aCountryTagId, TItemId& aCityTagId );
+
+#endif // LOC_REVERSEGEOCODE
+
+ /**
+ * Handle n/w related information on taken photograph
+ *
+ */
+ void NetworkInfoSnapshotL();
+
+ /**
+ * Find location from DB within the non leaving method
+ */
+ void HandleFindLocationFromDB();
+
+ /**
+ * handle MDS query failure sceenario
+ */
+ void HandleQueryFailure();
+
+
private:
+ enum TRemapState
+ {
+ ERemapProgressNone = 0x00,
+ ERemapRevGeoCodeInProgress,
+ ERemapRevGeoCodePending,
+ ERemapNwGeoConverterInProgress,
+ ERemapNwGeoConverterPending
+ };
/**
* A session to Metadata Engine for creating and manipulating location objects.
*/
@@ -309,7 +618,7 @@
* An array to collect location values.
* Own.
*/
- RArray<TLocationTrailItem> iTrail;
+ RPointerArray<TLocationTrailItem> iTrail;
/**
* P&S key property.
@@ -321,7 +630,7 @@
* Active class to get network information.
* Own.
*/
- CNetworkInfo* iNetworkInfo;
+ CNetworkInfo* iNetworkInfoChangeListener;
/**
* Active class to get position information.
@@ -357,14 +666,10 @@
TBool iRequestCurrentLoc;
TBool iTrailStarted;
- TUint iLastNumberOfSatellitesUsed;
- TReal32 iLastHDOP;
- TReal32 iLastVDOP;
TBool iLastGPSFixState;
TInt iLocationDelta;
TLocationData iLastLocation;
- TItemId iLastLocationId;
TItemId iObjectId;
TLocationData iLocationData;
@@ -373,6 +678,78 @@
* This query object is used to find existing locations
*/
CMdEObjectQuery* iLocationQuery;
+
+
+ /**
+ * Net location query
+ */
+ CMdEObjectQuery* iNetLocationQuery;
+
+
+ TRemapState iRemapState;
+
+
+ /**
+ * Database definitions.
+ */
+ CMdENamespaceDef* iNamespaceDef;
+ CMdEObjectDef* iLocationObjectDef;
+ CMdEPropertyDef* iLatitudeDef;
+ CMdEPropertyDef* iLongitudeDef;
+ CMdEPropertyDef* iAltitudeDef;
+
+ /**
+ * An array to collect downloaded object
+ * and its location details.
+ */
+ RPointerArray<TLocationSnapshotItem> iMediaItems;
+
+ TLocationSnapshotItem iLastMediaItem;
+
+ TInt iMediaHandlingFlag;
+ RMobilePhone& iPhone;
+
+ /*
+ * Flag to track GPS data availability to update camera location icon.
+ */
+ TBool iGpsDataAvailableFlag;
+
+ MGeoTaggerObserver& iGeoTaggerObserver;
+
+#ifdef LOC_GEOTAGGING_CELLID
+ /*
+ * Geo converter
+ */
+ CGeoConverter* iGeoConverter;
+ TBool iConvertRetry;
+#endif
+
+#ifdef LOC_REVERSEGEOCODE
+
+ TConnectionOption iConnectionOption;
+
+ /**
+ * query object for getting an image/video object
+ */
+ CMdERelationQuery* iImageQuery;
+ /**
+ * query object for getting country and city tags
+ */
+ CMdERelationQuery* iTagQuery;
+ TLocationSnapshotItem iLastLocationItem;
+ RPointerArray<TLocationSnapshotItem> iLocationItems;
+ /**
+ * to create/attach tags
+ */
+ CTagCreator *iTagCreator;
+ /*
+ * Reverse geo coder plugin object
+ */
+ CReverseGeoCoderPlugin* iRevGeocoderPlugin;
+ TUid iDtorKey;
+
+#endif
+
};
#endif // C_CLOCATIONRECORD_H
--- a/locationmanager/locationtrail/inc/cnetworkinfo.h Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/locationtrail/inc/cnetworkinfo.h Tue Jul 06 14:44:37 2010 +0300
@@ -20,6 +20,8 @@
#define C_CNETWORKINFO_H
#include <etel3rdparty.h>
+#include <etel.h>
+#include <etelmm.h>
/**
* An observer interface, which is used for getting current network cell id.
@@ -34,6 +36,12 @@
* location trail.
*/
virtual void NetworkInfo( const CTelephony::TNetworkInfoV1 &aNetworkInfo, const TInt aError ) = 0;
+
+ /**
+ * Get mobile phone object for network info object
+ * @return mobile phone object
+ */
+ virtual RMobilePhone& GetMobilePhone4NwInfo() = 0;
};
/**
@@ -55,6 +63,33 @@
*/
IMPORT_C virtual ~CNetworkInfo();
+ /**
+ * Listen to n/w info change
+ * @since S60 9.2
+ */
+ IMPORT_C void StartNwInfoChangeNotifier();
+
+ /**
+ * Stop n/w info change listener
+ * @since S60 9.2
+ */
+ IMPORT_C void StopNwInfoChangeNotifier();
+
+ /**
+ * Map etel to ctelephony
+ * @since S60 9.2
+ */
+ IMPORT_C static void MapNetworkInfo(CTelephony::TNetworkInfoV1* aISVNetworkInfo,
+ RMobilePhone::TMobilePhoneNetworkInfoV2* aMMNetworkInfo,
+ RMobilePhone::TMobilePhoneLocationAreaV1* aMMArea);
+
+ /*
+ * Get registrer network country code
+ *
+ * @return current register n/w info
+ */
+ RMobilePhone::TMobilePhoneNetworkInfoV2& GetCurrentRegisterNw();
+
protected:
/**
* Run error implementation in case of RunL leaving.
@@ -85,6 +120,13 @@
void RunL();
private:
+ typedef enum
+ {
+ ENetworkInfoNoOptState = 0x00,
+ ENetworkInfoOptGetState,
+ ENetworkInfoOptNotifyState
+ }TNetworkInfoOptState;
+
/**
* An observer interface to set current cell id to the location trail.
* Not own.
@@ -92,18 +134,23 @@
MNetworkInfoObserver* iTrail;
/**
- * Flag to indicate that we retrieve network info for the first time.
+ * phone object to retrieve modem parameters
*/
- TBool iFirstTime;
-
+ RMobilePhone& iMobilePhone;
+
/**
- * Interface to phone's telephony system to get Cell Id.
- * Own.
- */
- CTelephony* iTelephony;
-
+ * Maintain the operation state.
+ */
+ TNetworkInfoOptState iState;
+
+ /*
+ * Retained this object just to give backward compatibility
+ */
CTelephony::TNetworkInfoV1 iNetworkInfoV1;
- CTelephony::TNetworkInfoV1Pckg iNetworkInfoV1Pckg;
+
+ RMobilePhone::TMobilePhoneNetworkInfoV2 iMMNetworkInfo;
+ RMobilePhone::TMobilePhoneNetworkInfoV2Pckg iMMNetworkInfoPckg;
+ RMobilePhone::TMobilePhoneLocationAreaV1 iMMArea;
};
#endif // C_CNETWORKINFO_H
--- a/locationmanager/locationtrail/inc/cpositioninfo.h Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/locationtrail/inc/cpositioninfo.h Tue Jul 06 14:44:37 2010 +0300
@@ -82,7 +82,12 @@
* @return None.
*/
void Stop();
-
+
+ /**
+ * Handle remap completed event
+ * @since S60 9.2
+ */
+ void HandleRemapComplete();
protected:
/**
* Run error implementation in case of RunL leaving.
@@ -113,6 +118,12 @@
void RunL();
private:
+ typedef enum
+ {
+ EPositionOptStateNone = 0x00,
+ EPositionOptStateGetLastKnownPosition,
+ EPositionOptStateNotifyUpdate
+ }TPositionOptState;
/**
* An observer interface to set current position to the location trail.
* Not own.
@@ -137,7 +148,8 @@
TInt iUpdateInterval;
- TBool iFirstInterval;
+ TPositionOptState iState;
+ TBool iConnectedPositionServer;
};
#endif // C_CPOSITIONINFO_H
--- a/locationmanager/locationtrail/inc/locationremappingao.h Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/locationtrail/inc/locationremappingao.h Tue Jul 06 14:44:37 2010 +0300
@@ -28,7 +28,9 @@
#include "rlocationtrail.h"
#include "locationmanagerdebug.h"
#include "locationtraildefs.h"
-
+#ifdef LOC_REVERSEGEOCODE
+#include "ctagcreator.h"
+#endif
class TRemapItem
{
@@ -128,6 +130,19 @@
* @param aLocationId, locationId for relations
*/
void UpdateRelationsL( TItemId aLocationId );
+
+#ifdef LOC_REVERSEGEOCODE
+ /**
+ * AttachGeoTagsL
+ * Attaches the country and city tags to all objects
+ * @param aTagCreator An instance of the tag creator
+ * @param aCountryTagId country tagId
+ * @param aCityTagId city tag Id
+ */
+ void AttachGeoTagsL( CTagCreator *aTagCreator,
+ const TItemId aCountryTagId,
+ const TItemId aCityTagId );
+#endif
private:
/**
@@ -245,3 +260,5 @@
#endif /*LOCATIONREMAPPINGAO_H_*/
+
+// End of file
--- a/locationmanager/locationtrail/src/cgpxconverterao.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/locationtrail/src/cgpxconverterao.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -22,6 +22,7 @@
#include "locationmanagerdebug.h"
// ---------------------------------------------------------------------------
+// CGpxConverterAO::CGpxConverterAO()
// Default constructor.
// ---------------------------------------------------------------------------
//
@@ -32,6 +33,7 @@
}
// ---------------------------------------------------------------------------
+// CGpxConverterAO::NewL
// Standard NewL for first phase construction.
// ---------------------------------------------------------------------------
//
@@ -46,18 +48,19 @@
}
// ---------------------------------------------------------------------------
+// CGpxConverterAO::ConstructL
// 2nd phase construction.
// ---------------------------------------------------------------------------
//
void CGpxConverterAO::ConstructL()
{
- LOG( "CGpxConverterAO::ConstructL" );
+ LOG( "CGpxConverterAO::ConstructL ,begin" );
CActiveScheduler::Add( this );
User::LeaveIfError( iFs.Connect() );
iWriteBuf = HBufC8::NewL( KWriteBufSize );
iFormatBuf = HBufC::NewL( KWriteBufSize );
-
+ LOG( "CGpxConverterAO::ConstructL ,end" );
}
// ---------------------------------------------------------------------------
@@ -66,7 +69,7 @@
//
CGpxConverterAO::~CGpxConverterAO()
{
- LOG( "CGpxConverterAO::~CGpxConverterAO" ); // DEBUG INFO
+ LOG( "CGpxConverterAO::~CGpxConverterAO ,begin" );
Cancel();
iFs.Close();
@@ -83,9 +86,12 @@
delete iWriteBuf;
delete iFormatBuf;
+
+ LOG( "CGpxConverterAO::~CGpxConverterAO ,end" );
}
// ---------------------------------------------------------------------------
+// CGpxConverterAO::RunError
// From CActive.
// ---------------------------------------------------------------------------
//
@@ -100,6 +106,7 @@
}
// ---------------------------------------------------------------------------
+// CGpxConverterAO::DoCancel
// From CActive.
// ---------------------------------------------------------------------------
//
@@ -108,13 +115,15 @@
LOG( "CGpxConverterAO::DoCancel" );
}
-/**
- * Adds temp-file and possible pre-calculated boundaries
- * into processing queue
- */
+// ---------------------------------------------------------------------------
+// CGpxConverterAO::AddToQueueL
+// Adds temp-file and possible pre-calculated boundaries
+// into processing queue
+// ---------------------------------------------------------------------------
+//
void CGpxConverterAO::AddToQueueL( const TDesC& aFileName, TBoundaries* aBoundaries )
{
- LOG("CGpxConverterAO::AddToQueueL");
+ LOG("CGpxConverterAO::AddToQueueL ,begin");
TFileName *filename = new (ELeave) TFileName(aFileName);
CleanupStack::PushL( filename );
iFileQueue.AppendL( filename );
@@ -125,11 +134,15 @@
{
SetState( ENextFile );
}
+
+ LOG("CGpxConverterAO::AddToQueueL ,end");
}
-/**
- * Set next state for RunL
- */
+
+ // ---------------------------------------------------------------------------
+ // CGpxConverterAO::SetState
+ // Set next state for RunL
+ // ---------------------------------------------------------------------------
void CGpxConverterAO::SetState( TProcessingState aState )
{
LOG1( "CGpxConverterAO::SetState: %d", aState );
@@ -141,11 +154,13 @@
TRequestStatus* ptrStatus = &iStatus;
User::RequestComplete( ptrStatus, KErrNone );
}
+ LOG("CGpxConverterAO::SetState ,end");
}
-/**
- * RunL
- */
+
+ // ---------------------------------------------------------------------------
+ // CGpxConverterAO::RunL()
+ // ---------------------------------------------------------------------------
void CGpxConverterAO::RunL()
{
switch( iState )
@@ -310,12 +325,14 @@
}
}
-/**
- * Read Tag Id from temp-file
- */
+
+ // ---------------------------------------------------------------------------
+ // CGpxConverterAO::ReadTagIdL
+ // Read Tag Id from temp-file
+ // ---------------------------------------------------------------------------
void CGpxConverterAO::ReadTagIdL()
{
- LOG("CGpxConverterAO::ReadTagIdL");
+ LOG("CGpxConverterAO::ReadTagIdL ,begin");
TUint32 low( 0 );
TUint32 high( 0 );
@@ -323,11 +340,15 @@
high = iReader.ReadUint32L();
iTagId = MAKE_TINT64( high, low );
+
+ LOG("CGpxConverterAO::ReadTagIdL ,end");
}
-/**
- * Calculate min and max coordinates for tracklog
- */
+
+ // ---------------------------------------------------------------------------
+ // CGpxConverterAO::CalculateBoundaries
+ // Calculate min and max coordinates for tracklog
+ // ---------------------------------------------------------------------------
void CGpxConverterAO::CalculateBoundaries()
{
LOG("CGpxConverterAO::CalculateBoundaries start");
@@ -372,11 +393,14 @@
LOG("CGpxConverterAO::CalculateBoundaries end");
}
-/**
- * Writes header tags for GPX file
- */
+
+ // ---------------------------------------------------------------------------
+ // CGpxConverterAO::WriteStartingTags
+ // Writes header tags for GPX file
+ // ---------------------------------------------------------------------------
void CGpxConverterAO::WriteStartingTags()
{
+ LOG("CGpxConverterAO::WriteStartingTags ,begin");
TPtr8 writePtr = iWriteBuf->Des();
TPtr formatter = iFormatBuf->Des();
@@ -411,13 +435,17 @@
writePtr.Copy( KTagTrackStart );
iGpxFile.Write( writePtr );
+ LOG("CGpxConverterAO::WriteStartingTags ,end");
}
-/**
- * Writes single trackpoint to GPX file
- */
+
+ // ---------------------------------------------------------------------------
+ // CGpxConverterAO::WriteItemToFile
+ // Writes single trackpoint to GPX file
+ // ---------------------------------------------------------------------------
void CGpxConverterAO::WriteItemToFile()
{
+ LOG("CGpxConverterAO::WriteItemToFile ,begin");
TTime timeStamp;
TPtr8 writePtr = iWriteBuf->Des();
@@ -503,14 +531,16 @@
writePtr.Copy( KTagTrkPointEnd );
iGpxFile.Write( writePtr );
}
-
+ LOG("CGpxConverterAO::WriteItemToFile ,end");
}
-/**
- * Close GPX file
- */
+ // ---------------------------------------------------------------------------
+ // CGpxConverterAO::WriteClosingTags
+ // Close GPX file
+ // ---------------------------------------------------------------------------
void CGpxConverterAO::WriteClosingTags()
{
+ LOG("CGpxConverterAO::WriteClosingTags ,begin");
TPtr8 writePtr = iWriteBuf->Des();
// end segment
@@ -525,11 +555,14 @@
writePtr.Append( KTagGpxEnd );
iGpxFile.Write( writePtr );
+ LOG("CGpxConverterAO::WriteClosingTags ,end");
}
-/**
- * Resolve where to save tracklog file
- */
+
+ // ---------------------------------------------------------------------------
+ // CGpxConverterAO::GetTrackLogPathL
+ // Resolve where to save tracklog file
+ // ---------------------------------------------------------------------------
void CGpxConverterAO::GetTrackLogPathL( TDes& aFileName )
{
LOG("CGpxConverterAO::GetTrackLogPathL start");
@@ -560,11 +593,15 @@
LOG("CGpxConverterAO::GetTrackLogPathL end");
}
-/**
- * Adds observer for GPX file creation notifications
- */
+
+ // ---------------------------------------------------------------------------
+ // CGpxConverterAO::AddObserver
+ // Adds observer for GPX file creation notifications
+ // ---------------------------------------------------------------------------
void CGpxConverterAO::AddObserver( MGpxConversionObserver* aObserver )
{
iObservers.Append( aObserver );
}
+
+//End of File
--- a/locationmanager/locationtrail/src/clocationrecord.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/locationtrail/src/clocationrecord.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -18,6 +18,9 @@
#include <e32cmn.h>
#include <lbserrors.h>
#include <lbssatellite.h>
+#include <ecom.h>
+#include <centralrepository.h>
+#include <hwrmpowerstatesdkpskeys.h>
#include "rlocationtrail.h"
#include "clocationrecord.h"
@@ -26,30 +29,50 @@
#include "locationtraildefs.h"
#include "locationtrailpskeys.h"
#include "mdeconstants.h"
-#include <centralrepository.h>
-#include <hwrmpowerstatesdkpskeys.h>
+#ifdef LOC_REVERSEGEOCODE
+#include "reversegeocoderplugin.h"
+const TUid KReverseGeoCodeUid = {0x2002DD12};
+#endif
using namespace MdeConstants;
+const TUint KNetQueryBit = 1; // 1 bit
+const TUint KDownloadMediaFile = 2; // 2 bit
+const TUint KSnapMediaFile = 4; // 3 bit
+const TUint KLocationQueryInProgress = 1; // 1 bit
+#ifdef LOC_REVERSEGEOCODE
+const TUint KReverseGeoCodingInProgress = 2; // 2 bit
+_LIT ( KCountry, "country:"); // country:india
+_LIT ( KCity, "city:"); // city:bangalore|country:india
+#endif
+const TUint KSnapGeoConvertInProgress = 4; // 3 bit
+#ifdef LOC_GEOTAGGING_CELLID
+const TUint KSnapGeoConvertInPendingState = 8; // 4 bit
+#endif
+
+
+
// --------------------------------------------------------------------------
// CLocationRecord::NewL
// --------------------------------------------------------------------------
//
-EXPORT_C CLocationRecord* CLocationRecord::NewL()
+EXPORT_C CLocationRecord* CLocationRecord::NewL(MGeoTaggerObserver& aGeoTaggerObserver,
+ RMobilePhone& aPhone)
{
- CLocationRecord* self = new (ELeave) CLocationRecord();
+ CLocationRecord* self = new (ELeave) CLocationRecord(aGeoTaggerObserver, aPhone);
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop( self );
return self;
}
-
+
// --------------------------------------------------------------------------
// CLocationRecord::CLocationRecord
// --------------------------------------------------------------------------
//
-CLocationRecord::CLocationRecord()
+CLocationRecord::CLocationRecord(MGeoTaggerObserver& aGeoTaggerObserver,
+ RMobilePhone& aPhone)
: iNetworkInfoTimer( NULL ),
iState( RLocationTrail::ETrailStopped ),
iTrailCaptureSetting( RLocationTrail::ECaptureAll ),
@@ -57,7 +80,29 @@
iRequestCurrentLoc( EFalse ),
iTrailStarted( EFalse ),
iLastGPSFixState( EFalse ),
- iLastLocationId( 0 )
+ iLocationQuery(NULL),
+ iNetLocationQuery(NULL),
+ iRemapState( ERemapProgressNone),
+ iNamespaceDef(NULL),
+ iLocationObjectDef(NULL),
+ iLatitudeDef(NULL),
+ iLongitudeDef(NULL),
+ iAltitudeDef(NULL),
+ iMediaHandlingFlag(0),
+ iPhone(aPhone),
+ iGpsDataAvailableFlag(EFalse),
+ iGeoTaggerObserver(aGeoTaggerObserver)
+#ifdef LOC_GEOTAGGING_CELLID
+ ,iGeoConverter(NULL)
+ , iConvertRetry(ETrue)
+#endif
+#ifdef LOC_REVERSEGEOCODE
+ ,iConnectionOption(ESilent)
+ ,iImageQuery(NULL)
+ ,iTagQuery(NULL)
+ ,iTagCreator( NULL )
+ ,iRevGeocoderPlugin( NULL )
+#endif
{
iMaxTrailSize = KMaxTrailLength / KUpdateInterval;
}
@@ -68,6 +113,7 @@
//
void CLocationRecord::ConstructL()
{
+ LOG( "CLocationRecord::ConstructL(), begin" );
const TInt KMillion = 1000000;
TInt err = iProperty.Define( KPSUidLocationTrail, KLocationTrailState, RProperty::EInt );
if ( err != KErrNone && err != KErrAlreadyExists )
@@ -77,18 +123,36 @@
User::LeaveIfError( iProperty.Set( KPSUidLocationTrail,
KLocationTrailState, (TInt) RLocationTrail::ETrailStopped ) );
- iNetworkInfo = CNetworkInfo::NewL( this );
+
+ iNetworkInfoChangeListener = CNetworkInfo::NewL( this );
iPositionInfo = CPositionInfo::NewL( this );
iRemapper = CLocationRemappingAO::NewL();
iNetworkInfoTimer = CPeriodic::NewL( CActive::EPriorityStandard );
-
+
+#ifdef LOC_REVERSEGEOCODE
+ iTagCreator = CTagCreator::NewL();
+
+
+ if (!iRevGeocoderPlugin)
+ {
+ iRevGeocoderPlugin = reinterpret_cast<CReverseGeoCoderPlugin*>(
+ REComSession::CreateImplementationL(KReverseGeoCodeUid,iDtorKey));
+ if(iRevGeocoderPlugin)
+ {
+ iRevGeocoderPlugin->AddObserverL(*this);
+ }
+ }
+
+ #endif
+
+
TInt interval( 0 );
TRAP(err, ReadCenRepValueL(KIntervalKey, interval));
- LOG1("CLocationManagerServer::ConstructL, cenrep interval value:%d", interval);
+ LOG1("Cenrep interval value:%d", interval);
if (interval == 0 || err != KErrNone )
{
- LOG1("CLocationManagerServer::ConstructL, cenrep interval err:%d", err);
+ LOG1("Cenrep interval err:%d", err);
iInterval = KUpdateInterval;
}
else
@@ -97,14 +161,25 @@
}
TRAP(err, ReadCenRepValueL(KLocationDeltaKey, iLocationDelta));
- LOG1("CLocationManagerServer::ConstructL, location delta value:%d", iLocationDelta);
+ LOG1("Location delta value:%d", iLocationDelta);
if (iLocationDelta == 0)
{
- LOG1("CLocationManagerServer::ConstructL, location delta err:%d", err);
+ LOG1("Location delta err:%d", err);
iLocationDelta = KLocationDelta;
}
+ iLastMediaItem.iFlag = 0;
+ iLastMediaItem.iLocationId = 0;
+#ifdef LOC_REVERSEGEOCODE
+ iLastMediaItem.iCityTagId= 0;
+ iLastMediaItem.iCountryTagId = 0;
+ iLastLocationItem.iFlag = 0;
+ iLastLocationItem.iCityTagId= 0;
+ iLastLocationItem.iCountryTagId = 0;
+ iLastLocationItem.iLocationId = 0;
+#endif
+ LOG( "CLocationRecord::ConstructL(), end" );
}
// --------------------------------------------------------------------------
@@ -113,19 +188,72 @@
//
EXPORT_C CLocationRecord::~CLocationRecord()
{
+ LOG( "CLocationRecord::~CLocationRecord(), begin" );
Stop();
iProperty.Delete( KPSUidLocationTrail, KLocationTrailState );
iProperty.Close();
+ iTrail.ResetAndDestroy();
iTrail.Close();
-
- delete iNetworkInfo;
+ iMediaItems.ResetAndDestroy();
+ iMediaItems.Close();
+#ifdef LOC_REVERSEGEOCODE
+ iLocationItems.ResetAndDestroy();
+ iLocationItems.Close();
+#endif
+ delete iNetworkInfoChangeListener;
delete iPositionInfo;
delete iNetworkInfoTimer;
- if (iRemapper)
+#ifdef LOC_GEOTAGGING_CELLID
+ if(iGeoConverter)
+ {
+ delete iGeoConverter;
+ iGeoConverter = NULL;
+ }
+#endif
+ if (iRemapper)
{
iRemapper->StopRemapping();
delete iRemapper;
}
+ if(iLocationQuery)
+ {
+ iLocationQuery->RemoveObserver(*this);
+ iLocationQuery->Cancel();
+ delete iLocationQuery;
+ iLocationQuery = NULL;
+ }
+
+if(iNetLocationQuery)
+ {
+ iNetLocationQuery->RemoveObserver(*this);
+ iNetLocationQuery->Cancel();
+ delete iNetLocationQuery;
+ iNetLocationQuery = NULL;
+ }
+
+
+#ifdef LOC_REVERSEGEOCODE
+ if(iImageQuery)
+ {
+ iImageQuery->RemoveObserver(*this);
+ iImageQuery->Cancel();
+ delete iImageQuery;
+ iImageQuery = NULL;
+ }
+ if(iTagQuery)
+ {
+ iTagQuery->RemoveObserver(*this);
+ iTagQuery->Cancel();
+ delete iTagQuery;
+ iTagQuery = NULL;
+ }
+ delete iTagCreator;
+ // set the pointer to NULL, ECOM will destroy object.
+ delete iRevGeocoderPlugin;
+ iRevGeocoderPlugin = NULL;
+ REComSession::DestroyedImplementation(iDtorKey);
+#endif
+ LOG( "CLocationRecord::~CLocationRecord(), end" );
}
// --------------------------------------------------------------------------
@@ -145,12 +273,17 @@
{
LOG( "CLocationRecord::StartL(), begin" );
iTrailCaptureSetting = aCaptureSetting;
+ iGpsDataAvailableFlag = EFalse;
if ( aCaptureSetting == RLocationTrail::ECaptureAll && !iPositionInfo->IsActive() )
{
if( iState == RLocationTrail::ETrailStopped )
{
- iTrail.Reset();
+ iTrail.ResetAndDestroy();
}
+ // Capture at least one location with n/w info else we wouldn't be able to tag the immediate taken photograph
+ // incase LBS didn't provide any valid position data. Without this there may be a leave from GetLocationByTimeL
+ // method while calling this from LocationSnapshotL method
+ UpdateNetworkInfo( this );
iPositionInfo->StartL( aCaptureSetting, iInterval );
}
else if ( aCaptureSetting == RLocationTrail::ECaptureNetworkInfo )
@@ -167,11 +300,9 @@
StartTimerL();
}
- iLastLocationId = 0;
-
+ iTrailStarted = ETrue;
SetCurrentState( RLocationTrail::ETrailStarting );
- iTrailStarted = ETrue;
LOG( "CLocationRecord::StartL(), end" );
}
@@ -183,8 +314,8 @@
{
LOG( "CLocationRecord::StopL(), begin" );
iPositionInfo->Stop();
+ iGpsDataAvailableFlag = EFalse;
iTrailStarted = EFalse;
-
if ( iNetworkInfoTimer && iNetworkInfoTimer->IsActive() )
{
iNetworkInfoTimer->Cancel();
@@ -224,22 +355,22 @@
LOG1( "CLocationRecord::GetLocationByTimeL - aTime: %Ld", aTime.Int64() );
TBuf<DateTimeStrMaxLength> str1;
aTime.FormatL( str1, KDateTimeFormat );
- LOG1( "CLocationRecord::GetLocationByTimeL - aTime: %S", &str1 );
+ // LOG1( "CLocationRecord::GetLocationByTimeL - aTime: %S", &str1 );
#endif
TTimeIntervalSeconds interval;
TTimeIntervalSeconds nextInterval;
for ( TInt i(iTrail.Count()-1) ; i >= 0 && !posFound ; i-- )
{
- TInt err = iTrail[i].iTimeStamp.SecondsFrom( aTime, interval );
+ TInt err = iTrail[i]->iTimeStamp.SecondsFrom( aTime, interval );
TInt timeDiff = Abs( interval.Int() );
#ifdef _DEBUG
- LOG1( "CLocationRecord::GetLocationByTimeL - Trail timestamp: %Ld", iTrail[i].iTimeStamp.Int64() );
+ LOG1( "CLocationRecord::GetLocationByTimeL - Trail timestamp: %Ld", iTrail[i]->iTimeStamp.Int64() );
TBuf<DateTimeStrMaxLength> str;
- iTrail[i].iTimeStamp.FormatL( str, KDateTimeFormat );
- LOG1( "CLocationRecord::GetLocationByTimeL - Trail timestamp: %S", &str );
+ iTrail[i]->iTimeStamp.FormatL( str, KDateTimeFormat );
+ //LOG1( "CLocationRecord::GetLocationByTimeL - Trail timestamp: %S", &str );
LOG1( "CLocationRecord::GetLocationByTimeL - timeDiff: %d", timeDiff );
#endif
@@ -248,25 +379,25 @@
// The nearest time is in iTrail[i] or in iTrail[i-1].
if ( i > 0 )
{
- iTrail[i-1].iTimeStamp.SecondsFrom( aTime, nextInterval );
+ iTrail[i-1]->iTimeStamp.SecondsFrom( aTime, nextInterval );
TInt nextDiff = Abs( nextInterval.Int() );
if ( nextDiff < timeDiff )
{
- aLocationData = iTrail[i-1].iLocationData;
- aState = iTrail[i-1].iTrailState;
+ aLocationData = iTrail[i-1]->iLocationData;
+ aState = iTrail[i-1]->iTrailState;
}
else
{
- aLocationData = iTrail[i].iLocationData;
- aState = iTrail[i].iTrailState;
+ aLocationData = iTrail[i]->iLocationData;
+ aState = iTrail[i]->iTrailState;
}
}
else
{
- aLocationData = iTrail[i].iLocationData;
- aState = iTrail[i].iTrailState;
+ aLocationData = iTrail[i]->iLocationData;
+ aState = iTrail[i]->iTrailState;
}
posFound = ETrue;
}
@@ -284,11 +415,15 @@
//
EXPORT_C void CLocationRecord::RequestLocationL()
{
+ LOG( "CLocationRecord::RequestLocationL(), begin" );
iRequestCurrentLoc = ETrue;
if ( iTrailCaptureSetting != RLocationTrail::ECaptureNetworkInfo &&
!iPositionInfo->IsActive() )
{
iPositionInfo->StartL( iTrailCaptureSetting, iInterval );
+ SetCurrentState( RLocationTrail::ETrailStarting );
+
+ iTrailStarted = ETrue;
}
else if ( iTrailCaptureSetting == RLocationTrail::ECaptureNetworkInfo )
{
@@ -298,6 +433,7 @@
iObserver->CurrentLocation( posInfo, network, KErrNone );
iRequestCurrentLoc = EFalse;
}
+ LOG( "CLocationRecord::RequestLocationL(), end" );
}
// --------------------------------------------------------------------------
@@ -306,11 +442,14 @@
//
EXPORT_C void CLocationRecord::CancelLocationRequest()
{
+ LOG( "CLocationRecord::CancelLocationRequest(), begin" );
iRequestCurrentLoc = EFalse;
if ( !iTrailStarted )
{
+ iGpsDataAvailableFlag = EFalse;
iPositionInfo->Stop();
}
+ LOG( "CLocationRecord::CancelLocationRequest(), end" );
}
@@ -351,6 +490,7 @@
void CLocationRecord::Position( const TPositionInfo& aPositionInfo,
const TInt aError )
{
+ LOG( "CLocationRecord::Position(), begin" );
const TPositionSatelliteInfo& positionSatelliteInfo =
static_cast<const TPositionSatelliteInfo&>(aPositionInfo);
@@ -358,56 +498,59 @@
{
HandleLocationRequest( positionSatelliteInfo, aError );
}
- if( iState == RLocationTrail::ETrailStopped )
- {
- LOG("CLocationRecord::Position - trail stopped");
- return;
- }
+
+ iGpsDataAvailableFlag = EFalse;
- if ( !iTrailStarted )
+ if ( !iTrailStarted || iState == RLocationTrail::ETrailStopped)
{
- iPositionInfo->NextPosition();
+ LOG("trail not started/stopped");
+ iPositionInfo->Stop();
return;
}
+ // all cases store the location..
+ StoreLocation( positionSatelliteInfo );
+
+ if ( RemappingNeeded() )
+ {
+ //either network or gps signal is available
+ if ( ( iNetwork.iCellId != 0 &&
+ iNetwork.iCountryCode.Length() != 0 &&
+ iNetwork.iNetworkId.Length() != 0 ) || ( aError == KErrNone ) )
+ {
+ //no error means gps info available
+ TRAP_IGNORE( RemapObjectsL( aError == KErrNone ) );
+ }
+ }
switch ( aError )
{
case KPositionPartialUpdate: // fall through
case KPositionQualityLoss:
{
// Location is stored, even if it may not be valid.
- StoreLocation( positionSatelliteInfo );
- LOG("CLocationRecord::Position - partial update");
+ LOG("Partial update");
if ( iState != RLocationTrail::EWaitingGPSData &&
iState != RLocationTrail::ETrailStopping )
{
SetCurrentState( RLocationTrail::EWaitingGPSData );
- LOG("CLocationRecord::Position trail waiting for gps");
+ LOG("Trail waiting for gps");
}
break;
}
case KErrNone:
{
- StoreLocation( positionSatelliteInfo );
- LOG("CLocationRecord::Position - good GPS coordinates");
+ LOG("Good GPS coordinates");
+ iGpsDataAvailableFlag = ETrue;
if ( iState != RLocationTrail::ETrailStarted )
{
if ( iRemapper )
{
- LOG("CLocationRecord::Position start remapping");
- iLastLocationId = 0;
- TBool createLocation = iRemapper->CheckQueue();
- if( createLocation )
- {
- TRAP_IGNORE(
- TItemId locationId = DoCreateLocationL( iNewItem.iLocationData );
- iRemapper->UpdateRelationsL( locationId );
- )
- }
+ LOG("Start remapping");
iRemapper->StartRemappingObjects( iNewItem.iLocationData );
if( iObserver->WaitForPositioningStopTimeout() && !RemappingNeeded() )
{
iObserver->RemapedCompleted();
+ iPositionInfo->HandleRemapComplete();
return;
}
@@ -415,47 +558,135 @@
if ( iState != RLocationTrail::ETrailStopping )
{
SetCurrentState( RLocationTrail::ETrailStarted );
- LOG("CLocationRecord::Position trail started");
+ LOG("Trail started");
}
}
break;
}
default:
{
- StoreLocation( positionSatelliteInfo );
- LOG1("CLocationRecord::Position - searching GPS, aError %d", aError );
+ LOG1("Searching GPS, aError %d", aError );
if ( iState != RLocationTrail::ESearchingGPS &&
iState != RLocationTrail::ETrailStopping )
{
SetCurrentState( RLocationTrail::ESearchingGPS );
- LOG("CLocationRecord::Position trail searching gps");
+ LOG("Trail searching gps");
}
break;
}
}
TBool fixState = CheckGPSFix( positionSatelliteInfo );
- LOG1( "CLocationRecord::Position fixState %d", fixState );
- LOG1( "CLocationRecord::Position iLastGPSFixState %d", iLastGPSFixState );
+ LOG1( "fixState %d", fixState );
+ LOG1( "iLastGPSFixState %d", iLastGPSFixState );
if ( iObserver && iLastGPSFixState != fixState )
{
- LOG("CLocationRecord::Position quality changed");
+ LOG("Quality changed");
iObserver->GPSSignalQualityChanged( positionSatelliteInfo );
}
iLastGPSFixState = fixState;
- iPositionInfo->NextPosition();
+ LOG( "CLocationRecord::Position(), end" );
+ }
+
+
+// --------------------------------------------------------------------------
+// CLocationRecord::RemapObjectsL
+// Remaps the location objects when GPS is available
+// --------------------------------------------------------------------------
+//
+void CLocationRecord::RemapObjectsL( TBool aGPSInfoAvailable )
+ {
+ LOG( "CLocationRecord::RemapObjectsL(), begin" );
+ TBool createLocation = EFalse;
+
+ if (iRemapper)
+ {
+ createLocation = iRemapper->CheckQueue();
+ }
+
+ if ( !createLocation || iRemapper == NULL)
+ {
+ return;
+ }
+
+
+ if ( aGPSInfoAvailable )
+ {
+ TItemId locationId = DoCreateLocationL( iNewItem.iLocationData );
+ iRemapper->UpdateRelationsL( locationId );
+#ifdef LOC_REVERSEGEOCODE
+ if(!(iMediaHandlingFlag & KReverseGeoCodingInProgress))
+ {
+ iRemapState = ERemapRevGeoCodeInProgress;
+ //Find the address by coordinate, results a call to ReverseGeocodeComplete()
+ iMediaHandlingFlag |= KReverseGeoCodingInProgress;
+
+ if(iRevGeocoderPlugin)
+ {
+ iRevGeocoderPlugin->GetAddressByCoordinateL( iNewItem.iLocationData.iPosition, iConnectionOption );
+ }
+ }
+ else
+ {
+ // make this as pending state so that on rev geo code complete
+ // it will take the priority over the next item within the location
+ // item in location queue.
+ iRemapState = ERemapRevGeoCodePending;
+ }
+#endif //LOC_REVERSEGEOCODE
+ }
+ else
+ {
+ //call location m/w API to convert cell ID to lat, long
+#ifdef LOC_GEOTAGGING_CELLID
+ if((iMediaHandlingFlag & KSnapGeoConvertInProgress) > 0)
+ {
+ iRemapState = ERemapNwGeoConverterPending;
+ }
+ else
+ {
+ // go for cell id based geo coding.
+ iRemapState = ERemapNwGeoConverterInProgress;
+ if(iGeoConverter == NULL)
+ {
+ iGeoConverter = CGeoConverter::NewL(*this);
+ }
+ iGeoConverter->ConvertL(iNewItem.iLocationData.iNetworkInfo);
+ iMediaHandlingFlag |= KSnapGeoConvertInProgress;
+ }
+#endif
+ }
+#ifdef LOC_REVERSEGEOCODE
+ if((iMediaHandlingFlag & KSnapGeoConvertInProgress) > 0 ||
+ (iMediaHandlingFlag & KReverseGeoCodingInProgress) > 0)
+#else
+ if((iMediaHandlingFlag & KSnapGeoConvertInProgress) > 0 )
+#endif //LOC_REVERSEGEOCODE
+ {
+ // stop n/w info change listener, since device may connect to n/w
+ // and local trail will receive so many call backs on current n/w info change.
+ iNetworkInfoChangeListener->StopNwInfoChangeNotifier();
+ }
+ else
+ {
+ iNetworkInfoChangeListener->StartNwInfoChangeNotifier();
+ }
+ LOG( "CLocationRecord::RemapObjectsL(), end" );
+
}
TBool CLocationRecord::CheckGPSFix( const TPositionSatelliteInfo& aSatelliteInfo )
{
+ LOG("CLocationRecord::CheckGPSFix, begin");
TPosition position;
aSatelliteInfo.GetPosition( position );
- LOG1( "CLocationRecord::CheckGPSFix latitude %f", position.Latitude() );
- LOG1( "CLocationRecord::CheckGPSFix longitude %f", position.Longitude() );
+ LOG1( "latitude %f", position.Latitude() );
+ LOG1( "longitude %f", position.Longitude() );
TBool ret = ( Math::IsNaN(position.Latitude()) || Math::IsNaN(position.Longitude()) )
? EFalse : ETrue;
+ LOG1("CLocationRecord::CheckGPSFix, end. Ret - %d", ret);
return ret;
}
@@ -467,7 +698,7 @@
void CLocationRecord::NetworkInfo( const CTelephony::TNetworkInfoV1 &aNetworkInfo,
const TInt aError )
{
- LOG("CLocationRecord::NetworkInfo");
+ LOG("CLocationRecord::NetworkInfo, begin");
if ( aError == KErrNone )
{
LOG("CLocationRecord::NetworkInfo - KErrNone");
@@ -492,6 +723,17 @@
iNetwork.iCountryCode.Zero();
iNetwork.iNetworkId.Zero();
}
+ LOG( "CLocationRecord::NetworkInfo(), end" );
+ }
+
+// --------------------------------------------------------------------------
+// CLocationRecord::GetMobilePhone4NwInfo
+// --------------------------------------------------------------------------
+//
+RMobilePhone& CLocationRecord::GetMobilePhone4NwInfo()
+ {
+ LOG( "CLocationRecord::GetMobilePhone4NwInfo()" );
+ return iPhone;
}
// --------------------------------------------------------------------------
@@ -500,6 +742,7 @@
//
void CLocationRecord::StoreLocation( const TPositionSatelliteInfo& aSatelliteInfo )
{
+ LOG( "CLocationRecord::StoreLocation(), begin" );
aSatelliteInfo.GetPosition( iNewItem.iLocationData.iPosition );
aSatelliteInfo.GetCourse( iNewItem.iLocationData.iCourse );
iNewItem.iLocationData.iSatellites = aSatelliteInfo.NumSatellitesUsed();
@@ -511,7 +754,13 @@
iNewItem.iTimeStamp.UniversalTime();
iNewItem.iTrailState = iState;
- TInt error = iTrail.Append( iNewItem );
+ TLocationTrailItem *item = new TLocationTrailItem();
+ TInt error = KErrNone;
+ if(item != NULL)
+ {
+ *item = iNewItem;
+ error = iTrail.Append( item );
+ }
// If appending an item to the trail fails because of OOM, remove oldest trail items
// until the new item fits or there's only one item left in the trail.
@@ -519,18 +768,22 @@
{
LOG("CLocationRecord::StoreLocation - Out of memory! Shortening trail!");
iTrail.Remove( 0 );
- error = iTrail.Append( iNewItem );
+ error = iTrail.Append( item );
}
if ( iTrail.Count() > iMaxTrailSize )
{
+ item = iTrail[0];
iTrail.Remove( 0 );
+ iTrail.Compress();
+ delete item;
}
if( iAddObserver )
{
iAddObserver->LocationAdded( iNewItem, aSatelliteInfo );
}
+ LOG( "CLocationRecord::StoreLocation(), end" );
}
// --------------------------------------------------------------------------
@@ -541,7 +794,33 @@
{
LOG1( "CLocationRecord::SetCurrentState(), begin, state:%d", aState );
iState = aState;
- iProperty.Set( KPSUidLocationTrail, KLocationTrailState, (TInt) aState );
+ if( iTrailStarted )
+ {
+ // Set the property only when trail is started to avoid icon flickering and wrong icon update in UI
+ if( iGpsDataAvailableFlag ||
+ iNetwork.iCellId > 0 &&
+ ((iNetwork.iLocationAreaCode == 0 && iNetwork.iAccess == CTelephony::ENetworkAccessUtran) || // 3G
+ (iNetwork.iLocationAreaCode > 0 && (iNetwork.iAccess == CTelephony::ENetworkAccessGsm || // 2G
+ iNetwork.iAccess == CTelephony::ENetworkAccessGsmCompact))) &&
+ iNetwork.iCountryCode.Length() > 0 &&
+ iNetwork.iNetworkId.Length() > 0 )
+ {
+ // set the value 3 to have Geo tag available icon else not available.
+ iProperty.Set( KPSUidLocationTrail, KLocationTrailState,
+ (TInt) RLocationTrail::ETrailStarted );
+ }
+ else
+ {
+ iProperty.Set( KPSUidLocationTrail, KLocationTrailState,
+ (TInt) RLocationTrail::ETrailStopped );
+ }
+ }
+ else
+ {
+ iProperty.Set( KPSUidLocationTrail, KLocationTrailState,
+ (TInt) RLocationTrail::ETrailStopped );
+ }
+
if ( iObserver )
{
iObserver->LocationTrailStateChange();
@@ -556,6 +835,7 @@
void CLocationRecord::HandleLocationRequest( const TPositionSatelliteInfo& aSatelliteInfo,
const TInt aError )
{
+ LOG( "CLocationRecord::HandleLocationRequest(), begin" );
CTelephony::TNetworkInfoV1 network = CTelephony::TNetworkInfoV1();
if ( aError == KErrNone )
{
@@ -564,6 +844,7 @@
iRequestCurrentLoc = EFalse;
if ( !iTrailStarted )
{
+ iGpsDataAvailableFlag = EFalse;
iPositionInfo->Stop();
}
}
@@ -577,12 +858,19 @@
iLocationCounter = 0;
if ( !iTrailStarted )
{
+ iGpsDataAvailableFlag = EFalse;
iPositionInfo->Stop();
}
}
- }
+ }
+ LOG( "CLocationRecord::HandleLocationRequest(), end" );
}
+
+// --------------------------------------------------------------------------
+// CLocationRecord::UpdateNetworkInfo
+// --------------------------------------------------------------------------
+//
TInt CLocationRecord::UpdateNetworkInfo( TAny* aAny )
{
TPositionSatelliteInfo nullPositionInfo;
@@ -595,124 +883,167 @@
EXPORT_C void CLocationRecord::CreateLocationObjectL( const TLocationData& aLocationData,
const TUint& aObjectId )
{
- TItemId locationId = DoCreateLocationL( aLocationData );
- CreateRelationL( aObjectId, locationId );
+ LOG( "CLocationRecord::CreateLocationObjectL(), begin" );
+ TLocationSnapshotItem* newItem = new (ELeave) TLocationSnapshotItem;
+ newItem->iObjectId = aObjectId;
+ newItem->iLocationData = aLocationData;
+
+ // for downloaded files, network informations are not valid.
+ // Do location handling only based on lat/lon
+ // all all n/w information to invalid value.
+ newItem->iLocationData.iNetworkInfo.iCellId = 0;
+ newItem->iLocationData.iNetworkInfo.iAccess = CTelephony::ENetworkAccessUnknown;
+ newItem->iLocationData.iNetworkInfo.iLocationAreaCode = 0;
+ newItem->iLocationData.iNetworkInfo.iCountryCode.Zero();
+ newItem->iLocationData.iNetworkInfo.iNetworkId.Zero();
+ newItem->iFlag = KDownloadMediaFile;
+
+ iMediaItems.Append( newItem );
+ FindLocationFromDBL();
+ GeoTaggingCompleted();
+ LOG( "CLocationRecord::CreateLocationObjectL(), end" );
+
}
-
+// --------------------------------------------------------------------------
+// CLocationRecord::LocationSnapshotL
+// --------------------------------------------------------------------------
+//
EXPORT_C void CLocationRecord::LocationSnapshotL( const TUint& aObjectId )
{
- LOG("CLocationRecord::LocationSnapshotL");
-
+ LOG( "CLocationRecord::LocationSnapshotL(), begin" );
TBool previousMatch = EFalse;
- CMdENamespaceDef& namespaceDef = iMdeSession->GetDefaultNamespaceDefL();
// get locationdata from trail with object time
TTime timestamp = GetMdeObjectTimeL( aObjectId );
TLocationData locationData;
TLocTrailState state;
- GetLocationByTimeL( timestamp, locationData, state );
-
- iObjectId = aObjectId;
- iLocationData = locationData;
+ TRAPD(err, GetLocationByTimeL( timestamp, locationData, state ));
+ if(err != KErrNone && iTrailStarted)
+ {
+ // Execution shouldn't come over here.
+ // Handling error case in worst sceenario..
+ StartL(iTrailCaptureSetting);
+ // this case may apprear, when cache data is not within the delta limit because someone call stop trail.
+ // sceenario, take photograph, then stop taking for sometime, again take photograph.
+ // during this time, if there is no change in position (because someone stop trail) and n/w, then cache has old value.
+ // go with the n/w based.
+ LOG( "Old trail cache. go for n/w based." );
+ UpdateNetworkInfo( this );
+ // again read the location.
+ GetLocationByTimeL( timestamp, locationData, state );
+ }
+ TLocationSnapshotItem* newItem = new (ELeave) TLocationSnapshotItem;
+ newItem->iObjectId = aObjectId;
+ newItem->iLocationData = locationData;
+ newItem->iFlag = KSnapMediaFile;
+
+ iMediaItems.Append( newItem );
+ TItemId lastLocationId = 0;
+ if ( (iLastMediaItem.iFlag & KSnapMediaFile) > 0)
+ {
+ lastLocationId = iLastMediaItem.iLocationId;
+ }
+
+ CTelephony::TNetworkInfoV1* net = &locationData.iNetworkInfo;
// capture only network data
if ( iTrailCaptureSetting == RLocationTrail::ECaptureNetworkInfo )
{
- CTelephony::TNetworkInfoV1* net = &locationData.iNetworkInfo;
+ if ( net->iCellId == 0 &&
+ net->iLocationAreaCode == 0 &&
+ net->iCountryCode.Length() == 0 &&
+ net->iNetworkId.Length() == 0 )
+ {
+ // no n/w info... put it into remap.
+ // remove the last appended element.
+ LOG("No network info (offline mode + no GPS fix), keep for remapping");
+ TRemapItem remapItem;
+ remapItem.iObjectId = aObjectId;
+ remapItem.iTime = timestamp;
+ iRemapper->Append( remapItem );
+ TLocationSnapshotItem* firstPtr = iMediaItems[iMediaItems.Count() - 1];
+ iMediaItems.Remove(iMediaItems.Count() - 1);
+ iMediaItems.Compress();
+ delete firstPtr;
+ }
+ else
+ {
+ // n/w info available
+ NetworkInfoSnapshotL();
+ }
+ }
+ else if ( Math::IsNaN( locationData.iPosition.Latitude() ) &&
+ Math::IsNaN( locationData.iPosition.Longitude() ))
+ {
+ // coordinates empty, with or without cellular info
+
if ( net->iCellId == 0 &&
net->iLocationAreaCode == 0 &&
net->iCountryCode.Length() == 0 &&
net->iNetworkId.Length() == 0 )
{
- // nothing to do
- LOG("CLocationRecord::LocationSnapshotL - no network info available");
- }
- else if ( iLastLocationId != 0 )
- {
- CTelephony::TNetworkInfoV1* lastnet = &iLastLocation.iNetworkInfo;
-
- // compare to previous network info
- TItemId locationId = iLastLocationId;
- if ( lastnet->iCellId != net->iCellId ||
- lastnet->iLocationAreaCode != net->iLocationAreaCode ||
- lastnet->iCountryCode != net->iCountryCode ||
- lastnet->iNetworkId != net->iNetworkId )
- {
- LOG("CLocationRecord::LocationSnapshotL - network info changed");
- locationId = DoCreateLocationL( locationData );
- }
- CreateRelationL( aObjectId, locationId );
- }
- else
- {
- // new location
- TItemId locationId = DoCreateLocationL( locationData );
- CreateRelationL( aObjectId, locationId );
- }
- return;
- }
-
- // coordinates empty (will be remapped)
- if ( Math::IsNaN( locationData.iPosition.Latitude() ) &&
- Math::IsNaN( locationData.iPosition.Longitude() ))
- {
- TRemapItem remapItem;
- remapItem.iObjectId = aObjectId;
- remapItem.iTime = timestamp;
+ LOG("No network info (offline mode + no GPS fix), keep for remapping");
+ TRemapItem remapItem;
+ remapItem.iObjectId = aObjectId;
+ remapItem.iTime = timestamp;
+ iRemapper->Append( remapItem );
- CTelephony::TNetworkInfoV1* net = &locationData.iNetworkInfo;
-
- // no network info (offline mode + no GPS fix)
- if ( net->iCellId == 0 &&
- net->iLocationAreaCode == 0 &&
- net->iCountryCode.Length() == 0 &&
- net->iNetworkId.Length() == 0 )
- {
- LOG("CLocationRecord::LocationSnapshotL - empty remap item created");
+ TLocationSnapshotItem* firstPtr = iMediaItems[iMediaItems.Count() - 1];
+ iMediaItems.Remove(iMediaItems.Count() - 1);
+ iMediaItems.Compress();
+ delete firstPtr;
}
// check match for last created locationobject
- else if ( iLastLocationId != 0 )
+#ifdef LOC_REVERSEGEOCODE
+ else if ( (iLastMediaItem.iFlag & KSnapMediaFile) > 0 &&
+ iLastMediaItem.iCountryTagId > 0)
+#else
+ else if ( (iLastMediaItem.iFlag & KSnapMediaFile) > 0)
+#endif //LOC_REVERSEGEOCODE
{
- TItemId locationId;
- CTelephony::TNetworkInfoV1* lastnet = &iLastLocation.iNetworkInfo;
+ TLocationData lastLocationData = iLastMediaItem.iLocationData;
+ CTelephony::TNetworkInfoV1* lastnet = &lastLocationData.iNetworkInfo;
// networkinfo changed from last location
- if ( lastnet->iCellId != net->iCellId ||
- lastnet->iLocationAreaCode != net->iLocationAreaCode ||
- lastnet->iCountryCode != net->iCountryCode ||
- lastnet->iNetworkId != net->iNetworkId )
+ if ( lastnet->iCellId == net->iCellId &&
+ lastnet->iLocationAreaCode == net->iLocationAreaCode &&
+ lastnet->iCountryCode == net->iCountryCode &&
+ lastnet->iNetworkId == net->iNetworkId )
{
- LOG("CLocationRecord::LocationSnapshotL - remap with new network info");
- locationId = DoCreateLocationL( locationData );
- }
- else
- {
- LOG("CLocationRecord::LocationSnapshotL - remap with previous network info");
- locationId = iLastLocationId;
+ // same network.
+ previousMatch = ETrue;
+ CreateRelationL( aObjectId, lastLocationId );
+ // attach same tags associated to last location
+#ifdef LOC_REVERSEGEOCODE
+ if ( iLastMediaItem.iCountryTagId ) //found from DB last time
+ {
+ iTagCreator->AttachTagsL( aObjectId,
+ iLastMediaItem.iCountryTagId, iLastMediaItem.iCityTagId );
+ }
+#endif //LOC_REVERSEGEOCODE
+ // remove the current item.
+ TLocationSnapshotItem* firstPtr = iMediaItems[iMediaItems.Count() - 1];
+ iMediaItems.Remove(iMediaItems.Count() - 1);
+ iMediaItems.Compress();
+ delete firstPtr;
}
- TItemId relationId = CreateRelationL( aObjectId, locationId );
- remapItem.iLocationId = locationId;
- remapItem.iRelationId = relationId;
}
- else
- {
- // new location with only network data
- TItemId locationId = DoCreateLocationL( locationData );
- TItemId relationId = CreateRelationL( aObjectId, locationId );
- remapItem.iLocationId = locationId;
- remapItem.iRelationId = relationId;
- }
- iRemapper->Append( remapItem );
- return;
+
+ if ( !previousMatch )
+ {
+ // go for n/w based
+ newItem->iFlag |= KNetQueryBit;
+ }
}
-
+
// valid coordinates found
- if ( iLastLocationId != 0 )
+ else if ( lastLocationId != 0 &&
+ ((iLastMediaItem.iFlag & KSnapMediaFile) > 0))
{
- CTelephony::TNetworkInfoV1* net = &locationData.iNetworkInfo;
- CTelephony::TNetworkInfoV1* lastnet = &iLastLocation.iNetworkInfo;
+ TLocationData lastLocationData = iLastMediaItem.iLocationData;
+ CTelephony::TNetworkInfoV1* lastnet = &lastLocationData.iNetworkInfo;
// first check if networkinfo matches last created location
if ( lastnet->iCellId == net->iCellId &&
@@ -720,23 +1051,60 @@
lastnet->iCountryCode == net->iCountryCode &&
lastnet->iNetworkId == net->iNetworkId )
{
- LOG("CLocationRecord::LocationSnapshotL - network info matches");
// if both locations have valid coordinates, calculate distance between points
- if ( !Math::IsNaN( iLastLocation.iPosition.Latitude() ) &&
- !Math::IsNaN( iLastLocation.iPosition.Longitude() ) &&
+ if ( !Math::IsNaN( lastLocationData.iPosition.Latitude() ) &&
+ !Math::IsNaN( lastLocationData.iPosition.Longitude() ) &&
!Math::IsNaN( locationData.iPosition.Latitude() ) &&
!Math::IsNaN( locationData.iPosition.Longitude() ))
{
TReal32 distance;
- TInt err = locationData.iPosition.Distance(iLastLocation.iPosition, distance);
+ TInt err = locationData.iPosition.Distance(lastLocationData.iPosition, distance);
if ( distance < iLocationDelta )
{
- LOG("CLocationRecord::LocationSnapshotL - location close to the previous one");
+ LOG("location close to the previous one");
previousMatch = ETrue;
- CreateRelationL( aObjectId, iLastLocationId );
- LOG("CLocationRecord::CreateLocationObjectL - last location matched");
+ CreateRelationL( aObjectId, lastLocationId );
+
+#ifdef LOC_REVERSEGEOCODE
+ // attach same tags associated to last location
+ if ( iLastMediaItem.iCountryTagId )
+ {
+ iTagCreator->AttachTagsL(
+ aObjectId, iLastMediaItem.iCountryTagId, iLastMediaItem.iCityTagId );
+ TLocationSnapshotItem* firstPtr = iMediaItems[iMediaItems.Count() - 1];
+ iMediaItems.Remove(iMediaItems.Count() - 1);
+ iMediaItems.Compress();
+ delete firstPtr;
+ }
+ else
+ {
+ // country tag not found.. go for reverse geocoding..
+ newItem->iLocationId = lastLocationId;
+ iLocationItems.Append( newItem );
+ iMediaItems.Remove(iMediaItems.Count() - 1);
+ iMediaItems.Compress();
+
+ if(!(iMediaHandlingFlag & KReverseGeoCodingInProgress))
+ {
+ iMediaHandlingFlag |= KReverseGeoCodingInProgress;
+ if(iRevGeocoderPlugin)
+ {
+ iRevGeocoderPlugin->GetAddressByCoordinateL
+ ( iLocationItems[0]->iLocationData.iPosition,
+ iConnectionOption);
+ }
+ }
+ }
+#else
+ // remove from the queue
+ TLocationSnapshotItem* firstPtr = iMediaItems[iMediaItems.Count() - 1];
+ iMediaItems.Remove(iMediaItems.Count() - 1);
+ iMediaItems.Compress();
+ delete firstPtr;
+
+#endif //LOC_REVERSEGEOCODE
}
}
}
@@ -745,109 +1113,194 @@
// last location did not match, find existing one from DB
if( !previousMatch )
{
- LOG("CLocationRecord::LocationSnapshotL - query location");
- const TReal64 KMeterInDegrees = 0.000009;
- const TReal64 KPi = 3.14159265358979;
- const TReal32 K180Degrees = 180.0;
-
- TReal64 latitude = locationData.iPosition.Latitude();
- TReal64 longitude = locationData.iPosition.Longitude();
- // calculate distance in degrees
- TReal64 cosine;
- Math::Cos(cosine, locationData.iPosition.Latitude() * KPi / K180Degrees );
- TReal64 latDelta = iLocationDelta * KMeterInDegrees;
- TReal64 lonDelta = latDelta * cosine;
-
- CMdEObjectDef& locationObjectDef = namespaceDef.GetObjectDefL( Location::KLocationObject );
-
- CMdEPropertyDef& latitudeDef = locationObjectDef.GetPropertyDefL(
- Location::KLatitudeProperty );
- CMdEPropertyDef& longitudeDef = locationObjectDef.GetPropertyDefL(
- Location::KLongitudeProperty );
- CMdEPropertyDef& cellIdDef = locationObjectDef.GetPropertyDefL(
- Location::KCellIdProperty );
- CMdEPropertyDef& locationCodeDef = locationObjectDef.GetPropertyDefL(
- Location::KLocationAreaCodeProperty );
- CMdEPropertyDef& countryCodeDef = locationObjectDef.GetPropertyDefL(
- Location::KCountryCodeProperty );
- CMdEPropertyDef& networkCodeDef = locationObjectDef.GetPropertyDefL(
- Location::KNetworkCodeProperty );
-
- iLocationQuery = iMdeSession->NewObjectQueryL( namespaceDef, locationObjectDef, this );
- CMdELogicCondition& cond = iLocationQuery->Conditions();
- cond.SetOperator( ELogicConditionOperatorAnd );
-
- LOG1( "CLocationRecord::LocationSnapshotL latitude: %f", latitude);
- LOG1( "CLocationRecord::LocationSnapshotL latdelta: %f", latDelta);
- LOG1( "CLocationRecord::LocationSnapshotL longitude: %f", longitude);
- LOG1( "CLocationRecord::LocationSnapshotL londelta: %f", lonDelta);
-
- cond.AddPropertyConditionL( latitudeDef,
- TMdERealBetween( latitude - latDelta, latitude + latDelta ));
- cond.AddPropertyConditionL( longitudeDef,
- TMdERealBetween( longitude - lonDelta, longitude + lonDelta ));
- cond.AddPropertyConditionL( cellIdDef,
- TMdEUintEqual( locationData.iNetworkInfo.iCellId) );
- cond.AddPropertyConditionL( locationCodeDef,
- TMdEUintEqual( locationData.iNetworkInfo.iLocationAreaCode) );
- cond.AddPropertyConditionL( countryCodeDef, ETextPropertyConditionCompareEquals,
- locationData.iNetworkInfo.iCountryCode );
- cond.AddPropertyConditionL( networkCodeDef, ETextPropertyConditionCompareEquals,
- locationData.iNetworkInfo.iNetworkId );
-
- iLocationQuery->FindL();
+ FindLocationFromDBL();
}
+ LOG( "CLocationRecord::LocationSnapshotL(), end" );
}
-
-TItemId CLocationRecord::DoCreateLocationL( const TLocationData& aLocationData )
+
+// --------------------------------------------------------------------------
+// CLocationRecord::NetworkInfoSnapshotL
+// --------------------------------------------------------------------------
+//
+void CLocationRecord::NetworkInfoSnapshotL()
+ {
+ LOG( "CLocationRecord::NetworkInfoSnapshotL(), begin" );
+ // n/w info available.. always act on last element within the queue
+ TInt lastItemIndex = iMediaItems.Count() - 1;
+ if ( lastItemIndex >= 0 &&
+ (iMediaItems[lastItemIndex]->iFlag & KSnapMediaFile) > 0 )
+ {
+ CTelephony::TNetworkInfoV1* net = &iMediaItems[lastItemIndex]->iLocationData.iNetworkInfo;
+ //only for snap item.
+ if ( (iLastMediaItem.iFlag & KSnapMediaFile) > 0 )
+ {
+ CTelephony::TNetworkInfoV1* lastnet = &iLastMediaItem.iLocationData.iNetworkInfo;
+
+ // compare to previous network info
+ TItemId locationId = iLastMediaItem.iLocationId;
+ if ( lastnet->iCellId != net->iCellId ||
+ lastnet->iLocationAreaCode != net->iLocationAreaCode ||
+ lastnet->iCountryCode != net->iCountryCode ||
+ lastnet->iNetworkId != net->iNetworkId )
+ {
+ // last one is not matching.
+ // let's check the database of any existing etry.
+ iMediaItems[lastItemIndex]->iFlag |= KNetQueryBit;
+ }
+ else
+ {
+ // matching with the last entry. Just create a relation.
+ CreateRelationL( iMediaItems[lastItemIndex]->iObjectId, locationId );
+ TLocationSnapshotItem* firstPtr = iMediaItems[lastItemIndex];
+ iMediaItems.Remove(lastItemIndex);
+ delete firstPtr;
+ }
+ }
+ else
+ {
+ // let's check the database of any existing etry.
+ iMediaItems[lastItemIndex]->iFlag |= KNetQueryBit;
+ }
+ }
+ LOG( "CLocationRecord::NetworkInfoSnapshotL(), end" );
+ }
+
+
+// --------------------------------------------------------------------------
+// CLocationRecord::FindLocationFromDBL
+// --------------------------------------------------------------------------
+//
+void CLocationRecord::FindLocationFromDBL()
+ {
+ LOG( "CLocationRecord::FindLocationFromDBL(), begin" );
+ if(((iMediaHandlingFlag & KLocationQueryInProgress)> 0)
+ || (iMediaItems.Count() <= 0))
+ {
+ // query is in progress or queue is empty
+ LOG1( "query is in progress or queue is empty. Count - %d", iMediaItems.Count() );
+ return;
+ }
+ if ( (iMediaItems[0]->iFlag & KNetQueryBit) > 0 )
+ {
+ // n/w based.
+ FindLocationWithSameNetInfoL();
+ return;
+ }
+
+ const TReal64 KMeterInDegrees = 0.000009;
+ const TReal64 KPi = 3.14159265358979;
+ const TReal32 K180Degrees = 180.0;
+
+ //TLocationData locationData = iMediaItems[0].iLocationData;
+
+ TReal64 latitude = iMediaItems[0]->iLocationData.iPosition.Latitude();
+ TReal64 longitude = iMediaItems[0]->iLocationData.iPosition.Longitude();
+ // calculate distance in degrees
+ TReal64 cosine;
+ Math::Cos(cosine, latitude * KPi / K180Degrees );
+ TReal64 latDelta = iLocationDelta * KMeterInDegrees;
+ TReal64 lonDelta = latDelta * cosine;
+
+ //get network related defs
+ CMdEPropertyDef& cellIdDef = iLocationObjectDef->GetPropertyDefL(
+ Location::KCellIdProperty );
+ CMdEPropertyDef& locationCodeDef = iLocationObjectDef->GetPropertyDefL(
+ Location::KLocationAreaCodeProperty );
+ CMdEPropertyDef& countryCodeDef = iLocationObjectDef->GetPropertyDefL(
+ Location::KCountryCodeProperty );
+ CMdEPropertyDef& networkCodeDef = iLocationObjectDef->GetPropertyDefL(
+ Location::KNetworkCodeProperty );
+ if(iLocationQuery)
+ {
+ iLocationQuery->RemoveObserver(*this);
+ iLocationQuery->Cancel();
+ delete iLocationQuery;
+ iLocationQuery = NULL;
+ }
+ iLocationQuery = iMdeSession->NewObjectQueryL( *iNamespaceDef, *iLocationObjectDef, this );
+
+ CMdELogicCondition& cond = iLocationQuery->Conditions();
+ cond.SetOperator( ELogicConditionOperatorAnd );
+
+ LOG1( "latitude: %f", latitude);
+ LOG1( "latdelta: %f", latDelta);
+ LOG1( "longitude: %f", longitude);
+ LOG1( "londelta: %f", lonDelta);
+
+ cond.AddPropertyConditionL( *iLatitudeDef,
+ TMdERealBetween( latitude - latDelta, latitude + latDelta ));
+ cond.AddPropertyConditionL( *iLongitudeDef,
+ TMdERealBetween( longitude - lonDelta, longitude + lonDelta ));
+
+ if ( iMediaItems[0]->iLocationData.iNetworkInfo.iCellId > 0 )
+ {
+ cond.AddPropertyConditionL( cellIdDef,
+ TMdEUintEqual( iMediaItems[0]->iLocationData.iNetworkInfo.iCellId) );
+ }
+ if ( iMediaItems[0]->iLocationData.iNetworkInfo.iLocationAreaCode > 0 )
+ {
+ cond.AddPropertyConditionL( locationCodeDef,
+ TMdEUintEqual( iMediaItems[0]->iLocationData.iNetworkInfo.iLocationAreaCode) );
+ }
+ if ( iMediaItems[0]->iLocationData.iNetworkInfo.iCountryCode.Length() > 0 )
+ {
+ cond.AddPropertyConditionL( countryCodeDef, ETextPropertyConditionCompareEquals,
+ iMediaItems[0]->iLocationData.iNetworkInfo.iCountryCode );
+ }
+ if ( iMediaItems[0]->iLocationData.iNetworkInfo.iNetworkId.Length() > 0 )
+ {
+ cond.AddPropertyConditionL( networkCodeDef, ETextPropertyConditionCompareEquals,
+ iMediaItems[0]->iLocationData.iNetworkInfo.iNetworkId );
+ }
+ iMediaHandlingFlag |= KLocationQueryInProgress;
+ iLocationQuery->FindL();
+
+ LOG( "CLocationRecord::FindLocationFromDBL(), end" );
+ }
+
+
+// --------------------------------------------------------------------------
+// CLocationRecord::DoCreateLocationL
+// --------------------------------------------------------------------------
+//
+TItemId CLocationRecord::DoCreateLocationL( const TLocationData& aLocationData )
{
- LOG("CLocationRecord::DoCreateLocationL - start");
+ LOG( "CLocationRecord::DoCreateLocationL(), begin" );
TItemId locationObjectId;
- CMdENamespaceDef& namespaceDef = iMdeSession->GetDefaultNamespaceDefL();
-
- CMdEObjectDef& locationObjectDef = namespaceDef.GetObjectDefL( Location::KLocationObject );
-
// required object properties
- CMdEPropertyDef& creationDef = locationObjectDef.GetPropertyDefL(
+ CMdEPropertyDef& creationDef = iLocationObjectDef->GetPropertyDefL(
Object::KCreationDateProperty );
- CMdEPropertyDef& modifiedDef = locationObjectDef.GetPropertyDefL(
+ CMdEPropertyDef& modifiedDef = iLocationObjectDef->GetPropertyDefL(
Object::KLastModifiedDateProperty );
- CMdEPropertyDef& sizeDef = locationObjectDef.GetPropertyDefL(
+ CMdEPropertyDef& sizeDef = iLocationObjectDef->GetPropertyDefL(
Object::KSizeProperty );
- CMdEPropertyDef& itemTypeDef = locationObjectDef.GetPropertyDefL(
+ CMdEPropertyDef& itemTypeDef = iLocationObjectDef->GetPropertyDefL(
Object::KItemTypeProperty );
- CMdEPropertyDef& offSetDef = locationObjectDef.GetPropertyDefL(
+ CMdEPropertyDef& offSetDef = iLocationObjectDef->GetPropertyDefL(
Object::KTimeOffsetProperty );
// location related properties
- CMdEPropertyDef& cellIdDef = locationObjectDef.GetPropertyDefL(
+ CMdEPropertyDef& cellIdDef = iLocationObjectDef->GetPropertyDefL(
Location::KCellIdProperty );
- CMdEPropertyDef& latitudeDef = locationObjectDef.GetPropertyDefL(
- Location::KLatitudeProperty );
- CMdEPropertyDef& longitudeDef = locationObjectDef.GetPropertyDefL(
- Location::KLongitudeProperty );
- CMdEPropertyDef& altitudeDef = locationObjectDef.GetPropertyDefL(
- Location::KAltitudeProperty );
-
- CMdEPropertyDef& directionDef = locationObjectDef.GetPropertyDefL(
+ CMdEPropertyDef& directionDef = iLocationObjectDef->GetPropertyDefL(
Location::KDirectionProperty );
- CMdEPropertyDef& speedDef = locationObjectDef.GetPropertyDefL(
+ CMdEPropertyDef& speedDef = iLocationObjectDef->GetPropertyDefL(
Location::KSpeedProperty );
- CMdEPropertyDef& locationCodeDef = locationObjectDef.GetPropertyDefL(
+ CMdEPropertyDef& locationCodeDef = iLocationObjectDef->GetPropertyDefL(
Location::KLocationAreaCodeProperty );
- CMdEPropertyDef& countryCodeDef = locationObjectDef.GetPropertyDefL(
+ CMdEPropertyDef& countryCodeDef = iLocationObjectDef->GetPropertyDefL(
Location::KCountryCodeProperty );
- CMdEPropertyDef& networkCodeDef = locationObjectDef.GetPropertyDefL(
+ CMdEPropertyDef& networkCodeDef = iLocationObjectDef->GetPropertyDefL(
Location::KNetworkCodeProperty );
- CMdEPropertyDef& qualityDef = locationObjectDef.GetPropertyDefL(
+ CMdEPropertyDef& qualityDef = iLocationObjectDef->GetPropertyDefL(
Location::KQualityProperty );
// location object
CMdEObject* locationObject = NULL;
- locationObject = iMdeSession->NewObjectL( locationObjectDef, Object::KAutomaticUri );
+ locationObject = iMdeSession->NewObjectL( *iLocationObjectDef, Object::KAutomaticUri );
CleanupStack::PushL( locationObject );
TTime timestamp( 0 );
@@ -863,18 +1316,19 @@
locationObject->AddTextPropertyL( itemTypeDef, Location::KLocationItemType );
locationObject->AddInt16PropertyL( offSetDef, timeOffset.Int() / 60 );
- LOG1( "CLocationRecord::DoCreateLocationL - location created with stamp: %Ld", timestamp.Int64() );
+ LOG1( "Location created with stamp: %Ld", timestamp.Int64() );
// location related properties
if ( !Math::IsNaN( aLocationData.iPosition.Latitude() ) &&
!Math::IsNaN( aLocationData.iPosition.Longitude() ))
{
- locationObject->AddReal64PropertyL( latitudeDef, aLocationData.iPosition.Latitude() );
- locationObject->AddReal64PropertyL( longitudeDef, aLocationData.iPosition.Longitude() );
+ locationObject->AddReal64PropertyL( *iLatitudeDef, aLocationData.iPosition.Latitude() );
+ locationObject->AddReal64PropertyL( *iLongitudeDef, aLocationData.iPosition.Longitude() );
+
}
if ( !Math::IsNaN( aLocationData.iPosition.Altitude() ) )
{
- locationObject->AddReal64PropertyL( altitudeDef, aLocationData.iPosition.Altitude() );
+ locationObject->AddReal64PropertyL( *iAltitudeDef, aLocationData.iPosition.Altitude() );
}
if ( !Math::IsNaN( aLocationData.iCourse.Course() ) )
{
@@ -916,21 +1370,20 @@
}
}
-
+
// Add the location object to the database.
locationObjectId = iMdeSession->AddObjectL( *locationObject );
- iLastLocationId = locationObjectId;
- iLastLocation = aLocationData;
+ CleanupStack::PopAndDestroy( locationObject );
+ LOG( "CLocationRecord::DoCreateLocationL(), end" );
- CleanupStack::PopAndDestroy( locationObject );
-
- LOG("CLocationRecord::DoCreateLocationL - end");
-
return locationObjectId;
}
-
+// --------------------------------------------------------------------------
+// CLocationRecord::CreateRelationL
+// --------------------------------------------------------------------------
+//
TItemId CLocationRecord::CreateRelationL( const TUint& aObjectId, const TUint& aLocationId )
{
LOG("CLocationRecord::CreateRelationL - start");
@@ -968,131 +1421,715 @@
LOG( "CLocationRecord::::ReadCenRepValueL(), end" );
}
+
+// --------------------------------------------------------------------------
+// CLocationRecord::HandleQueryNewResults
+// --------------------------------------------------------------------------
+//
void CLocationRecord::HandleQueryNewResults(CMdEQuery& /*aQuery*/, TInt /*aFirstNewItemIndex*/,
TInt /*aNewItemCount*/)
{
}
+
+// --------------------------------------------------------------------------
+// CLocationRecord::HandleQueryCompleted
+// --------------------------------------------------------------------------
+//
void CLocationRecord::HandleQueryCompleted(CMdEQuery& aQuery, TInt aError)
{
LOG("CLocationRecord::HandleQueryCompleted - start");
const TInt count = aQuery.Count();
LOG1("CLocationRecord::HandleQueryCompleted count: %d", count);
-
- CMdENamespaceDef* namespaceDef = NULL;
+
+ if ( aError != KErrNone )
+ {
+ HandleQueryFailure();
+ }
+
+ else if ( &aQuery == iLocationQuery )
+ {
+
+ TRAPD(err,HandleLocationQueryL( aQuery ));
+ if(err != KErrNone)
+ {
+ // unable to process the first node..
+ // remove this and process the next.
- TRAP_IGNORE( namespaceDef = &iMdeSession->GetDefaultNamespaceDefL() );
- if ( namespaceDef )
+ // reset the flag
+ HandleQueryFailure();
+ }
+
+ }
+ else if ( &aQuery == iNetLocationQuery )
{
- CMdEObjectDef* locationObjectDef = NULL;
+ TRAPD(err,HandleNetLocationQueryL( aQuery ));
+ if(err != KErrNone)
+ {
+ // unable to process the first node..
+ // remove this and process the next.
+ HandleQueryFailure();
+ }
+
+ }
- TRAP_IGNORE( locationObjectDef = &namespaceDef->GetObjectDefL( Location::KLocationObject ) );
- if ( locationObjectDef )
- {
- CMdEPropertyDef* latitudeDef = NULL;
- CMdEPropertyDef* longitudeDef = NULL;
- CMdEPropertyDef* altitudeDef = NULL;
-
- TRAP_IGNORE(
- latitudeDef = &locationObjectDef->GetPropertyDefL(
- Location::KLatitudeProperty );
- longitudeDef = &locationObjectDef->GetPropertyDefL(
- Location::KLongitudeProperty );
- altitudeDef = &locationObjectDef->GetPropertyDefL(
- Location::KAltitudeProperty );
- );
+#ifdef LOC_REVERSEGEOCODE
+ else if ( &aQuery == iImageQuery )
+ {
+ if(aQuery.Count() > 0)
+ {
+
+ CMdERelation& relation = static_cast<CMdERelation&>( aQuery.ResultItem( 0 ) );
+
+ TItemId imageId = relation.LeftObjectId();
+
+ TRAPD(err, GetTagsL( imageId ) );
+ if(err != KErrNone)
+ {
+ // unable to process the first node..
+ // remove this and process the next.
+
+ // reset the flag
+ HandleQueryFailure();
+ }
+ }
+ else
+ {
+ HandleQueryFailure();
+ }
+ }
+
+ else if ( &aQuery == iTagQuery )
+ {
+ TRAPD(err, HandleTagQueryL( aQuery ) );
+
+ GeoTaggingCompleted();
+ if(err != KErrNone)
+ {
+ // unable to process the first node..
+ // remove this and process the next.
+
+ // reset the flag
+ HandleQueryFailure();
+ }
+ }
+#endif //LOC_REVERSEGEOCODE
+ else
+ {
+ // execution should not come over here...still take recovery action.
+ HandleQueryFailure();
+ }
+ GeoTaggingCompleted();
+ LOG( "CLocationRecord::HandleQueryCompleted(), end" );
+ }
- if( latitudeDef && longitudeDef && altitudeDef )
- {
- TBool created = EFalse;
- for ( TInt i = 0; i < count; i++ )
- {
- LOG1("CLocationRecord::HandleQueryCompleted check item: %d", i);
- CMdEItem& item = aQuery.ResultItem(i);
- CMdEObject& locationObject = static_cast<CMdEObject&>(item);
-
- CMdEProperty* latProp = NULL;
- CMdEProperty* lonProp = NULL;
- CMdEProperty* altProp = NULL;
-
- locationObject.Property( *latitudeDef, latProp, 0 );
- locationObject.Property( *longitudeDef, lonProp, 0 );
- locationObject.Property( *altitudeDef, altProp, 0 );
-
- if ( latProp && lonProp )
- {
- TReal32 distance;
- TCoordinate newCoords;
- if ( altProp )
- {
- TRAP_IGNORE( newCoords = TCoordinate( latProp->Real64ValueL(), lonProp->Real64ValueL(), (TReal32)altProp->Real64ValueL() ) );
- }
- else
- {
- TRAP_IGNORE( newCoords = TCoordinate( latProp->Real64ValueL(), lonProp->Real64ValueL() ) );
- }
-
- const TInt err = iLocationData.iPosition.Distance(newCoords, distance);
-
- if ( distance < iLocationDelta )
- {
- LOG("CLocationRecord::HandleQueryCompleted - match found in db");
- TRAPD( err, CreateRelationL( iObjectId, locationObject.Id() ) );
- if( err == KErrNone)
- {
- created = ETrue;
- i = count;
- }
- else
- {
- aError = err;
- }
- }
- }
- }
+// --------------------------------------------------------------------------
+// CLocationRecord::HandleQueryFailure()
+// handle MDS query sceenario
+// --------------------------------------------------------------------------
+//
+void CLocationRecord::HandleQueryFailure()
+ {
+ LOG( "CLocationRecord::HandleQueryFailure(), begin" );
+ iMediaHandlingFlag &= ~KLocationQueryInProgress;
+ if ( iMediaItems.Count() > 0 )
+ {
+ TLocationSnapshotItem* firstPtr = iMediaItems[0];
+ iMediaItems.Remove(0);
+ delete firstPtr;
+ iMediaItems.Compress();
+ HandleFindLocationFromDB();
+ }
+ LOG( "CLocationRecord::HandleQueryFailure(), end" );
+ }
- if ( !created && aError == KErrNone )
- {
- LOG("CLocationRecord::HandleQueryCompleted - no match found in db, create new");
- TInt locationId( 0 );
- TRAPD( err, locationId = DoCreateLocationL( iLocationData ) );
- LOG1("CLocationRecord::HandleQueryCompleted - DoCreateLocationL err: %d", err);
- if( err == KErrNone )
- {
- TRAP( err, CreateRelationL( iObjectId, locationId ));
- LOG1("CLocationRecord::HandleQueryCompleted - CreateRelationL err: %d", err);
- }
- }
- }
+// --------------------------------------------------------------------------
+// CLocationRecord::HandleFindLocationFromDB()
+// handle find location from DB within the non leaving method
+// --------------------------------------------------------------------------
+//
+void CLocationRecord::HandleFindLocationFromDB()
+ {
+ LOG( "CLocationRecord::HandleFindLocationFromDB(), begin" );
+ if ( iMediaItems.Count() > 0 )
+ {
+ //TODO: by module owner
+ TInt trapErr = KErrNone;
+ TRAP(trapErr,FindLocationFromDBL());
+ // no memory, don't proceed further
+ // other error sceenario, we can move the node to the end and process the next
+ if(trapErr != KErrNoMemory && trapErr != KErrNone)
+ {
+ // other than no memory
+ TInt numberOfNodes = iMediaItems.Count();
+ LOG1("media count - %d\n", numberOfNodes);
+ while(--numberOfNodes >= 0 &&
+ trapErr != KErrNoMemory &&
+ trapErr != KErrNone)
+ {
+ // first remove the node
+ TLocationSnapshotItem* firstPtr = iMediaItems[0];
+ iMediaItems.Remove(0);
+ // move this to last
+ iMediaItems.Append(firstPtr);
+ iMediaItems.Compress();
+ trapErr = KErrNone;
+ // process for the next till we reached the last node.
+ TRAP(trapErr,FindLocationFromDBL());
+ }
+ }
+ }
+ LOG( "CLocationRecord::HandleFindLocationFromDB(), end" );
+ }
+
+
+// --------------------------------------------------------------------------
+// CLocationRecord::HandleLocationQuery()
+// handle if only gps info available
+// --------------------------------------------------------------------------
+//
+void CLocationRecord::HandleLocationQueryL( CMdEQuery& aQuery )
+ {
+ LOG( "CLocationRecord::HandleLocationQueryL(), begin" );
+ TInt error = KErrNone;
+ TUint locationId( 0 );
+ if ( iMediaItems.Count() <= 0 )
+ {
+ LOG("CLocationRecord::HandleLocationQueryL. No media items to process");
+ return;
+ }
+
+ TLocationData locationData = iMediaItems[0]->iLocationData;
+
+ const TInt count = aQuery.Count();
+ //find any location matches
+ for ( TInt i = 0; i < count; i++ )
+ {
+ LOG1("CLocationRecord::HandleLocationQueryL check item: %d", i);
+ CMdEItem& item = aQuery.ResultItem(i);
+ CMdEObject& locationObject = static_cast<CMdEObject&>(item);
+
+ CMdEProperty* latProp = NULL;
+ CMdEProperty* lonProp = NULL;
+ CMdEProperty* altProp = NULL;
+
+ locationObject.Property( *iLatitudeDef, latProp, 0 );
+ locationObject.Property( *iLongitudeDef, lonProp, 0 );
+ locationObject.Property( *iAltitudeDef, altProp, 0 );
+
+ if ( latProp && lonProp )
+ {
+ TReal32 distance;
+ TCoordinate newCoords;
+
+ TReal64 lat = latProp->Real64ValueL();
+ TReal64 lon = lonProp->Real64ValueL();
+ if ( altProp )
+ {
+ TReal32 alt = (TReal32)altProp->Real64ValueL();
+ newCoords = TCoordinate( lat, lon, alt );
+ }
+ else
+ {
+ newCoords = TCoordinate( lat, lon );
+ }
+
+ locationData.iPosition.Distance(newCoords, distance);
+
+ if ( distance < iLocationDelta )
+ {
+ i = count;
+ locationId = locationObject.Id();
+ iMediaItems[0]->iLocationId = locationId;
+ break;
+ }
}
}
+
+
+ if ( locationId )
+ {
+ TRAP( error, CreateRelationL( iMediaItems[0]->iObjectId, locationId ) );
+
+#ifdef LOC_REVERSEGEOCODE
+ if( error == KErrNone)
+ {
+ //find out if image for this location is tagged already
+ GetRelatedImageL( locationId );
+ }
+#else
+ TLocationSnapshotItem* firstPtr = iMediaItems[0];
+ iMediaItems.Remove(0);
+ delete firstPtr;
+ iMediaItems.Compress();
+ iMediaHandlingFlag &= ~KLocationQueryInProgress;
+ if ( iMediaItems.Count() > 0 )
+ {
+ FindLocationFromDBL();
+ }
+#endif //LOC_REVERSEGEOCODE
+ }
+ else
+ {
+
+ if((iMediaItems[0]->iFlag & KDownloadMediaFile) > 0)
+ {
+ locationData.iNetworkInfo.iCellId = 0;
+ locationData.iNetworkInfo.iAccess = CTelephony::ENetworkAccessUnknown;
+ locationData.iNetworkInfo.iLocationAreaCode = 0;
+ locationData.iNetworkInfo.iCountryCode.Zero();
+ locationData.iNetworkInfo.iNetworkId.Zero();
+ }
+ TRAP( error, locationId = DoCreateLocationL( locationData ) );
- LOG("CLocationRecord::HandleQueryCompleted - end");
+ if ( error == KErrNone )
+ {
+ iMediaItems[0]->iLocationId = locationId;
+ TRAP( error, CreateRelationL( iMediaItems[0]->iObjectId, locationId ));
+ }
+
+ TLocationSnapshotItem* item = iMediaItems[0];
+ if((iMediaItems[0]->iFlag & KSnapMediaFile) > 0)
+ {
+ iLastMediaItem = *(iMediaItems[0]);
+ }
+ iMediaItems.Remove(0);
+ iMediaItems.Compress();
+ iMediaHandlingFlag &= ~KLocationQueryInProgress;
+ if ( error == KErrNone )
+ {
+ //Find the address by coordinate, results a call to ReverseGeocodeComplete()
+#ifdef LOC_REVERSEGEOCODE
+ iLocationItems.Append( item );
+ if(!(iMediaHandlingFlag & KReverseGeoCodingInProgress))
+ {
+ iMediaHandlingFlag |= KReverseGeoCodingInProgress;
+
+ if(iRevGeocoderPlugin)
+ {
+ iRevGeocoderPlugin->GetAddressByCoordinateL
+ ( iLocationItems[0]->iLocationData.iPosition,
+ iConnectionOption);
+ }
+ }
+#else
+ // free resources
+ delete item;
+#endif //LOC_REVERSEGEOCODE
+ }
+ else
+ {
+ // free resources
+ delete item;
+ }
+
+ if ( iMediaItems.Count() > 0 )
+ {
+ FindLocationFromDBL();
+ }
+ }
+ LOG( "CLocationRecord::HandleLocationQueryL(), end" );
+
}
+// --------------------------------------------------------------------------
+// CLocationRecord::HandleNetLocationQuery()
+// handle if only network info available
+// --------------------------------------------------------------------------
+//
+void CLocationRecord::HandleNetLocationQueryL( CMdEQuery& aQuery )
+ {
+ LOG( "CLocationRecord::HandleNetLocationQueryL(), begin" );
+ TInt error = KErrNone;
+ TUint locationId( 0 );
+ if ( iMediaItems.Count() <= 0 )
+ {
+ LOG("CLocationRecord::HandleNetLocationQueryL(), End. No media items to process\n");
+ return;
+ }
+ if( aQuery.Count() )
+ {
+ CMdEItem& item = aQuery.ResultItem(0);
+ CMdEObject& locationObject = static_cast<CMdEObject&>(item);
+ locationId = locationObject.Id();
+
+ TRAP( error, CreateRelationL( iMediaItems[0]->iObjectId, locationId ) );
+#ifdef LOC_REVERSEGEOCODE
+ //check if found location object has lat, long
+ CMdEProperty* latProp = NULL;
+ CMdEProperty* lonProp = NULL;
+ CMdEProperty* cellIdProp = NULL;
+ CMdEProperty* areadCodeProp = NULL;
+ CMdEProperty* countryProp = NULL;
+ CMdEProperty* networkCodeProp = NULL;
+ if ( error == KErrNone )
+ {
+
+ CMdEPropertyDef& cellIdDef = iLocationObjectDef->GetPropertyDefL(
+ Location::KCellIdProperty );
+ CMdEPropertyDef& locationAreadCodeDef = iLocationObjectDef->GetPropertyDefL(
+ Location::KLocationAreaCodeProperty );
+ CMdEPropertyDef& countryCodeDef = iLocationObjectDef->GetPropertyDefL(
+ Location::KCountryCodeProperty );
+ CMdEPropertyDef& networkCodeDef = iLocationObjectDef->GetPropertyDefL(
+ Location::KNetworkCodeProperty );
+
+ locationObject.Property( *iLatitudeDef, latProp, 0 );
+ locationObject.Property( *iLongitudeDef, lonProp, 0 );
+
+ locationObject.Property( cellIdDef, cellIdProp, 0 );
+ locationObject.Property( locationAreadCodeDef, areadCodeProp, 0 );
+ locationObject.Property( countryCodeDef, countryProp, 0 );
+ locationObject.Property( networkCodeDef, networkCodeProp, 0 );
+ }
+
+ if( (latProp && lonProp)
+ || (cellIdProp && areadCodeProp && countryProp && networkCodeProp) )
+ {
+ //find out if image for this location is tagged already
+ GetRelatedImageL( locationId );
+ }
+ else
+#endif //LOC_REVERSEGEOCODE
+ {
+ // no geo info.. remove the item and proceed for the next.
+ TLocationSnapshotItem* firstPtr = iMediaItems[0];
+ iMediaItems.Remove(0);
+ delete firstPtr;
+ iMediaItems.Compress();
+ iMediaHandlingFlag &= ~KLocationQueryInProgress;
+ if ( iMediaItems.Count() > 0 )
+ {
+ FindLocationFromDBL();
+ }
+ }
+ }
+ else
+ {
+#ifdef LOC_GEOTAGGING_CELLID
+ LOG1("Media handling flag = %d", iMediaHandlingFlag);
+ if((iMediaHandlingFlag & KSnapGeoConvertInProgress) > 0)
+ {
+ iMediaHandlingFlag |= KSnapGeoConvertInPendingState;
+ }
+ else
+ {
+ // go for cell id based geo coding.
+ if(iGeoConverter == NULL)
+ {
+ iGeoConverter = CGeoConverter::NewL(*this);
+ }
+ iGeoConverter->ConvertL(iMediaItems[0]->iLocationData.iNetworkInfo);
+ iMediaHandlingFlag |= KSnapGeoConvertInProgress;
+ iMediaHandlingFlag &= ~KSnapGeoConvertInPendingState;
+ }
+#else
+ locationId = DoCreateLocationL( iMediaItems[0]->iLocationData );
+ iMediaItems[0]->iLocationId = locationId;
+ CreateRelationL( iMediaItems[0]->iObjectId, locationId );
+ TLocationSnapshotItem* firstPtr = iMediaItems[0];
+ iMediaItems.Remove(0);
+ delete firstPtr;
+ iMediaItems.Compress();
+ iMediaHandlingFlag &= ~KLocationQueryInProgress;
+ if ( iMediaItems.Count() > 0 )
+ {
+ FindLocationFromDBL();
+ }
+#endif
+ }
+#ifdef LOC_REVERSEGEOCODE
+ if((iMediaHandlingFlag & KSnapGeoConvertInProgress) > 0 ||
+ (iMediaHandlingFlag & KReverseGeoCodingInProgress) > 0)
+#else
+ if((iMediaHandlingFlag & KSnapGeoConvertInProgress) > 0)
+#endif //LOC_REVERSEGEOCODE
+ {
+ // stop n/w info change listener, since device may connect to n/w
+ // and local trail will receive so many call backs on current n/w info change.
+ iNetworkInfoChangeListener->StopNwInfoChangeNotifier();
+ }
+ else
+ {
+ iNetworkInfoChangeListener->StartNwInfoChangeNotifier();
+ }
+ LOG( "CLocationRecord::HandleNetLocationQueryL(), end" );
+
+ }
+
+
+#ifdef LOC_GEOTAGGING_CELLID
+// --------------------------------------------------------------------------
+// CLocationRecord::ConversionCompletedL()
+// --------------------------------------------------------------------------
+//
+void CLocationRecord::ConversionCompletedL( const TInt aError, TLocality& aPosition )
+ {
+
+ LOG1("CLocationRecord::ConversionCompletedL, begin. Error - %d", aError);
+ // reset the flag first
+ iMediaHandlingFlag &= ~KSnapGeoConvertInProgress;
+ LOG1("iRemapState - %d", iRemapState);
+ if(aError == KErrNone)
+ {
+ iConvertRetry = ETrue;
+ LOG("Conversion completed successfully");
+ if(iRemapState == ERemapNwGeoConverterInProgress)
+ {
+ iNewItem.iLocationData.iPosition.SetCoordinate
+ ( aPosition.Latitude(), aPosition.Longitude(), aPosition.Altitude());
+ iNewItem.iLocationData.iQuality = aPosition.HorizontalAccuracy();
+ TItemId locationId = DoCreateLocationL( iNewItem.iLocationData );
+ iRemapper->UpdateRelationsL( locationId );
+ // TODO: remap.
+#ifdef LOC_REVERSEGEOCODE
+ if(!(iMediaHandlingFlag & KReverseGeoCodingInProgress))
+ {
+ iRemapState = ERemapRevGeoCodeInProgress;
+ //Find the address by coordinate, results a call to ReverseGeocodeComplete()
+ iMediaHandlingFlag |= KReverseGeoCodingInProgress;
+
+ if(iRevGeocoderPlugin)
+ {
+ iRevGeocoderPlugin->GetAddressByCoordinateL
+ ( iNewItem.iLocationData.iPosition, iConnectionOption );
+ }
+ }
+ else
+ {
+ // remap in reverse geocoding pending state.
+ iRemapState = ERemapRevGeoCodePending;
+ }
+#endif //LOC_REVERSEGEOCODE
+ }
+ else if ( iMediaItems.Count() > 0 )
+ {
+
+ iMediaItems[0]->iLocationData.iPosition.SetCoordinate
+ ( aPosition.Latitude(), aPosition.Longitude(), aPosition.Altitude());
+ iMediaItems[0]->iLocationData.iQuality = aPosition.HorizontalAccuracy();
+ TLocationSnapshotItem* item = iMediaItems[0];
+ TItemId locationId = DoCreateLocationL( iMediaItems[0]->iLocationData );
+ iMediaItems[0]->iLocationId = locationId;
+ CreateRelationL( iMediaItems[0]->iObjectId, locationId );
+ if((iMediaItems[0]->iFlag & KSnapMediaFile) > 0)
+ {
+ iLastMediaItem = *(iMediaItems[0]);
+ }
+ iMediaItems.Remove(0);
+ iMediaItems.Compress();
+ iMediaHandlingFlag &= ~KLocationQueryInProgress;
+#ifdef LOC_REVERSEGEOCODE
+ iLocationItems.Append( item );
+#else
+ // free resource
+ delete item;
+#endif
+ }
+ }
+ else
+ {
+ LOG1("Conversion error - %d", aError);
+ if(iConvertRetry)
+ {
+ LOG("Retry once");
+ iConvertRetry = EFalse;
+ if(iRemapState == ERemapNwGeoConverterInProgress)
+ {
+ iRemapState = ERemapNwGeoConverterPending;
+ }
+ else if ( iMediaItems.Count() > 0 )
+ {
+ iMediaHandlingFlag |= KSnapGeoConvertInPendingState;
+ }
+ }
+ else
+ {
+ if(iRemapState == ERemapNwGeoConverterInProgress)
+ {
+ iRemapState = ERemapProgressNone;
+ }
+ else if ( iMediaItems.Count() > 0 )
+ {
+ TLocationSnapshotItem* item = iMediaItems[0];
+ iMediaItems.Remove(0);
+ iMediaItems.Compress();
+ iMediaHandlingFlag &= ~KLocationQueryInProgress;
+ delete item;
+ }
+ }
+
+ }
+
+ // check the remap item first.
+ if(iRemapState == ERemapNwGeoConverterPending)
+ {
+ // go for cell id based geo coding.
+ iRemapState = ERemapNwGeoConverterInProgress;
+ iGeoConverter->ConvertL(iNewItem.iLocationData.iNetworkInfo);
+ iMediaHandlingFlag |= KSnapGeoConvertInProgress;
+ }
+ //check for media queue pending request.
+ else if((iMediaHandlingFlag & KSnapGeoConvertInPendingState) > 0)
+ {
+ // previous media queue geo convert is in pending state.
+ // go for cell id based geo coding.
+ iGeoConverter->ConvertL(iMediaItems[0]->iLocationData.iNetworkInfo);
+ iMediaHandlingFlag |= KSnapGeoConvertInProgress;
+ iMediaHandlingFlag &= ~KSnapGeoConvertInPendingState;
+ }
+ // let's not use multiple access point.
+#ifdef LOC_REVERSEGEOCODE
+ else if(!(iMediaHandlingFlag & KReverseGeoCodingInProgress) &&
+ iLocationItems.Count() > 0)
+ {
+ iMediaHandlingFlag |= KReverseGeoCodingInProgress;
+
+ if(iRevGeocoderPlugin)
+ {
+ iRevGeocoderPlugin->GetAddressByCoordinateL
+ ( iLocationItems[0]->iLocationData.iPosition,
+ iConnectionOption);
+ }
+ }
+ if((iMediaHandlingFlag & KSnapGeoConvertInProgress) > 0 ||
+ (iMediaHandlingFlag & KReverseGeoCodingInProgress) > 0)
+#else
+ if((iMediaHandlingFlag & KSnapGeoConvertInProgress) > 0)
+#endif //LOC_REVERSEGEOCODE
+ {
+ // stop n/w info change listener, since device may connect to n/w
+ // and local trail will receive so many call backs on current n/w info change.
+ iNetworkInfoChangeListener->StopNwInfoChangeNotifier();
+ }
+ else
+ {
+ iNetworkInfoChangeListener->StartNwInfoChangeNotifier();
+ }
+ FindLocationFromDBL();
+ GeoTaggingCompleted();
+ LOG("CLocationRecord::ConversionCompletedL, end");
+ }
+
+
+//------------------------------------------------------------------------
+// CLocationRecord::HandleConversionError
+//------------------------------------------------------------------------
+//
+void CLocationRecord::HandleConversionError(TInt aError)
+ {
+ LOG( "CLocationRecord::HandleConversionError(), begin" );
+ ARG_USED(aError);
+ if(iRemapState == ERemapNwGeoConverterInProgress)
+ {
+ iRemapState = ERemapProgressNone;
+ }
+ else if ( iMediaItems.Count() > 0 )
+ {
+ TLocationSnapshotItem* item = iMediaItems[0];
+ iMediaItems.Remove(0);
+ iMediaItems.Compress();
+ iMediaHandlingFlag &= ~KLocationQueryInProgress;
+ delete item;
+ }
+ // let's not use multiple access point.
+#ifdef LOC_REVERSEGEOCODE
+ if(!(iMediaHandlingFlag & KReverseGeoCodingInProgress) &&
+ iLocationItems.Count() > 0)
+ {
+ iMediaHandlingFlag |= KReverseGeoCodingInProgress;
+
+ if(iRevGeocoderPlugin)
+ {
+ TRAP_IGNORE(iRevGeocoderPlugin->GetAddressByCoordinateL
+ ( iLocationItems[0]->iLocationData.iPosition,
+ iConnectionOption));
+ }
+ }
+ if((iMediaHandlingFlag & KSnapGeoConvertInProgress) > 0 ||
+ (iMediaHandlingFlag & KReverseGeoCodingInProgress) > 0)
+#else
+ if((iMediaHandlingFlag & KSnapGeoConvertInProgress) > 0)
+#endif //LOC_REVERSEGEOCODE
+ {
+ // stop n/w info change listener, since device may connect to n/w
+ // and local trail will receive so many call backs on current n/w info change.
+ iNetworkInfoChangeListener->StopNwInfoChangeNotifier();
+ }
+ else
+ {
+ iNetworkInfoChangeListener->StartNwInfoChangeNotifier();
+ }
+ TRAP_IGNORE(FindLocationFromDBL());
+ GeoTaggingCompleted();
+ LOG( "CLocationRecord::HandleConversionError(), end" );
+ }
+
+#endif // LOC_GEOTAGGING_CELLID
+
+// --------------------------------------------------------------------------
+// CLocationRecord::SetMdeSession
+// --------------------------------------------------------------------------
+//
EXPORT_C void CLocationRecord::SetMdeSession( CMdESession* aSession )
{
+ LOG( "CLocationRecord::SetMdeSession(), begin" );
iMdeSession = aSession;
+#ifdef LOC_REVERSEGEOCODE
+ iTagCreator->SetSession( aSession );
+#endif
TRAPD(err, iRemapper->InitialiseL( aSession ));
if( err != KErrNone )
{
delete iRemapper;
iRemapper = NULL;
}
+ TRAP(err, InitialiseL() );
+ LOG( "CLocationRecord::SetMdeSession(), end" );
}
+// --------------------------------------------------------------------------
+// CLocationRecord::InitialiseL
+// --------------------------------------------------------------------------
+//
+void CLocationRecord::InitialiseL()
+ {
+ LOG( "CLocationRecord::InitialiseL(), begin" );
+ // namespace defaults
+ iNamespaceDef = &iMdeSession->GetDefaultNamespaceDefL();
+
+ // location object definitions
+ iLocationObjectDef = &iNamespaceDef->GetObjectDefL( Location::KLocationObject );
+ iLatitudeDef = &iLocationObjectDef->GetPropertyDefL( Location::KLatitudeProperty );
+ iLongitudeDef = &iLocationObjectDef->GetPropertyDefL( Location::KLongitudeProperty );
+ iAltitudeDef = &iLocationObjectDef->GetPropertyDefL( Location::KAltitudeProperty );
+ LOG( "CLocationRecord::InitialiseL(), end" );
+ }
+
+
+// --------------------------------------------------------------------------
+// CLocationRecord::StartTimerL
+// --------------------------------------------------------------------------
+//
void CLocationRecord::StartTimerL()
{
- LOG("CLocationRecord::StartTimerL");
+ LOG("CLocationRecord::StartTimerL,begin");
if( !iNetworkInfoTimer->IsActive() )
{
iNetworkInfoTimer->Start( iInterval, iInterval, TCallBack( UpdateNetworkInfo, this ) );
}
+ LOG( "CLocationRecord::StartL(), end" );
}
+
+// --------------------------------------------------------------------------
+// CLocationRecord::GetMdeObjectTimeL
+// --------------------------------------------------------------------------
+//
TTime CLocationRecord::GetMdeObjectTimeL( TItemId aObjectId )
{
+ LOG( "CLocationRecord::GetMdeObjectTimeL(), begin" );
CMdENamespaceDef& namespaceDef = iMdeSession->GetDefaultNamespaceDefL();
CMdEObjectDef& objectDef = namespaceDef.GetObjectDefL( Object::KBaseObject );
@@ -1114,11 +2151,79 @@
return timeValue;
}
+
+
+// --------------------------------------------------------------------------
+// CLocationRecord::RemappingNeeded
+// --------------------------------------------------------------------------
+//
EXPORT_C TBool CLocationRecord::RemappingNeeded()
{
- return iRemapper->ItemsInQueue();
+ return ( iRemapper->ItemsInQueue()
+ && (iRemapState == ERemapProgressNone));
}
+
+
+
+// --------------------------------------------------------------------------
+// CLocationRecord::FindLocationWithSameNetInfoL()
+// check any location object already exists with same network info
+// --------------------------------------------------------------------------
+//
+void CLocationRecord::FindLocationWithSameNetInfoL()
+ {
+ LOG( "CLocationRecord::FindLocationWithSameNetInfoL(), begin" );
+ if(iMediaItems[0]->iLocationData.iNetworkInfo.iCellId > 0 &&
+ iMediaItems[0]->iLocationData.iNetworkInfo.iCountryCode.Length() > 0 &&
+ iMediaItems[0]->iLocationData.iNetworkInfo.iNetworkId.Length() > 0)
+ {
+ CMdEPropertyDef& cellIdDef = iLocationObjectDef->GetPropertyDefL(
+ Location::KCellIdProperty );
+ CMdEPropertyDef& locationCodeDef = iLocationObjectDef->GetPropertyDefL(
+ Location::KLocationAreaCodeProperty );
+ CMdEPropertyDef& countryCodeDef = iLocationObjectDef->GetPropertyDefL(
+ Location::KCountryCodeProperty );
+ CMdEPropertyDef& networkCodeDef = iLocationObjectDef->GetPropertyDefL(
+ Location::KNetworkCodeProperty );
+
+ if(iNetLocationQuery)
+ {
+ iNetLocationQuery->RemoveObserver(*this);
+ iNetLocationQuery->Cancel();
+ delete iNetLocationQuery;
+ iNetLocationQuery = NULL;
+ }
+ iNetLocationQuery = iMdeSession->NewObjectQueryL( *iNamespaceDef, *iLocationObjectDef, this );
+ CMdELogicCondition& cond = iNetLocationQuery->Conditions();
+ cond.SetOperator( ELogicConditionOperatorAnd );
+
+ cond.AddPropertyConditionL( cellIdDef,
+ TMdEUintEqual( iMediaItems[0]->iLocationData.iNetworkInfo.iCellId) );
+ cond.AddPropertyConditionL( locationCodeDef,
+ TMdEUintEqual( iMediaItems[0]->iLocationData.iNetworkInfo.iLocationAreaCode) );
+ cond.AddPropertyConditionL( countryCodeDef, ETextPropertyConditionCompareEquals,
+ iMediaItems[0]->iLocationData.iNetworkInfo.iCountryCode );
+ cond.AddPropertyConditionL( networkCodeDef, ETextPropertyConditionCompareEquals,
+ iMediaItems[0]->iLocationData.iNetworkInfo.iNetworkId );
+
+ iNetLocationQuery->FindL(1, 1);
+ iMediaHandlingFlag |= KLocationQueryInProgress;
+ // iMediaHandlingFlag |= KNetQueryInProgress;
+ }
+ else
+ {
+ TLocationSnapshotItem* firstPtr = iMediaItems[0];
+ iMediaItems.Remove(0);
+ delete firstPtr;
+ iMediaItems.Compress();
+ iMediaHandlingFlag &= ~KLocationQueryInProgress;
+ FindLocationFromDBL();
+ }
+ LOG( "CLocationRecord::FindLocationWithSameNetInfoL(), end" );
+
+ }
+
EXPORT_C TBool CLocationRecord::IsLowBattery()
{
LOG("CLocationRecord::IsLowBattery()");
@@ -1135,7 +2240,526 @@
{
return ETrue;
}
+ }
+
+// --------------------------------------------------------------------------
+// CLocationRecord::GeoTaggingCompleted
+// --------------------------------------------------------------------------
+//
+void CLocationRecord::GeoTaggingCompleted()
+ {
+ LOG( "CLocationRecord::GeoTaggingCompleted(), begin" );
+ if((iMediaItems.Count() == 0)
+#ifdef LOC_REVERSEGEOCODE
+ && (iLocationItems.Count() == 0)
+#endif //LOC_REVERSEGEOCODE
+ )
+ {
+ LOG("Geo tagging completed");
+ iGeoTaggerObserver.GeoTaggingCompleted(KErrNone);
+ // fallback to silent
+#ifdef LOC_REVERSEGEOCODE
+ iConnectionOption = ESilent;
+#endif //LOC_REVERSEGEOCODE
+ }
+ LOG( "CLocationRecord::GeoTaggingCompleted(), end" );
+ }
+
+
+
+
+// --------------------------------------------------------------------------
+// CLocationRecord::TaggingInProgress
+// --------------------------------------------------------------------------
+//
+EXPORT_C TBool CLocationRecord::TaggingInProgress()
+ {
+ LOG( "CLocationRecord::TaggingInProgress(), begin" );
+ TBool retVal = EFalse;
+#ifdef LOC_REVERSEGEOCODE
+ if( ((iMediaItems.Count() > 0) || (iLocationItems.Count() > 0) )
+ && (iRevGeocoderPlugin && iRevGeocoderPlugin->SilentConnectionAllowed()))
+#else
+ if( iMediaItems.Count() > 0 )
+
+#endif //LOC_REVERSEGEOCODE
+ {
+#ifdef LOC_REVERSEGEOCODE
+ if(!(iMediaHandlingFlag & KReverseGeoCodingInProgress))
+ {
+ // start geocoding
+
+ if (iLocationItems.Count() > 0 )
+ {
+ iMediaHandlingFlag |= KReverseGeoCodingInProgress;
+
+ TRAP_IGNORE( iRevGeocoderPlugin->GetAddressByCoordinateL(
+ iLocationItems[0]->iLocationData.iPosition,
+ iConnectionOption) );
+
+ retVal = ETrue;
+ }
+ }
+ else
+ {
+ retVal = ETrue;
+ }
+#endif //LOC_REVERSEGEOCODE
+ if(!(iMediaHandlingFlag & KLocationQueryInProgress))
+ {
+ if(iMediaItems.Count() > 0)
+ {
+ HandleFindLocationFromDB();
+ retVal = ETrue;
+ }
+ }
+ else
+ {
+ retVal = ETrue;
+ }
+ }
+ else
+ {
+ // Flash the array to avoid double tagging by photos & localrail.
+ }
+ LOG( "CLocationRecord::TaggingInProgress(), end" );
+ return retVal;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CLocationRecord::GetCurrentRegisteredNw()
+// ----------------------------------------------------------------------------
+EXPORT_C RMobilePhone::TMobilePhoneNetworkInfoV2& CLocationRecord::GetCurrentRegisteredNw()
+ {
+ LOG( "CLocationRecord::GetCurrentRegisteredNw ,begin" );
+ return iNetworkInfoChangeListener->GetCurrentRegisterNw();
+ }
+
+// --------------------------------------------------------------------------
+// CLocationRecord::StartGeoTagging
+// --------------------------------------------------------------------------
+//
+EXPORT_C TBool CLocationRecord::StartGeoTagging(const TConnectionOption aConnectionOption)
+ {
+ LOG( "CLocationRecord::StartGeoTagging(), begin" );
+ TBool retVal = EFalse;
+ ARG_USED(aConnectionOption);
+ if((iMediaItems.Count() > 0)
+#ifdef LOC_REVERSEGEOCODE
+ || (iLocationItems.Count() > 0)
+#endif //LOC_REVERSEGEOCODE
+ )
+ {
+#ifdef LOC_REVERSEGEOCODE
+ iConnectionOption = aConnectionOption;
+ if(!(iMediaHandlingFlag & KReverseGeoCodingInProgress))
+ {
+ // start geocoding
+ if (iLocationItems.Count() > 0 )
+ {
+ iMediaHandlingFlag |= KReverseGeoCodingInProgress;
+ if(iRevGeocoderPlugin)
+ {
+ TRAP_IGNORE( iRevGeocoderPlugin->GetAddressByCoordinateL(
+ iLocationItems[0]->iLocationData.iPosition,
+ iConnectionOption) );
+ }
+ retVal = ETrue;
+ }
+ }
+ else
+ {
+ retVal = ETrue;
+ }
+#endif //LOC_REVERSEGEOCODE
+ if(!(iMediaHandlingFlag & KLocationQueryInProgress))
+ {
+ if(iMediaItems.Count() > 0)
+ {
+ HandleFindLocationFromDB();
+ retVal = ETrue;
+ }
+ }
+ else
+ {
+ retVal = ETrue;
+ }
+ }
+ LOG( "CLocationRecord::StartGeoTagging(), end" );
+ return retVal;
+ }
+
+
+// --------------------------------------------------------------------------
+// CLocationRecord::CancelGeoTagging
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CLocationRecord::CancelGeoTagging()
+ {
+#ifdef LOC_REVERSEGEOCODE
+ LOG1( "CLocationRecord::CancelGeoTagging(), Connetion opt - %d",
+ iConnectionOption );
+ // set this to default connection.
+ iConnectionOption = ESilent;
+#endif //LOC_REVERSEGEOCODE
+ }
+
+
+#ifdef LOC_REVERSEGEOCODE
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::GetRelatedImages()
+// Find any image, already related to this location object
+// --------------------------------------------------------------------------
+//
+void CLocationRecord::GetRelatedImageL(TItemId aLocID)
+ {
+ LOG( "CLocationRecord::GetRelatedImageL(), begin" );
+ CMdEObjectDef& imageObjDef = iNamespaceDef->GetObjectDefL( Image::KImageObject );
+ if(iImageQuery)
+ {
+ iImageQuery->RemoveObserver(*this);
+ iImageQuery->Cancel();
+ delete iImageQuery;
+ iImageQuery = NULL;
+ }
+
+ iImageQuery = iMdeSession->NewRelationQueryL( *iNamespaceDef, this );
+ User::LeaveIfNull( iImageQuery );
+
+ iImageQuery->SetResultMode( EQueryResultModeItem );
+
+ // both left and right condition must match
+ CMdERelationCondition& filterCond = iImageQuery->Conditions().
+ AddRelationConditionL( ERelationConditionSideRight );
+
+ // left one must be any image object.
+ filterCond.LeftL().AddObjectConditionL( imageObjDef );
+
+ // right one must be this location object
+ filterCond.RightL().AddObjectConditionL( aLocID );
+
+ iImageQuery->FindL(1, 1); // results to a call to HandleQueryCompleted()
+ LOG( "CLocationRecord::GetRelatedImageL(), end" );
}
+
+
+// --------------------------------------------------------------------------
+// CLocationRecord::ReverseGeocodeComplete()
+// Get address details like country, city..
+// Create country and city tags and attach to the current image/video object
+// --------------------------------------------------------------------------
+//
+void CLocationRecord::ReverseGeocodeComplete( TInt& aErrorcode, MAddressInfo& aAddressInfo )
+ {
+ LOG( "CLocationRecord::ReverseGeocodeComplete(), begin" );
+ TItemId countryTagId(0);
+ TItemId cityTagId(0);
+
+ iMediaHandlingFlag &= (~KReverseGeoCodingInProgress);
+ TLocationSnapshotItem* snapshotItem = NULL;
+ if( aErrorcode == KErrNone )
+ {
+ TPtrC countryPtr( aAddressInfo.GetCountryName() );
+ TPtrC cityPtr( aAddressInfo.GetCity() );
+ TRAP_IGNORE( iTagCreator->CreateLocationTagsL( countryPtr, countryTagId,
+ cityPtr, cityTagId ) );
+ if ( iRemapState == ERemapRevGeoCodeInProgress)
+ {
+ TRAP_IGNORE( iRemapper->AttachGeoTagsL( iTagCreator, countryTagId, cityTagId ) );
+ iRemapState = ERemapProgressNone;
+ }
+ else
+ {
+ if(iLocationItems.Count() > 0)
+ {
+ iLocationItems[0]->iCountryTagId = countryTagId;
+ iLocationItems[0]->iCityTagId = cityTagId;
+ iLastLocationItem = (*iLocationItems[0]);
+
+ TRAP_IGNORE( iTagCreator->AttachTagsL(
+ iLocationItems[0]->iObjectId, countryTagId, cityTagId ) );
+ }
+ }
+ if(iLastMediaItem.iFlag == 0)
+ {
+ LOG("Last media item is null\n");
+ }
+ if ( iLastMediaItem.iFlag > 0 && iLastMediaItem.iLocationId == iLastLocationItem.iLocationId )
+ {
+ LOG("Updating country/city\n");
+ iLastMediaItem.iCountryTagId = countryTagId;
+ iLastMediaItem.iCityTagId = cityTagId;
+ }
+
+ //check other items in the array has same location
+ for ( TInt index = iLocationItems.Count() - 1; index > 0; index--)
+ {
+ if ( iLocationItems[index]->iLocationId == iLastLocationItem.iLocationId )
+ {
+ LOG1("Attached tags in for - %d\n", index);
+ TRAP_IGNORE( iTagCreator->AttachTagsL(
+ iLocationItems[index]->iObjectId, countryTagId, cityTagId ) );
+ snapshotItem = iLocationItems[index];
+ iLocationItems.Remove(index);
+ delete snapshotItem;
+ }
+ }
+ }
+ else
+ {
+ //handle error
+ }
+
+ //irrespective of error or not, remove current(first) item to proceed further
+ if ( iLocationItems.Count() > 0 )
+ {
+ snapshotItem = iLocationItems[0];
+ iLocationItems.Remove(0);
+ delete snapshotItem;
+ iLocationItems.Compress();
+ }
+ if (aErrorcode == KErrNone)
+ {
+ if(iRemapState == ERemapRevGeoCodePending)
+ {
+ if(iRevGeocoderPlugin)
+ {
+ TRAPD(err, iRevGeocoderPlugin->GetAddressByCoordinateL( iNewItem.iLocationData.iPosition, iConnectionOption );)
+ if(err == KErrNone)
+ {
+ // Remap geo coding in pending state
+ iRemapState = ERemapRevGeoCodeInProgress;
+ //Find the address by coordinate, results a call to ReverseGeocodeComplete()
+ iMediaHandlingFlag |= KReverseGeoCodingInProgress;
+ }
+ }
+ }
+ else if(iLocationItems.Count() > 0)
+ {
+ if(iRevGeocoderPlugin)
+ {
+ TRAPD(err, iRevGeocoderPlugin->GetAddressByCoordinateL(
+ iLocationItems[0]->iLocationData.iPosition,
+ iConnectionOption) );
+ if(err == KErrNone)
+ {
+ // queue is not empty process the next.
+ iMediaHandlingFlag |= KReverseGeoCodingInProgress;
+ }
+ }
+ }
+ }
+
+ GeoTaggingCompleted();
+ if((iMediaHandlingFlag & KSnapGeoConvertInProgress) > 0 ||
+ (iMediaHandlingFlag & KReverseGeoCodingInProgress) > 0)
+ {
+ // stop n/w info change listener, since device may connect to n/w
+ // and local trail will receive so many call backs on current n/w info change.
+ iNetworkInfoChangeListener->StopNwInfoChangeNotifier();
+ }
+ else
+ {
+ iNetworkInfoChangeListener->StartNwInfoChangeNotifier();
+ }
+ LOG( "CLocationRecord::ReverseGeocodeComplete(), end" );
+ }
+
+
+// ----------------------------------------------------------------------------
+// CLocationRecord::IsRegisteredAtHomeNetwork()
+// ----------------------------------------------------------------------------
+TBool CLocationRecord::IsRegisteredAtHomeNetwork()
+ {
+ LOG( "CLocationRecord::IsRegisteredAtHomeNetwork" );
+ return iGeoTaggerObserver.IsRegisteredAtHomeNetwork();
+ }
+
+// ----------------------------------------------------------------------------
+// CLocationRecord::GetHomeNetworkInfo()
+// ----------------------------------------------------------------------------
+const RMobilePhone::TMobilePhoneNetworkInfoV1&
+ CLocationRecord::GetHomeNetworkInfo(TBool& aHomeNwInfoAvailableFlag)
+ {
+ LOG( "CLocationRecord::GetHomeNetworkInfo" );
+ return iGeoTaggerObserver.GetHomeNetworkInfo(aHomeNwInfoAvailableFlag);
+ }
+
+// ----------------------------------------------------------------------------
+// CLocationRecord::GetCurrentRegisterNw()
+// ----------------------------------------------------------------------------
+RMobilePhone::TMobilePhoneNetworkInfoV2& CLocationRecord::GetCurrentRegisterNw()
+ {
+ LOG( "CLocationRecord::GetCurrentRegisterNw ,begin" );
+ return GetCurrentRegisteredNw();
+ }
+
+
+// --------------------------------------------------------------------------
+// CLocationRecord::HandleTagQuery()
+// handle if only gps info available
+// --------------------------------------------------------------------------
+//
+void CLocationRecord::HandleTagQueryL( CMdEQuery& aQuery )
+ {
+ LOG( "CLocationRecord::HandleTagQueryL(), begin" );
+ TItemId countryTagId = 0;
+ TItemId cityTagId = 0;
+ TRAPD( error, FindCountryAndCityTagL( aQuery, countryTagId, cityTagId ) );
+ if ( error == KErrNone )
+ {
+ LOG1("Media count - %d\n", iMediaItems.Count());
+ if ( !countryTagId && !cityTagId )
+ {
+ if ( iMediaItems.Count() > 0 )
+ {
+ iLocationItems.Append( iMediaItems[0] );
+ if((iMediaItems[0]->iFlag & KSnapMediaFile) > 0)
+ {
+ iLastMediaItem = *(iMediaItems[0]);
+ }
+ iMediaItems.Remove(0);
+ iMediaItems.Compress();
+ iMediaHandlingFlag &= ~KLocationQueryInProgress;
+ }
+
+#ifdef LOC_REVERSEGEOCODE
+ if(!(iMediaHandlingFlag & KReverseGeoCodingInProgress) &&
+ iLocationItems.Count() > 0)
+ {
+ iMediaHandlingFlag |= KReverseGeoCodingInProgress;
+ if(iRevGeocoderPlugin)
+ {
+ iRevGeocoderPlugin->GetAddressByCoordinateL
+ ( iLocationItems[0]->iLocationData.iPosition,
+ iConnectionOption);
+ }
+ }
+#endif //LOC_REVERSEGEOCODE
+ }
+ else
+ {
+
+ iTagCreator->AttachTagsL( iMediaItems[0]->iObjectId, countryTagId, cityTagId );
+ if ( iMediaItems.Count() > 0 )
+ {
+ iMediaItems[0]->iCountryTagId = countryTagId;
+ iMediaItems[0]->iCityTagId = cityTagId;
+ TLocationSnapshotItem* item = iMediaItems[0];
+ if((iMediaItems[0]->iFlag & KSnapMediaFile) > 0)
+ {
+ iLastMediaItem = *item;
+ }
+ iMediaItems.Remove(0);
+ iMediaItems.Compress();
+ iMediaHandlingFlag &= ~KLocationQueryInProgress;
+ delete item;
+ }
+ }
+
+ }
+ if ( iMediaItems.Count() > 0 )
+ {
+ FindLocationFromDBL();
+ }
+ LOG( "CLocationRecord::HandleTagQueryL(), end" );
+ }
+
+
+// --------------------------------------------------------------------------
+// CLocationRecord::FindCountryAndCityTagL()
+// Go through all attached tags to get location tags only
+// --------------------------------------------------------------------------
+//
+void CLocationRecord::FindCountryAndCityTagL( CMdEQuery& aQuery,
+ TItemId& aCountryTagId, TItemId& aCityTagId )
+ {
+ LOG( "CLocationRecord::FindCountryAndCityTagL(), begin" );
+ TItemId tagId = 0;
+ CMdEObject* object = NULL;
+ TInt error = KErrNone;
+
+ const TInt count = aQuery.Count();
+
+ for ( TInt i = 0; i < count; i++ )
+ {
+ CMdERelation& relation = static_cast<CMdERelation&>( aQuery.ResultItem( i ) );
+
+ tagId = relation.RightObjectId();
+ TRAP_IGNORE( object = iMdeSession->GetObjectL( tagId ) );
+
+ if ( !aCountryTagId )
+ {
+ error = object->Uri().Find( KCountry );
+ //just make sure 'country' appears first in the tag uri
+ if ( error == KErrNone )
+ {
+ aCountryTagId = tagId;
+ continue;
+ }
+ }
+
+ if ( !aCityTagId )
+ {
+ error = object->Uri().Find( KCity );
+ if ( error == KErrNone )
+ {
+ aCityTagId = tagId;
+ }
+ }
+
+ if ( aCountryTagId && aCityTagId )
+ {
+ i = count;
+ }
+ }
+ LOG( "CLocationRecord::FindCountryAndCityTagL(), end" );
+
+ }
+
+// --------------------------------------------------------------------------
+// CLocationRecord::GetTagsL()
+// --------------------------------------------------------------------------
+//
+void CLocationRecord::GetTagsL( TItemId aImageID )
+ {
+ LOG( "CLocationRecord::GetTagsL(), begin" );
+ CMdEObjectDef& tagObjectDef = iNamespaceDef->GetObjectDefL( Tag::KTagObject );
+
+ if(iTagQuery)
+ {
+ iTagQuery->RemoveObserver(*this);
+ iTagQuery->Cancel();
+ delete iTagQuery;
+ iTagQuery = NULL;
+ }
+
+ iTagQuery = iMdeSession->NewRelationQueryL( *iNamespaceDef, this );
+ User::LeaveIfNull( iTagQuery );
+
+ iTagQuery->SetResultMode( EQueryResultModeItem );
+
+ // both left and right condition must match
+ CMdERelationCondition& filterCond = iTagQuery->Conditions().
+ AddRelationConditionL( ERelationConditionSideRight );
+
+ // left one must be this image object.
+ filterCond.LeftL().AddObjectConditionL( aImageID );
+
+ // right one must be tag object
+ filterCond.RightL().AddObjectConditionL( tagObjectDef );
+
+ iTagQuery->FindL(); // results to a call to HandleQueryCompleted()
+ LOG( "CLocationRecord::GetTagsL(), end" );
+ }
+
+
+#endif //LOC_REVERSEGEOCODE
+
// End of file
+
+
--- a/locationmanager/locationtrail/src/cnetworkinfo.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/locationtrail/src/cnetworkinfo.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -20,6 +20,9 @@
#include "cnetworkinfo.h"
#include "locationmanagerdebug.h"
+
+
+
// --------------------------------------------------------------------------
// CNetworkInfo::NewL
// --------------------------------------------------------------------------
@@ -31,7 +34,6 @@
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop( self );
- LOG( "CNetworkInfo::NewL(), end" );
return self;
}
@@ -41,12 +43,13 @@
//
CNetworkInfo::CNetworkInfo( MNetworkInfoObserver* aTrail )
: CActive( CActive::EPriorityStandard ),
- iFirstTime( EFalse ),
- iTelephony( NULL ),
- iNetworkInfoV1Pckg( iNetworkInfoV1 )
+ iTrail ( aTrail ),
+ iMobilePhone(aTrail->GetMobilePhone4NwInfo()),
+ iState( ENetworkInfoNoOptState ),
+
+ iMMNetworkInfoPckg( iMMNetworkInfo )
{
CActiveScheduler::Add( this );
- iTrail = aTrail;
}
// --------------------------------------------------------------------------
@@ -56,17 +59,7 @@
void CNetworkInfo::ConstructL()
{
LOG( "CNetworkInfo::ConstructL(), begin" );
- iFirstTime = ETrue;
- iTelephony = CTelephony::NewL();
- iTelephony->GetCurrentNetworkInfo(iStatus, iNetworkInfoV1Pckg);
- LOG( "CNetworkInfo::ConstructL(), iTelephony->GetCurrentNetworkInfo called" );
-
- if ( IsActive() )
- {
- Cancel();
- }
- SetActive();
-
+ StartNwInfoChangeNotifier();
LOG( "CNetworkInfo::ConstructL(), end" );
}
@@ -76,8 +69,8 @@
//
EXPORT_C CNetworkInfo::~CNetworkInfo()
{
+ // we are not owning RMobilePhone obj.. DON'T CLOSE it.
Cancel();
- delete iTelephony;
}
// --------------------------------------------------------------------------
@@ -90,25 +83,61 @@
}
// --------------------------------------------------------------------------
+// CNetworkInfo::StartNwInfoChangeNotifier
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CNetworkInfo::StartNwInfoChangeNotifier()
+ {
+ LOG( "CNetworkInfo::StartNwInfoChangeNotifier(), begin" );
+ if ( !IsActive())
+ {
+ // get current n/w info first and from RunL start notifier
+ iState = ENetworkInfoOptGetState;
+
+ iMobilePhone.GetCurrentNetwork(iStatus, iMMNetworkInfoPckg, iMMArea);
+ SetActive();
+ }
+
+ LOG( "CNetworkInfo::StartNwInfoChangeNotifier(), end" );
+ }
+
+// --------------------------------------------------------------------------
+// CNetworkInfo::StopNwInfoChangeNotifier
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CNetworkInfo::StopNwInfoChangeNotifier()
+ {
+ LOG( "CNetworkInfo::StopNwInfoChangeNotifier(), begin" );
+ Cancel();
+ iState = ENetworkInfoNoOptState;
+ LOG( "CNetworkInfo::StopNwInfoChangeNotifier(), end" );
+ }
+
+// --------------------------------------------------------------------------
// CNetworkInfo::RunL
// --------------------------------------------------------------------------
//
void CNetworkInfo::RunL()
{
LOG( "CNetworkInfo::RunL(), begin" );
- iFirstTime = EFalse;
- iTrail->NetworkInfo( iNetworkInfoV1, iStatus.Int() );
- LOG( "CNetworkInfo::RunL(), iTrail->NetworkInfo called" );
-
- iTelephony->NotifyChange(iStatus, CTelephony::ECurrentNetworkInfoChange, iNetworkInfoV1Pckg);
- LOG( "CNetworkInfo::RunL(), iTelephony->NotifyChange called" );
-
- if ( IsActive() )
+ // reset the flag first
+ iState = ENetworkInfoNoOptState;
+ if(iStatus == KErrNone)
+ {
+ // convert the network info to CTelephony network info. just to give backward compatibility
+ MapNetworkInfo(&iNetworkInfoV1, &iMMNetworkInfo, &iMMArea);
+ }
+ if(iTrail)
+ {
+ iTrail->NetworkInfo( iNetworkInfoV1, iStatus.Int() );
+ }
+ // listen to n/w info change
+ if ( !IsActive() )
{
- Cancel();
- }
- SetActive();
-
+ iState = ENetworkInfoOptNotifyState;
+ iMobilePhone.NotifyCurrentNetworkChange(iStatus,iMMNetworkInfoPckg, iMMArea);
+ SetActive();
+ }
LOG( "CNetworkInfo::RunL(), end" );
}
@@ -118,21 +147,190 @@
//
void CNetworkInfo::DoCancel()
{
- LOG( "CNetworkInfo::DoCancel(), begin" );
- if ( IsActive() )
- {
- if ( iFirstTime )
+ LOG1( "CNetworkInfo::DoCancel(), begin. State - %d", iState);
+ switch ( iState )
+ {
+ case ENetworkInfoOptGetState:
{
- LOG( "CNetworkInfo::DoCancel(), cancelling CTelephony::EGetCurrentNetworkInfoCancel" );
- iTelephony->CancelAsync( CTelephony::EGetCurrentNetworkInfoCancel );
+ LOG( "Cancel get current n/w info change" );
+ iMobilePhone.CancelAsyncRequest( EMobilePhoneGetCurrentNetwork);
+ break;
}
- else
+ case ENetworkInfoOptNotifyState:
{
- LOG( "CNetworkInfo::DoCancel(), cancelling CTelephony::ECurrentNetworkInfoChangeCancel" );
- iTelephony->CancelAsync( CTelephony::ECurrentNetworkInfoChangeCancel );
- }
- }
+ LOG( "Cancel current n/w info change" );
+ iMobilePhone.CancelAsyncRequest( EMobilePhoneNotifyCurrentNetworkChange);
+ break;
+ }
+ default:
+ break;
+ }
+ iState = ENetworkInfoNoOptState;
LOG( "CNetworkInfo::DoCancel(), end" );
}
+// --------------------------------------------------------------------------
+// CNetworkInfo::MapNetworkInfo
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CNetworkInfo::MapNetworkInfo(CTelephony::TNetworkInfoV1* aTelNetworkInfo,
+ RMobilePhone::TMobilePhoneNetworkInfoV2* aMMNetworkInfo,
+ RMobilePhone::TMobilePhoneLocationAreaV1* aMMArea)
+ {
+ LOG( "CNetworkInfo::MapNetworkInfo(), begin" );
+ switch(aMMNetworkInfo->iMode)
+ {
+ case RMobilePhone::ENetworkModeUnknown:
+ aTelNetworkInfo->iMode=CTelephony::ENetworkModeUnknown;
+ break;
+ case RMobilePhone::ENetworkModeUnregistered:
+ aTelNetworkInfo->iMode=CTelephony::ENetworkModeUnregistered;
+ break;
+ case RMobilePhone::ENetworkModeGsm:
+ aTelNetworkInfo->iMode=CTelephony::ENetworkModeGsm;
+ break;
+ case RMobilePhone::ENetworkModeAmps:
+ aTelNetworkInfo->iMode=CTelephony::ENetworkModeAmps;
+ break;
+ case RMobilePhone::ENetworkModeCdma95:
+ aTelNetworkInfo->iMode=CTelephony::ENetworkModeCdma95;
+ break;
+ case RMobilePhone::ENetworkModeCdma2000:
+ aTelNetworkInfo->iMode=CTelephony::ENetworkModeCdma2000;
+ break;
+ case RMobilePhone::ENetworkModeWcdma:
+ aTelNetworkInfo->iMode=CTelephony::ENetworkModeWcdma;
+ break;
+ case RMobilePhone::ENetworkModeTdcdma:
+ aTelNetworkInfo->iMode=CTelephony::ENetworkModeTdcdma;
+ break;
+ default:
+ aTelNetworkInfo->iMode=CTelephony::ENetworkModeUnknown;
+ }
+
+ switch(aMMNetworkInfo->iStatus)
+ {
+ case RMobilePhone::ENetworkStatusUnknown:
+ aTelNetworkInfo->iStatus=CTelephony::ENetworkStatusUnknown;
+ break;
+ case RMobilePhone::ENetworkStatusAvailable:
+ aTelNetworkInfo->iStatus=CTelephony::ENetworkStatusAvailable;
+ break;
+ case RMobilePhone::ENetworkStatusCurrent:
+ aTelNetworkInfo->iStatus=CTelephony::ENetworkStatusCurrent;
+ break;
+ case RMobilePhone::ENetworkStatusForbidden:
+ aTelNetworkInfo->iStatus=CTelephony::ENetworkStatusForbidden;
+ break;
+ default:
+ aTelNetworkInfo->iStatus=CTelephony::ENetworkStatusUnknown;
+ }
+
+ switch(aMMNetworkInfo->iBandInfo)
+ {
+ case RMobilePhone::EBandUnknown:
+ aTelNetworkInfo->iBandInfo=CTelephony::EBandUnknown;
+ break;
+ case RMobilePhone::E800BandA:
+ aTelNetworkInfo->iBandInfo=CTelephony::E800BandA;
+ break;
+ case RMobilePhone::E800BandB:
+ aTelNetworkInfo->iBandInfo=CTelephony::E800BandB;
+ break;
+ case RMobilePhone::E800BandC:
+ aTelNetworkInfo->iBandInfo=CTelephony::E800BandC;
+ break;
+ case RMobilePhone::E1900BandA:
+ aTelNetworkInfo->iBandInfo=CTelephony::E1900BandA;
+ break;
+ case RMobilePhone::E1900BandB:
+ aTelNetworkInfo->iBandInfo=CTelephony::E1900BandB;
+ break;
+ case RMobilePhone::E1900BandC:
+ aTelNetworkInfo->iBandInfo=CTelephony::E1900BandC;
+ break;
+ case RMobilePhone::E1900BandD:
+ aTelNetworkInfo->iBandInfo=CTelephony::E1900BandD;
+ break;
+ case RMobilePhone::E1900BandE:
+ aTelNetworkInfo->iBandInfo=CTelephony::E1900BandE;
+ break;
+ case RMobilePhone::E1900BandF:
+ aTelNetworkInfo->iBandInfo=CTelephony::E1900BandF;
+ break;
+ default:
+ aTelNetworkInfo->iBandInfo=CTelephony::EBandUnknown;
+ }
+
+ aTelNetworkInfo->iCountryCode.Copy(aMMNetworkInfo->iCountryCode);
+ aTelNetworkInfo->iNetworkId.Copy(aMMNetworkInfo->iNetworkId);
+ aTelNetworkInfo->iDisplayTag.Copy(aMMNetworkInfo->iDisplayTag);
+
+ TInt maxLength = aTelNetworkInfo->iShortName.MaxLength();
+ if (aMMNetworkInfo->iShortName.Length() > maxLength)
+ {
+ aTelNetworkInfo->iShortName.Copy(aMMNetworkInfo->iShortName.Ptr(), maxLength);
+ }
+ else
+ {
+ aTelNetworkInfo->iShortName.Copy(aMMNetworkInfo->iShortName);
+ }
+
+ maxLength = aTelNetworkInfo->iLongName.MaxLength();
+
+ if (aMMNetworkInfo->iLongName.Length() > maxLength)
+ {
+ aTelNetworkInfo->iLongName.Copy(aMMNetworkInfo->iLongName.Ptr(), maxLength);
+ }
+ else
+ {
+ aTelNetworkInfo->iLongName.Copy(aMMNetworkInfo->iLongName);
+ }
+
+ aTelNetworkInfo->iCdmaSID.Copy(aMMNetworkInfo->iCdmaSID);
+
+ if(aMMArea)
+ {
+ aTelNetworkInfo->iAreaKnown=aMMArea->iAreaKnown;
+ aTelNetworkInfo->iLocationAreaCode=aMMArea->iLocationAreaCode;
+ aTelNetworkInfo->iCellId=aMMArea->iCellId;
+ }
+ else
+ {
+ aTelNetworkInfo->iAreaKnown=EFalse;
+ aTelNetworkInfo->iLocationAreaCode=0;
+ aTelNetworkInfo->iCellId=0;
+ }
+
+ //check which paramater class version this is.
+ switch(aMMNetworkInfo->iAccess)
+ {
+ case RMobilePhone::ENetworkAccessUnknown:
+ aTelNetworkInfo->iAccess=CTelephony::ENetworkAccessUnknown;
+ break;
+ case RMobilePhone::ENetworkAccessGsm:
+ aTelNetworkInfo->iAccess=CTelephony::ENetworkAccessGsm;
+ break;
+ case RMobilePhone::ENetworkAccessGsmCompact:
+ aTelNetworkInfo->iAccess=CTelephony::ENetworkAccessGsmCompact;
+ break;
+ case RMobilePhone::ENetworkAccessUtran:
+ aTelNetworkInfo->iAccess=CTelephony::ENetworkAccessUtran;
+ break;
+ default:
+ aTelNetworkInfo->iAccess=CTelephony::ENetworkAccessUnknown;
+ }
+
+ LOG( "CNetworkInfo::MapNetworkInfo(), end" );
+ }
+
+// ----------------------------------------------------------------------------
+// CNetworkInfo::GetCurrentRegisterNw()
+// ----------------------------------------------------------------------------
+RMobilePhone::TMobilePhoneNetworkInfoV2& CNetworkInfo::GetCurrentRegisterNw()
+ {
+ return iMMNetworkInfo;
+ }
+
// End of file
+
--- a/locationmanager/locationtrail/src/cpositioninfo.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/locationtrail/src/cpositioninfo.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -43,7 +43,8 @@
//
CPositionInfo::CPositionInfo( MPositionInfoObserver* aTrail )
: CActive( CActive::EPriorityStandard ),
- iFirstInterval( ETrue )
+ iState( EPositionOptStateNone ),
+ iConnectedPositionServer(EFalse)
{
LOG( "CPositionInfo::CPositionInfo()");
CActiveScheduler::Add( this );
@@ -75,9 +76,7 @@
//
EXPORT_C CPositionInfo::~CPositionInfo()
{
- Cancel();
- iPositioner.Close();
- iPosServer.Close();
+ Stop();
}
// --------------------------------------------------------------------------
@@ -96,34 +95,41 @@
void CPositionInfo::StartL( RLocationTrail::TTrailCaptureSetting aCaptureSetting, TInt aUpdateInterval )
{
LOG( "CPositionInfo::StartL(), begin" );
-
+ if(IsActive())
+ {
+ Cancel();
+ }
iTrailCaptureSetting = aCaptureSetting;
iUpdateInterval = aUpdateInterval;
- iFirstInterval = ETrue;
- iPositionInfo = TPositionSatelliteInfo();
+ iState = EPositionOptStateNone;
- // Set update interval.
- iUpdateOptions.SetUpdateInterval( TTimeIntervalMicroSeconds(KFirstInterval) );
- // Set time out level.
- iUpdateOptions.SetUpdateTimeOut( TTimeIntervalMicroSeconds( KFirstTimeOut) );
- // Positions which have time stamp below KMaxAge can be reused
- iUpdateOptions.SetMaxUpdateAge( TTimeIntervalMicroSeconds(KMaxAge) );
- // Disables location framework to send partial position data
- iUpdateOptions.SetAcceptPartialUpdates( EFalse );
+ iPositionInfo = TPositionSatelliteInfo();
if ( aCaptureSetting == RLocationTrail::ECaptureAll )
{
- User::LeaveIfError( iPosServer.Connect() );
- User::LeaveIfError( iPositioner.Open( iPosServer ) );
- User::LeaveIfError( iPositioner.SetRequestor( CRequestor::ERequestorService,
- CRequestor::EFormatApplication, KRequestor ) );
- User::LeaveIfError( iPositioner.SetUpdateOptions( iUpdateOptions ) );
- iPositioner.NotifyPositionUpdate( iPositionInfo, iStatus );
+ if(!iConnectedPositionServer)
+ {
+ // Positions which have time stamp below KMaxAge can be reused
+ iUpdateOptions.SetMaxUpdateAge( TTimeIntervalMicroSeconds(KMaxAge) );
+ // Disables location framework to send partial position data
+ iUpdateOptions.SetAcceptPartialUpdates( EFalse );
+ User::LeaveIfError( iPosServer.Connect() );
+ CleanupClosePushL(iPosServer);
+ User::LeaveIfError( iPositioner.Open( iPosServer ) );
+ CleanupClosePushL(iPositioner);
+ User::LeaveIfError( iPositioner.SetRequestor( CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KRequestor ) );
+ iUpdateOptions.SetUpdateInterval( TTimeIntervalMicroSeconds (iUpdateInterval) );
+ iUpdateOptions.SetUpdateTimeOut( TTimeIntervalMicroSeconds(KUpdateTimeOut ) );
+ User::LeaveIfError( iPositioner.SetUpdateOptions( iUpdateOptions ) );
+ CleanupStack::Pop(2); // iPositioner, iPosServer
+ iConnectedPositionServer = ETrue;
+ }
+ iState = EPositionOptStateGetLastKnownPosition;
+ iPositioner.GetLastKnownPosition( iPositionInfo, iStatus );
+ SetActive();
}
-
- SetActive();
-
- if ( aCaptureSetting == RLocationTrail::ECaptureNetworkInfo )
+ else if ( aCaptureSetting == RLocationTrail::ECaptureNetworkInfo )
{
TRequestStatus* status = &iStatus;
User::RequestComplete( status, KErrNone );
@@ -138,19 +144,25 @@
//
void CPositionInfo::NextPosition()
{
- iPositionInfo = TPositionSatelliteInfo(); // Clear position info.
- if ( iTrailCaptureSetting == RLocationTrail::ECaptureAll )
- {
- iPositioner.NotifyPositionUpdate( iPositionInfo, iStatus );
- }
-
- SetActive();
-
- if ( iTrailCaptureSetting == RLocationTrail::ECaptureNetworkInfo )
- {
- TRequestStatus* status = &iStatus;
- User::RequestComplete( status, KErrNone );
- }
+ LOG( "CPositionInfo::NextPosition(), begin" );
+ if(!IsActive() && iConnectedPositionServer)
+ {
+ LOG("Not active");
+ iPositionInfo = TPositionSatelliteInfo(); // Clear position info.
+ if ( iTrailCaptureSetting == RLocationTrail::ECaptureAll )
+ {
+ iState = EPositionOptStateNotifyUpdate;
+ iPositioner.NotifyPositionUpdate( iPositionInfo, iStatus );
+ SetActive();
+ }
+ else if ( iTrailCaptureSetting == RLocationTrail::ECaptureNetworkInfo )
+ {
+ SetActive();
+ TRequestStatus* status = &iStatus;
+ User::RequestComplete( status, KErrNone );
+ }
+ }
+ LOG( "CPositionInfo::NextPosition(), end" );
}
// --------------------------------------------------------------------------
@@ -159,10 +171,17 @@
//
void CPositionInfo::Stop()
{
+ LOG( "CPositionInfo::Stop(), begin" );
Cancel();
-
- iPositioner.Close();
- iPosServer.Close();
+ if(iConnectedPositionServer)
+ {
+ iPositioner.Close();
+ iPosServer.Close();
+ iConnectedPositionServer = EFalse;
+ }
+ // reset the state
+ iState = EPositionOptStateNone;
+ LOG( "CPositionInfo::Stop(), end" );
}
// --------------------------------------------------------------------------
@@ -171,22 +190,39 @@
//
void CPositionInfo::RunL()
{
- iTrail->Position( iPositionInfo, iStatus.Int() );
-
- if ( iFirstInterval && IsActive() )
+ LOG( "CPositionInfo::RunL(), begin" );
+ if(iState == EPositionOptStateGetLastKnownPosition)
+ {
+ // get last location.. check the time and if it's within the limit, pass to trail.
+ const TTimeIntervalSeconds KMaxAllowedLastKnownPosition(60*5); // 5 mins
+ TTimeIntervalSeconds interval;
+ TTime now;
+ TPosition lastPosition;
+ iPositionInfo.GetPosition(lastPosition);
+ now.UniversalTime();
+ now.SecondsFrom(lastPosition.Time(), interval);
+ if(iStatus.Int() == KErrNone && interval < KMaxAllowedLastKnownPosition)
+ {
+ LOG("Last know position is recent one");
+ iTrail->Position( iPositionInfo, iStatus.Int() );
+ }
+ else
+ {
+ LOG("Old last know position. Drop it..");
+ }
+ }
+ else
+ {
+ // notify response.. always pass to trail
+ iTrail->Position( iPositionInfo, iStatus.Int() );
+ }
+
+ if ( iTrailCaptureSetting == RLocationTrail::ECaptureAll &&
+ iState != EPositionOptStateNone)
{
- Cancel();
- LOG("CPositionInfo::RunL() - First Time");
- iUpdateOptions.SetUpdateInterval( TTimeIntervalMicroSeconds (iUpdateInterval) );
- iUpdateOptions.SetUpdateTimeOut( TTimeIntervalMicroSeconds(KUpdateTimeOut ) );
- if ( iTrailCaptureSetting == RLocationTrail::ECaptureAll )
- {
- User::LeaveIfError( iPositioner.SetUpdateOptions( iUpdateOptions ) );
- iPositioner.NotifyPositionUpdate( iPositionInfo, iStatus );
- }
- SetActive();
- iFirstInterval = EFalse;
+ NextPosition();
}
+ LOG( "CPositionInfo::RunL(), end" );
}
// --------------------------------------------------------------------------
@@ -195,11 +231,37 @@
//
void CPositionInfo::DoCancel()
{
- LOG( "CPositionInfo::DoCancel()" );
- if ( IsActive() )
+ LOG( "CPositionInfo::DoCancel(), begin" );
+ switch(iState)
{
- iPositioner.CancelRequest( EPositionerNotifyPositionUpdate );
+ case EPositionOptStateGetLastKnownPosition:
+ {
+ iPositioner.CancelRequest( EPositionerGetLastKnownPosition );
+ break;
+ }
+ case EPositionOptStateNotifyUpdate:
+ {
+ iPositioner.CancelRequest( EPositionerNotifyPositionUpdate );
+ break;
+ }
+ default:
+ break;
}
+ iState = EPositionOptStateNone;
+ LOG( "CPositionInfo::DoCancel(), end" );
+ }
+
+
+// --------------------------------------------------------------------------
+// CPositionInfo::HandleRemapComplete
+// --------------------------------------------------------------------------
+//
+void CPositionInfo::HandleRemapComplete()
+ {
+ LOG( "CPositionInfo::HandleRemapComplete()" );
+ // Don't call notify update from RunL
+ iState = EPositionOptStateNone;
}
// End of file
+
--- a/locationmanager/locationtrail/src/locationremappingao.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/locationtrail/src/locationremappingao.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -24,6 +24,11 @@
using namespace MdeConstants;
+
+// --------------------------------------------------------------------------
+// CLocationRemappingAO::NewL()
+// --------------------------------------------------------------------------
+//
CLocationRemappingAO* CLocationRemappingAO::NewL()
{
LOG( "CLocationRemappingAO::NewL" ); // DEBUG INFO
@@ -35,6 +40,10 @@
return self;
}
+// --------------------------------------------------------------------------
+// CLocationRemappingAO::ConstructL()
+// --------------------------------------------------------------------------
+//
void CLocationRemappingAO::ConstructL()
{
LOG( "CLocationRemappingAO::ConstructL" ); // DEBUG INFO
@@ -49,6 +58,10 @@
}
}
+// --------------------------------------------------------------------------
+// CLocationRemappingAO::~CLocationRemappingAO()
+// --------------------------------------------------------------------------
+//
CLocationRemappingAO::~CLocationRemappingAO()
{
LOG( "CLocationRemappingAO::~CLocationRemappingAO" ); // DEBUG INFO
@@ -59,6 +72,10 @@
iObjects.ResetAndDestroy();
}
+// --------------------------------------------------------------------------
+// CLocationRemappingAO::CLocationRemappingAO()
+// --------------------------------------------------------------------------
+//
CLocationRemappingAO::CLocationRemappingAO() : CActive( CActive::EPriorityStandard ),
iState ( EIdle ),
iContinue( EFalse ),
@@ -71,7 +88,10 @@
// No implementation required
}
-
+// --------------------------------------------------------------------------
+// CLocationRemappingAO::InitialiseL()
+// --------------------------------------------------------------------------
+//
void CLocationRemappingAO::InitialiseL(CMdESession* aMdEClient)
{
LOG( "CLocationRemappingAO::Initialise start" ); // DEBUG INFO
@@ -97,21 +117,41 @@
LOG( "CLocationRemappingAO::Initialise end" );
}
+
+// --------------------------------------------------------------------------
+// CLocationRemappingAO::Append()
+// --------------------------------------------------------------------------
+//
void CLocationRemappingAO::Append( TRemapItem aItem )
{
iRemapItems.Append( aItem );
}
+
+// --------------------------------------------------------------------------
+// CLocationRemappingAO::ResetQueue()
+// --------------------------------------------------------------------------
+//
void CLocationRemappingAO::ResetQueue()
{
iRemapItems.Reset();
}
+
+// --------------------------------------------------------------------------
+// CLocationRemappingAO::ItemsInQueue()
+// --------------------------------------------------------------------------
+//
TBool CLocationRemappingAO::ItemsInQueue()
{
return iRemapItems.Count() > 0;
}
+
+// --------------------------------------------------------------------------
+// CLocationRemappingAO::CheckQueue()
+// --------------------------------------------------------------------------
+//
TBool CLocationRemappingAO::CheckQueue()
{
LOG( "CLocationRemappingAO::CheckQueue - start" );
@@ -165,13 +205,21 @@
return create;
}
-
+// --------------------------------------------------------------------------
+// CLocationRemappingAO::StopRemapping()
+// --------------------------------------------------------------------------
+//
void CLocationRemappingAO::StopRemapping()
{
LOG( "CLocationRemappingAO::StopRemapping" ); // DEBUG INFO
NextState(EIdle);
}
+
+// --------------------------------------------------------------------------
+// CLocationRemappingAO::StartRemappingObjects()
+// --------------------------------------------------------------------------
+//
void CLocationRemappingAO::StartRemappingObjects( const TLocationData& aLocationData )
{
iLocationData = aLocationData;
@@ -185,6 +233,11 @@
NextState( ERemapObjects );
}
+
+// --------------------------------------------------------------------------
+// CLocationRemappingAO::NextState()
+// --------------------------------------------------------------------------
+//
void CLocationRemappingAO::NextState(TMappingState aState)
{
LOG1( "CLocationRemappingAO::NextState - state: %d", aState ); // DEBUG INFO
@@ -198,6 +251,11 @@
}
}
+
+// --------------------------------------------------------------------------
+// CLocationRemappingAO::DoCancel()
+// --------------------------------------------------------------------------
+//
void CLocationRemappingAO::DoCancel()
{
LOG( "CLocationRemappingAO::DoCancel" ); // DEBUG INFO
@@ -205,6 +263,11 @@
NextState(EIdle);
}
+
+// --------------------------------------------------------------------------
+// CLocationRemappingAO::RunError()
+// --------------------------------------------------------------------------
+//
TInt CLocationRemappingAO::RunError( TInt aError )
{
if (aError != KErrNone)
@@ -216,6 +279,11 @@
return KErrNone;
}
+
+// --------------------------------------------------------------------------
+// CLocationRemappingAO::RunL()
+// --------------------------------------------------------------------------
+//
void CLocationRemappingAO::RunL()
{
LOG1( "CCameraTrailMonitorAO::RunL iStatus: %d", iStatus.Int() ); // DEBUG INFO
@@ -252,7 +320,10 @@
}
}
-
+// --------------------------------------------------------------------------
+// CLocationRemappingAO::RemapObjectsL()
+// --------------------------------------------------------------------------
+//
void CLocationRemappingAO::RemapObjectsL()
{
LOG( "CLocationRemappingAO::RemapObjects - start" ); // DEBUG INFO
@@ -331,6 +402,11 @@
LOG( "CLocationRemappingAO::RemapObjects - end" );
}
+
+// --------------------------------------------------------------------------
+// CLocationRemappingAO::CommitObjectsL()
+// --------------------------------------------------------------------------
+//
void CLocationRemappingAO::CommitObjectsL()
{
LOG( "CLocationRemappingAO::CommitObjects" ); // DEBUG INFO
@@ -360,7 +436,10 @@
LOG( "CLocationRemappingAO::ReadTimeFromCenRepL(), end" );
}
-
+// --------------------------------------------------------------------------
+// CLocationRemappingAO::UpdateRelationsL()
+// --------------------------------------------------------------------------
+//
void CLocationRemappingAO::UpdateRelationsL( TItemId aLocationId )
{
LOG("CLocationRemappingAO::UpdateRelationsL - start");
@@ -396,6 +475,30 @@
LOG("CLocationRemappingAO::UpdateRelationsL - end");
}
+#ifdef LOC_REVERSEGEOCODE
+// --------------------------------------------------------------------------
+// CLocationRemapping::AttachGeoTagsL
+// --------------------------------------------------------------------------
+//
+void CLocationRemappingAO::AttachGeoTagsL( CTagCreator *aTagCreator,
+ const TItemId aCountryTagId, const TItemId aCityTagId )
+ {
+ LOG("CLocationRemapping::AttachGeoTagsL - start");
+
+ TInt count = iObjectIds.Count() - 1;
+ for( TInt i = count; i >= 0; i-- )
+ {
+ aTagCreator->AttachTagsL( iObjectIds[i], aCountryTagId, aCityTagId );
+ }
+
+ iObjectIds.Reset();
+
+ LOG("CLocationRemapping::AttachGeoTagsL - end");
+ }
+
+#endif //LOC_REVERSEGEOCODE
+
+
// --------------------------------------------------------------------------
// TRemapItem constructor
// --------------------------------------------------------------------------
@@ -409,3 +512,4 @@
}
+// End of file
--- a/locationmanager/server/group/locationmanagerserver.mmp Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/server/group/locationmanagerserver.mmp Tue Jul 06 14:44:37 2010 +0300
@@ -18,19 +18,22 @@
#include <platform_paths.hrh>
#include <data_caging_paths.hrh>
+#include "../../inc/locplatsupport.mmh"
VERSION 10.0
TARGETTYPE exe
TARGET locationmanagerserver.exe
UID 0 0x200071BE
+EPOCSTACKSIZE 0x5000
+
#ifdef WINS
EPOCHEAPSIZE 1000 2500000
#else
EPOCHEAPSIZE 1000 5000000
#endif
-CAPABILITY CAP_SERVER
+CAPABILITY CAP_SERVER Location
VENDORID VID_DEFAULT
USERINCLUDE ../inc
@@ -38,11 +41,29 @@
USERINCLUDE ../../../inc
USERINCLUDE ../../locationtrail/inc
+#ifdef _LOC_REVERSEGEOCODE
+MACRO LOC_REVERSEGEOCODE
+USERINCLUDE ../../tagcreator/inc
+USERINCLUDE ../../reversegeocode/inc
+#endif
+
+
+USERINCLUDE ../../geoconverter/inc
+
+SYSTEMINCLUDE /epoc32/include/platform/lbs
+SYSTEMINCLUDE /epoc32/include/stdapis
+SYSTEMINCLUDE /epoc32/include/ecom
+MW_LAYER_SYSTEMINCLUDE
+
SOURCEPATH ../src
SOURCE clocationmanagerserver.cpp
SOURCE clocationmanagersession.cpp
+#ifdef _LOC_REVERSEGEOCODE
+SOURCE clocationgeotagtimerao.cpp
+#endif
+SOURCE clocationservertimerhandler.cpp
+SOURCE nwregistrationstatushandler.cpp
-MW_LAYER_SYSTEMINCLUDE
LIBRARY euser.lib
LIBRARY efsrv.lib
@@ -52,9 +73,21 @@
LIBRARY centralrepository.lib
LIBRARY mdeclient.lib
LIBRARY mdccommon.lib
+LIBRARY libc.lib
+LIBRARY ecom.lib
+LIBRARY etel.lib
+LIBRARY etelmm.lib
+LIBRARY commsdat.lib
+
+#ifdef _LOC_REVERSEGEOCODE
+LIBRARY geotagger.lib
+#endif
PAGED
BYTEPAIRCOMPRESSTARGET
OPTION ARMCC -O3 -OTime
EPOCPROCESSPRIORITY background
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/server/inc/clocationgeotagtimerao.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,118 @@
+/*
+* 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 "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: 3AM geo tagger handler
+*
+*/
+
+#ifndef __CLOCATIONGEOTAGTIMERAO_H__
+#define __CLOCATIONGEOTAGTIMERAO_H__
+
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <e32msgqueue.h>
+#include <geotagger.h>
+
+class CLocationGeoTagTimerAO : public CTimer,
+ public MGeoTaggerObserver
+{
+
+public:
+ /**
+ * 1st phase constructor.
+ * @param aMdeSession, CMdESession reference
+ */
+ static CLocationGeoTagTimerAO* NewL(CMdESession& aMdeSession,
+ MGeoTaggerObserver& aObserver);
+
+ /**
+ * Destructor
+ */
+ ~CLocationGeoTagTimerAO();
+
+ /**
+ * Start 3AM timer
+ */
+ void StartTimer();
+
+
+protected:
+ /*
+ * @see CActive::RunL()
+ */
+ void RunL();
+ // MGeoTaggerObserver
+ /**
+ * This method is used for notifying that the Geo Tagging is Completed, from MGeoTaggerObserver
+ * @param aError, TInt value to indicate if there is any error in geotagging
+ * @return None.
+ */
+ void GeoTaggingCompleted( const TInt aError );
+
+ /**
+ * This method is used for notifying completion of query for pending geo tags from MGeoTaggerObserver
+ * @param aError, TInt value to indicate if there is any error in geotagging
+ * @return None.
+ */
+ void PendingGeoTagReqComplete( const TInt aError );
+
+ /*
+ * Get registrer network country code
+ *
+ * @return current register n/w info
+ */
+ RMobilePhone::TMobilePhoneNetworkInfoV2& GetCurrentRegisterNw();
+
+ /*
+ * UE is registered to home network?
+ *
+ * @return ETrue if UE is registered at home network else EFalse
+ */
+ TBool IsRegisteredAtHomeNetwork();
+
+
+ /*
+ * Get home network country code
+ * @param aHomeNwInfoAvailableFlag ETrue if home n/w info available else EFalse
+ * @return user home n/w info
+ */
+ const RMobilePhone::TMobilePhoneNetworkInfoV1&
+ GetHomeNetworkInfo(TBool& aHomeNwInfoAvailableFlag);
+
+private:
+
+ /**
+ * 2nd Phase constructor
+ */
+ void ConstructL();
+
+ /**
+ * CLocationGeoTagTimerAO
+ * Constructor
+ * @param aMdeSession, CMdESession reference
+ * @return None.
+ */
+ CLocationGeoTagTimerAO(CMdESession& aMdeSession, MGeoTaggerObserver& aObserver);
+
+private:
+ CGeoTagger* iGeoTagger;
+ CMdESession& iMdeSession;
+ MGeoTaggerObserver& iObserver;
+};
+
+
+#endif /*__CLOCATIONGEOTAGTIMERAO_H__*/
+
+// End of file
--- a/locationmanager/server/inc/clocationmanagerserver.h Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/server/inc/clocationmanagerserver.h Tue Jul 06 14:44:37 2010 +0300
@@ -24,6 +24,9 @@
#include <centralrepository.h>
#include <locationdatatype.h>
#include <locationeventdef.h>
+#ifdef LOC_REVERSEGEOCODE
+#include <geotagger.h>
+#endif //LOC_REVERSEGEOCODE
#include "rlocationtrail.h"
#include "rlocationobjectmanipulator.h"
@@ -35,9 +38,15 @@
#include "mdequery.h"
#include "mderelationquery.h"
#include "locationmanagerdefs.h"
-
+#include "clocationservertimerhandler.h"
class CMdESession;
+#ifdef LOC_REVERSEGEOCODE
+class CLocationGeoTagTimerAO;
+#endif
+class CGeoTagger;
+class REComSession;
+class CNwRegistrationStatusHandler;
// Total number of ranges
const TUint KLocationManagerRangeCount = 1;
@@ -85,7 +94,9 @@
public MMdESessionObserver,
public MMdEQueryObserver,
public MMdEObjectObserver,
- public MGpxConversionObserver
+ public MGpxConversionObserver,
+ public MGeoTaggerObserver,
+ public MLocationServerTimerObserver
{
private:
struct TMessageQuery
@@ -259,30 +270,122 @@
* @return None.
*/
void RemoveLocationObjectL(TUint& aObjectId);
+
+ /**
+ * Copies the location object
+ * @param aSource source location object
+ * @param aTargets target location object
+ * @param aQuery message query type
+
+ */
void CopyLocationObjectL( TItemId aSource, const RArray<TItemId>& aTargets, TMessageQuery& aQuery );
+
+ /**
+ * Copies the location object
+ * @param aSource The source location object
+ * @param aTargets target location object
+ * @param aQuery message query type
+ */
void CopyLocationObjectL( const TDesC& aSource, const RArray<TPtrC>& aTargets, TMessageQuery& aQuery );
-
+
+ /**
+ * checks if the session is ready
+ * @return ETrue if Session is ready
+ */
TBool IsSessionReady();
-
+
+ /**
+ * Start track log
+ *
+ * @return The itemId
+ */
TItemId StartTrackLogL();
-
+
+ /**
+ * Stop track log
+ *
+ */
void StopTrackLogL();
-
+
+ /**
+ * IsTrackLogRecording
+ *
+ * @param aRec
+ */
void IsTrackLogRecording( TBool &aRec );
+ /**
+ * Retrieve track log status
+ *
+ * @param aRecording
+ * @param aFixQuality
+ */
TInt GetTrackLogStatus( TBool& aRecording, TPositionSatelliteInfo& aFixQuality);
-
+
+ /**
+ * Delete track log
+ *
+ * @param aUri
+ */
TInt DeleteTrackLogL(const TDesC& aUri);
-
+
+ /**
+ * Track log name
+ *
+ * @param aFileName name of file used to track log
+ */
TInt TrackLogName(TFileName& aFileName);
+ /**
+ * Gets the location trail capture settings
+ * @param aCaptureSetting The location trail capture settings
+ */
void GetCaptureSetting( RLocationTrail::TTrailCaptureSetting& aCaptureSetting );
-
+
+ /**
+ * Adds an observer for Gpx conversion
+ * @param aObserver the observer for Gpx conversion
+ */
void AddGpxObserver( MGpxConversionObserver* aObserver );
+ /**
+ * Copy location by Id
+ * @param aMessage
+ */
void InitCopyLocationByIdL( const RMessage2& aMessage );
+
+ /**
+ * Copy Location by Uri
+ * @param aMessage
+ */
void InitCopyLocationByURIL( const RMessage2& aMessage );
+ /**
+ * Handles tag pending request
+ *
+ * @param aMessage IPC message
+ */
+ void TagPendingRequestL( const RMessage2& aMessage );
+
+ /**
+ * Cancels the tag pending request
+ * @param aMessage IPC message
+ */
+ void CancelTagPendingRequest( const RMessage2& aMessage );
+
+ /**
+ * Cancels the geotagging request
+ * @param aMessage IPC message
+ */
+ void CancelGeoTaggingRequest( const RMessage2& aMessage );
+
+
+ /**
+ * Handle starts geotagging request
+ * @param aMessage IPC message
+ */
+ void StartGeoTaggingL( const RMessage2& aMessage );
+
public: // from MLocationTrailObserver.
/**
* Callback method to get notification about trail state change.
@@ -340,6 +443,52 @@
void GpxFileCreated( const TDesC& aFileName, TItemId aTagId, TReal32 aLength,
TTime aStart, TTime aEnd );
+protected: //From MGeoTaggerObserver
+
+ /**
+ * This method is called on completion of geotagging
+ * and also completes start geotagging IPC message
+ * @param aError The err code for geotagging if any
+ */
+ void GeoTaggingCompleted( const TInt aError );
+ /**
+ * This method is used for notifying completion of query for pending geo tags
+ * @param aError The err code for geotagging if any
+ */
+ void PendingGeoTagReqComplete( const TInt aError );
+
+ /*
+ * Get registrer network country code
+ *
+ * @return current register n/w info
+ */
+ RMobilePhone::TMobilePhoneNetworkInfoV2& GetCurrentRegisterNw();
+
+
+ /*
+ * Get home network country code
+ * @param aHomeNwInfoAvailableFlag ETrue if home n/w info available else EFalse
+ * @return user home n/w info
+ */
+ const RMobilePhone::TMobilePhoneNetworkInfoV1&
+ GetHomeNetworkInfo(TBool& aHomeNwInfoAvailableFlag);
+
+
+ /*
+ * UE is registered to home network?
+ *
+ * @return ETrue if UE is registered at home network else EFalse
+ */
+ TBool IsRegisteredAtHomeNetwork();
+
+public: //MLocationServerTimerObserver
+ /**
+ * Timer call back
+ * @param aLocationServerTimerType timer type
+ * @param aErrorCode error code
+ */
+ void LocationServerTimerCallBackL
+ (const TLocationServerTimerType aLocationServerTimerType, const TInt aErrorCode);
private:
/**
* C++ constructor.
@@ -350,7 +499,11 @@
* 2nd phase constructor.
*/
void ConstructL();
-
+
+ /**
+ * Copies the location
+ * @param aQuery The query
+ */
void CopyLocationL( CMdEQuery& aQuery );
/**
@@ -359,7 +512,10 @@
*/
void CancelRequests(RArray<RMessage2>& aMessagesList);
-
+ /**
+ * cancels the list of copy requests
+ * @param aMessageList the list of query
+ */
void CancelCopyRequests(RArray<TMessageQuery>& aMessageList);
/**
@@ -396,22 +552,45 @@
* @param aAny, a pointer to CLocationRecord object
* @return Error code
*/
- static TInt PositioningStopTimeout( TAny* aAny );
+ void PositioningStopTimeout();
/**
* Callback function to check if files were added to remapping queue with delay
* @param aAny, a pointer to CLocationRecord object
* @return Error code
*/
- static TInt CheckForRemappingCallback( TAny* aAny );
+ void CheckForRemappingCallback();
+
/**
* Stops location trail and deletes the positioning stop timer.
*/
void StopRecording();
-
+
+ /**
+ * Complete notify request
+ *
+ * @param aEventType, returns the event type
+ * @param aError, return error type for this call.
+ */
void CompleteNotifyRequest( TEventTypes aEventType, TInt aError );
+ /**
+ * Get supported TSY name
+ *@param aTsyName - buffer to store the supported tsy name
+ */
+ void GetCommDbTSYnameL(TDes& aTsyName);
+
+ /**
+ * Initialize etel to access modem parameters
+ */
+ void InitialisePhoneL();
+
+ /**
+ * Retrieve home network
+ */
+ void RetrieveHomeNetwork();
+
private:
/**
* A class for recording and storing locations.
@@ -466,7 +645,7 @@
* A timer to stop location trail.
* Own.
*/
- CPeriodic* iTimer;
+ CLocationServerTimerHandler* iTimer;
TBool iClientSwitch;
TInt iSessionCount;
@@ -478,12 +657,27 @@
TInt iLocManStopRemapDelay;
RLocationTrail::TTrailCaptureSetting iCaptureSetting;
- TBool iRemoveLocation;
+ TBool iRemoveLocation;
/**
* A flag for state of waiting for position stop timeout.
*/
TBool iWaitForPositioningStopTimeout;
+ RTelServer iTelServer;
+ RMobilePhone iPhone;
+ TBool iTelServerIsOpen;
+ TBool iPhoneIsOpen;
+ CNwRegistrationStatusHandler *iNwRegistrationStatusHandler;
+ RMobilePhone::TMobilePhoneNetworkInfoV1 iHomeNetwork;
+ TBool iHomeNwInfoAvailableFlag;
+
+#ifdef LOC_REVERSEGEOCODE
+ CLocationGeoTagTimerAO* iGeoTagTimer;
+ CGeoTagger* iGeoTaggingPendingReqObj;
+ RMessage2 iTagPendingMessage;
+ RMessage2 iGeoTaggingMessage;
+ REComSession* iEcomSession;
+#endif //LOC_REVERSEGEOCODE
};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/server/inc/clocationservertimerhandler.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,105 @@
+/*
+* 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 "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: helper class to handle location server tiimer related functionality
+*
+*/
+
+#ifndef __CLOCATIONSERVERTIMERHANDLER_H__
+#define __CLOCATIONSERVERTIMERHANDLER_H__
+
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+
+/*
+* Timer Observer class
+*/
+
+class MLocationServerTimerObserver
+ {
+public:
+ typedef enum
+ {
+ EStopRecording = 0x1, // Stop recording
+ EPositioningStopTimeout, // Stop positioning
+ ELocGeneralPurpose // generic purpose
+ }TLocationServerTimerType;
+ /**
+ * Timer call back
+ * @param aLocationServerTimerType timer type
+ * @param aErrorCode error code
+ */
+ virtual void LocationServerTimerCallBackL
+ (const TLocationServerTimerType aLocationServerTimerType, const TInt aErrorCode) = 0;
+ };
+
+/*
+* Helper class for location server related to timer functionality.
+*/
+class CLocationServerTimerHandler : public CTimer
+ {
+
+public:
+ /**
+ * 1st phase constructor.
+ * @param aLocationServerTimerObserver timer observer
+ */
+ static CLocationServerTimerHandler* NewL(MLocationServerTimerObserver& aLocationServerTimerObserver);
+
+ /**
+ * Destructor
+ */
+ ~CLocationServerTimerHandler();
+
+ /**
+ * start a timer for predefined period
+ * @param anInterval timer value
+ * @param aLocationServerTimerType timer type
+ */
+ void StartTimer(const TTimeIntervalMicroSeconds32 anInterval,
+ const MLocationServerTimerObserver::TLocationServerTimerType aLocationServerTimerType);
+
+
+protected:
+ /*
+ * @see CActive::RunL()
+ */
+ void RunL();
+private:
+ /**
+ * 2nd Phase constructor
+ */
+ void ConstructL();
+ /**
+ * CLocationServerTimerHandler
+ * Constructor
+ * @param aLocationServerTimerObserver timer observer
+ * @return None.
+ */
+ CLocationServerTimerHandler(MLocationServerTimerObserver& aLocationServerTimerObserver);
+
+
+
+private:
+ MLocationServerTimerObserver& iLocationServerTimerObserver;
+ MLocationServerTimerObserver::TLocationServerTimerType iLocationServerTimerType;
+ };
+
+
+#endif /*__CLOCATIONSERVERTIMERHANDLER_H__*/
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/server/inc/nwregistrationstatushandler.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,103 @@
+/*
+* 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 "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: Helper class to retrieve UE network registration status
+*
+*/
+
+#ifndef __NW_REGISTRATION_STATUS_HANDLER_H__
+#define __NW_REGISTRATION_STATUS_HANDLER_H__
+
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <etelmm.h>
+
+NONSHARABLE_CLASS(CNwRegistrationStatusHandler) : public CActive
+{
+
+public:
+
+ /**
+ * 1st phase constructor
+ * @param aMobilePhone an instance of the RMobilePhone to get the current network
+ */
+ static CNwRegistrationStatusHandler* NewL(RMobilePhone& aMobilePhone);
+
+ /**
+ * destructor
+ */
+ ~CNwRegistrationStatusHandler();
+
+ /**
+ * Register for getting the n/w registration change notification
+ * starts notifying the current network changes
+ */
+ void StartNotifier();
+
+ /**
+ * Retrieve network registration status
+ * @return the mobilephone reg status
+ */
+
+ RMobilePhone::TMobilePhoneRegistrationStatus GetNetworkRegistrationStatus() const;
+
+protected:
+
+ /**
+ * RunL
+ * from CActive
+ */
+ void RunL();
+
+ /**
+ * DoCancel
+ * from CActive
+ */
+ void DoCancel();
+ private:
+
+ /**
+ * Second phase construction
+ */
+ void ConstructL();
+ CNwRegistrationStatusHandler(RMobilePhone& aMobilePhone);
+
+
+
+private:
+ typedef enum
+ {
+ ERegStatusOptStateNone = 0x00,
+ ERegStatusOptStateGet,
+ ERegStatusOptStateNotify
+ }TRegStatusOptState;
+
+ /**
+ * An instance of the RMobilePhone to get the current network
+ */
+ RMobilePhone& iMobilePhone;
+
+ /**
+ * Indicates the network registration status
+ */
+ RMobilePhone::TMobilePhoneRegistrationStatus iRegistrationStatus;
+ TRegStatusOptState iState;
+};
+
+
+#endif /*__NW_REGISTRATION_STATUS_HANDLER_H__*/
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/server/src/clocationgeotagtimerao.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,232 @@
+/*
+* Copyright (c) 2009-2010 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: Implements geotagging 3AM timer
+*
+*/
+
+#include "clocationgeotagtimerao.h"
+#include <aknappui.h>
+#include <aknnotewrappers.h>
+#include <avkon.hrh>
+#include "locationmanagerdebug.h"
+
+
+
+//Time at which the geotagging should be triggered( 3.00 AM )
+const TInt GEOTAGGING_TIME_IN_HOURS = 3;
+//Hour specified in minutes
+const TInt HOUR_VALUE_IN_MINUTES = 60;
+//Hour specified in seconds
+const TInt HOUR_VALUE_IN_SECONDS = 3600;
+
+// --------------------------------------------------------------------------
+// CLocationGeoTagTimerAO::CLocationGeoTagTimerAO
+// --------------------------------------------------------------------------
+//
+CLocationGeoTagTimerAO::CLocationGeoTagTimerAO(CMdESession& aMdeSession,
+ MGeoTaggerObserver& aObserver):
+ CTimer(EPriorityStandard ),
+ iGeoTagger(NULL),
+ iMdeSession(aMdeSession),
+ iObserver(aObserver)
+{
+
+}
+
+// --------------------------------------------------------------------------
+// CLocationGeoTagTimerAO::~CLocationGeoTagTimerAO
+// --------------------------------------------------------------------------
+//
+CLocationGeoTagTimerAO::~CLocationGeoTagTimerAO()
+ {
+ LOG ("CLocationGeoTagTimerAO::~CLocationGeoTagTimerAO(), begin");
+ if(iGeoTagger)
+ {
+ delete iGeoTagger;
+ iGeoTagger = NULL;
+ }
+ LOG ("CLocationGeoTagTimerAO::~CLocationGeoTagTimerAO(), end");
+ }
+
+// --------------------------------------------------------------------------
+// CLocationGeoTagTimerAO::NewL
+// --------------------------------------------------------------------------
+//
+CLocationGeoTagTimerAO* CLocationGeoTagTimerAO::NewL(CMdESession& aMdeSession,
+ MGeoTaggerObserver& aObserver)
+ {
+ CLocationGeoTagTimerAO* self =
+ new( ELeave ) CLocationGeoTagTimerAO(aMdeSession, aObserver);
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+
+// --------------------------------------------------------------------------
+// CLocationGeoTagTimerAO::ConstructL
+// --------------------------------------------------------------------------
+//
+void CLocationGeoTagTimerAO::ConstructL()
+ {
+ LOG ("CLocationGeoTagTimerAO::ConstructL(), begin");
+ CActiveScheduler::Add(this);
+ CTimer::ConstructL();
+ LOG ("CLocationGeoTagTimerAO::ConstructL(), end");
+ }
+
+// --------------------------------------------------------------------------
+// CLocationGeoTagTimerAO::StartTimer
+// --------------------------------------------------------------------------
+//
+void CLocationGeoTagTimerAO::StartTimer()
+ {
+ LOG ("CLocationGeoTagTimerAO::StartTimer(), begin");
+ if(!IsActive())
+ {
+ TTime hometime;
+ hometime.HomeTime();
+
+ //Get the current time in Hour,Minute, Second
+ TDateTime currentDateTime = hometime.DateTime();
+ TInt currentHr = currentDateTime.Hour();
+ TInt currentMin = currentDateTime.Minute();
+ TInt currentSec = currentDateTime.Second();
+
+ //3 AM in seconds
+ TInt targetTimeInSeconds = GEOTAGGING_TIME_IN_HOURS * HOUR_VALUE_IN_SECONDS;
+ TInt timeDifference;
+
+ //Find the time difference in seconds between current time to 3.00 AM
+ //Either on same day or next day.
+ if ( currentHr <= GEOTAGGING_TIME_IN_HOURS )
+ {
+ timeDifference = targetTimeInSeconds -
+ ( ( currentHr * HOUR_VALUE_IN_SECONDS ) + ( currentMin * HOUR_VALUE_IN_MINUTES ) + currentSec );
+ }
+ else
+ {
+ timeDifference = ( 24 * HOUR_VALUE_IN_SECONDS - (
+ ( currentHr * HOUR_VALUE_IN_SECONDS ) + ( currentMin * HOUR_VALUE_IN_MINUTES ) + currentSec ) ) +
+ targetTimeInSeconds ;
+ }
+
+ //Add the time difference to current time to set the target time ( 3.00 AM )
+ TTimeIntervalSeconds interval( timeDifference );
+ TTime timeToSet;
+ timeToSet.HomeTime();
+ timeToSet+= interval;
+
+
+ At( timeToSet );
+ }
+ LOG ("CLocationGeoTagTimerAO::StartTimer(), end");
+ }
+
+
+// --------------------------------------------------------------------------
+// CLocationGeoTagTimerAO::RunL
+// --------------------------------------------------------------------------
+//
+void CLocationGeoTagTimerAO::RunL( )
+ {
+ LOG ("CLocationGeoTagTimerAO::RunL(), begin");
+ TInt status = iStatus.Int();
+
+ switch( status )
+ {
+ case KErrAbort:
+ StartTimer();
+ break;
+ case KErrUnderflow:
+ case KErrOverflow:
+ StartTimer();
+ break;
+ case KErrNone:
+ {
+ //Trigger the reverse geocoding and start the timer again
+ //Create the instance of geotagger class
+ if(iGeoTagger)
+ {
+ delete iGeoTagger;
+ iGeoTagger = NULL;
+ }
+ iGeoTagger = CGeoTagger::NewL( this, NULL );
+ iGeoTagger->CreateGeoTagsL();
+ break;
+ }
+ default:
+ break;
+ }
+ LOG ("CLocationGeoTagTimerAO::RunL(), end");
+ }
+
+// --------------------------------------------------------------------------
+// CLocationGeoTagTimerAO::GeoTaggingCompleted
+// --------------------------------------------------------------------------
+//
+void CLocationGeoTagTimerAO::GeoTaggingCompleted( const TInt aError )
+ {
+ LOG ("CLocationGeoTagTimerAO::GeoTaggingCompleted(), begin");
+ delete iGeoTagger;
+ iGeoTagger = NULL;
+ StartTimer();
+ iObserver.GeoTaggingCompleted(aError);
+ LOG ("CLocationGeoTagTimerAO::GeoTaggingCompleted(), end");
+ }
+
+// --------------------------------------------------------------------------
+// CLocationGeoTagTimerAO::PendingGeoTagReqComplete
+// --------------------------------------------------------------------------
+//
+void CLocationGeoTagTimerAO::PendingGeoTagReqComplete( const TInt aError )
+ {
+ LOG ("CLocationGeoTagTimerAO::PendingGeoTagReqComplete()");
+ // do nothing.
+ iObserver.PendingGeoTagReqComplete(aError);
+ }
+
+// ----------------------------------------------------------------------------
+// CLocationGeoTagTimerAO::GetCurrentRegisterNw()
+// ----------------------------------------------------------------------------
+RMobilePhone::TMobilePhoneNetworkInfoV2& CLocationGeoTagTimerAO::GetCurrentRegisterNw()
+ {
+ LOG( "CLocationGeoTagTimerAO::GetCurrentRegisterNw ,begin" );
+ return iObserver.GetCurrentRegisterNw();
+ }
+
+
+// ----------------------------------------------------------------------------
+// CLocationGeoTagTimerAO::IsRegisteredAtHomeNetwork()
+// ----------------------------------------------------------------------------
+TBool CLocationGeoTagTimerAO::IsRegisteredAtHomeNetwork()
+ {
+ LOG( "CLocationGeoTagTimerAO::IsRegisteredAtHomeNetwork" );
+ return iObserver.IsRegisteredAtHomeNetwork();
+ }
+
+// ----------------------------------------------------------------------------
+// CLocationGeoTagTimerAO::GetHomeNetworkInfo()
+// ----------------------------------------------------------------------------
+const RMobilePhone::TMobilePhoneNetworkInfoV1&
+ CLocationGeoTagTimerAO::GetHomeNetworkInfo(TBool& aHomeNwInfoAvailableFlag)
+ {
+ LOG( "CLocationGeoTagTimerAO::GetHomeNetworkInfo" );
+ return iObserver.GetHomeNetworkInfo(aHomeNwInfoAvailableFlag);
+ }
+
+// End of file
+
--- a/locationmanager/server/src/clocationmanagerserver.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/server/src/clocationmanagerserver.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -17,6 +17,10 @@
#include <e32debug.h>
#include <w32std.h>
+#include <ecom.h>
+#include <commsdattypesv1_1.h>
+#include <cdblen.h>
+#include <commsdat_partner.h>
#include "clocationmanagerserver.h"
#include "clocationmanagersession.h"
@@ -29,8 +33,14 @@
#include "mdeobjectdef.h"
#include "mdepropertydef.h"
#include "mdcserializationbuffer.h"
+#ifdef LOC_REVERSEGEOCODE
+#include "clocationgeotagtimerao.h"
+#endif //LOC_REVERSEGEOCODE
+#include "nwregistrationstatushandler.h"
using namespace MdeConstants;
+using namespace CommsDat;
+
// --------------------------------------------------------------------------
// RunServerL
@@ -94,6 +104,7 @@
: CPolicyServer( CActive::EPriorityStandard,
KLocationManagerPolicy,
ESharableSessions ),
+ iASW(NULL),
iTimer( NULL ),
iSessionReady( EFalse ),
iTagId( 0 ),
@@ -101,7 +112,16 @@
iLocManStopRemapDelay( 0 ),
iCaptureSetting( RLocationTrail::EOff ),
iRemoveLocation( EFalse ),
- iWaitForPositioningStopTimeout ( EFalse )
+ iWaitForPositioningStopTimeout ( EFalse ),
+ iTelServerIsOpen(EFalse),
+ iPhoneIsOpen(EFalse),
+ iNwRegistrationStatusHandler(NULL),
+ iHomeNwInfoAvailableFlag(EFalse)
+#ifdef LOC_REVERSEGEOCODE
+ ,iGeoTagTimer(NULL)
+ ,iGeoTaggingPendingReqObj(NULL)
+ ,iEcomSession(NULL)
+#endif //LOC_REVERSEGEOCODE
{
}
@@ -119,50 +139,69 @@
RProcess process;
process.SetPriority( EPriorityBackground );
process.Close();
+
+ // initialize etel
+ InitialisePhoneL();
+#ifdef LOC_REVERSEGEOCODE
+ iEcomSession = &(REComSession::OpenL());
+#endif //LOC_REVERSEGEOCODE
+
iASW = new (ELeave) CActiveSchedulerWait();
+
+ iNwRegistrationStatusHandler = CNwRegistrationStatusHandler::NewL(iPhone);
+
iMdeSession = CMdESession::NewL( *this );
- iLocationRecord = CLocationRecord::NewL();
+ iLocationRecord = CLocationRecord::NewL(*this, iPhone);
iTrackLog = CTrackLog::NewL();
iASW->Start();
-
- iLocationRecord->SetObserver( this );
-
- iLocationRecord->SetAddObserver( iTrackLog );
-
- iTrackLog->AddGpxObserver( this );
-
- CRepository* repository = CRepository::NewLC( KRepositoryUid );
- TInt err = repository->Get( KLocationTrailShutdownTimer, iLocManStopDelay );
-
- LOG1("CLocationManagerServer::ConstructL, iLocManStopDelay:%d", iLocManStopDelay);
-
- if ( err != KErrNone )
- {
- LOG1("CLocationManagerServer::ConstructL, iLocManStopDelay err:%d", err);
- iLocManStopDelay = KLocationTrailShutdownDelay;
- }
+ delete iASW;
+ iASW = NULL;
+ if(iSessionReady)
+ {
+ LOG("Session is ready to give service");
+
+ iLocationRecord->SetObserver( this );
+
+ iLocationRecord->SetAddObserver( iTrackLog );
+
+ iTrackLog->AddGpxObserver( this );
+
+ CRepository* repository = CRepository::NewLC( KRepositoryUid );
+ TInt err = repository->Get( KLocationTrailShutdownTimer, iLocManStopDelay );
+
+ LOG1("CLocationManagerServer::ConstructL, iLocManStopDelay:%d", iLocManStopDelay);
+
+ if ( err != KErrNone )
+ {
+ LOG1("CLocationManagerServer::ConstructL, iLocManStopDelay err:%d", err);
+ iLocManStopDelay = KLocationTrailShutdownDelay;
+ }
- err = repository->Get( KLocationTrailRemapShutdownTimer, iLocManStopRemapDelay );
- CleanupStack::PopAndDestroy( repository );
-
- LOG1("CLocationManagerServer::ConstructL, iLocManStopRemapDelay:%d", iLocManStopRemapDelay);
-
- if ( err != KErrNone )
- {
- LOG1("CLocationManagerServer::ConstructL, iLocManStopRemapDelay err:%d", err);
- iLocManStopRemapDelay = KLocationTrailRemapShutdownDelay;
+ err = repository->Get( KLocationTrailRemapShutdownTimer, iLocManStopRemapDelay );
+ CleanupStack::PopAndDestroy( repository );
+
+ LOG1("CLocationManagerServer::ConstructL, iLocManStopRemapDelay:%d", iLocManStopRemapDelay);
+
+ if ( err != KErrNone )
+ {
+ LOG1("CLocationManagerServer::ConstructL, iLocManStopRemapDelay err:%d", err);
+ iLocManStopRemapDelay = KLocationTrailRemapShutdownDelay;
+ }
+
+#ifdef LOC_REVERSEGEOCODE
+ //Create the instance of the geotagging timer object
+ iGeoTagTimer = CLocationGeoTagTimerAO::NewL(*iMdeSession, *this);
+ //Schedule a task for geotagging every day at 3.00 AM
+ iGeoTagTimer->StartTimer();
+#endif //LOC_REVERSEGEOCODE
}
-
- TRAPD( error, iTimer = CPeriodic::NewL( CActive::EPriorityUserInput ) );
- if ( error != KErrNone )
+ else
{
- LOG("CLocationManagerServer::ConstructL - iTimer not created");
- iTimer = NULL;
- }
-
-
+ LOG("Unable to open MDE session. Closing..");
+ User::Leave(KErrCouldNotConnect);
+ }
LOG ("CLocationManagerServer::ConstructL() end");
}
@@ -173,13 +212,19 @@
//
CLocationManagerServer::~CLocationManagerServer()
{
+ LOG("CLocationManagerServer::~CLocationManagerServer ,begin");
+
+#ifdef LOC_REVERSEGEOCODE
+ delete iGeoTagTimer;
+ delete iGeoTaggingPendingReqObj;
+#endif //LOC_REVERSEGEOCODE
+
delete iLocationRecord;
delete iTrackLog;
delete iTimer;
- //delete iRelationQuery;
delete iASW;
delete iMdeSession;
-
+ delete iNwRegistrationStatusHandler;
iTargetObjectIds.Close();
CancelRequests(iNotifReqs);
iNotifReqs.Close();
@@ -190,9 +235,115 @@
CancelCopyRequests(iCopyReqs);
iCopyReqs.Close();
iSessionCount = 0;
+ if(iPhoneIsOpen)
+ {
+ iPhoneIsOpen = EFalse; // not required
+ iPhone.Close();
+ }
+ if(iTelServerIsOpen)
+ {
+ iTelServerIsOpen = EFalse;
+ iTelServer.Close();
+ }
+#ifdef LOC_REVERSEGEOCODE
+ if(iEcomSession)
+ {
+ iEcomSession->Close();
+ }
+#endif //LOC_REVERSEGEOCODE
+ LOG("CLocationManagerServer::~CLocationManagerServer ,end");
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::GetCommDbTSYnameL
+// --------------------------------------------------------------------------
+//
+void CLocationManagerServer::GetCommDbTSYnameL(TDes& aTsyName)
+ {
+ LOG( "CLocationManagerServer::GetCommDbTSYnameL(), begin" );
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ CMDBSession* db = CMDBSession::NewL(KCDVersion1_2);
+#else
+ CMDBSession* db = CMDBSession::NewL(KCDVersion1_1);
+#endif
+ CleanupStack::PushL(db);
+
+ CMDBField<TDesC>* globalSettingField = new(ELeave) CMDBField<TDesC>(KCDTIdBearerAvailabilityCheckTSY);
+ CleanupStack::PushL(globalSettingField);
+ globalSettingField->SetRecordId(1);
+ globalSettingField->SetMaxLengthL(KMaxTextLength);
+ globalSettingField->LoadL(*db);
+ aTsyName = *globalSettingField;
+ CleanupStack::PopAndDestroy(globalSettingField);
+
+ CleanupStack::PopAndDestroy(db);
+ LOG( "CLocationManagerServer::GetCommDbTSYnameL(), end" );
+ }
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::InitialisePhoneL
// --------------------------------------------------------------------------
-// CLocationManagerServer::CompleteRequests()
+//
+void CLocationManagerServer::InitialisePhoneL()
+ {
+ LOG( "CLocationManagerServer::InitialisePhoneL(), begin" );
+ User::LeaveIfError(iTelServer.Connect());
+ iTelServerIsOpen = ETrue;
+ TBuf<KCommsDbSvrMaxFieldLength> tsyName;
+ GetCommDbTSYnameL(tsyName);
+
+ User::LeaveIfError(iTelServer.LoadPhoneModule(tsyName));
+
+ TInt numPhones;
+ User::LeaveIfError(iTelServer.EnumeratePhones(numPhones));
+
+ TInt phoneIndx;
+ TInt ret = KErrHardwareNotAvailable;
+
+ for(phoneIndx=0; phoneIndx<numPhones; phoneIndx++)
+ {
+ RTelServer::TPhoneInfo tInfo;
+ ret = iTelServer.GetPhoneInfo(phoneIndx, tInfo);
+ if(ret != KErrNone)
+ {
+ continue;
+ }
+
+ ret = iPhone.Open(iTelServer, tInfo.iName);
+ if(ret != KErrNone)
+ {
+ continue;
+ }
+
+ iPhoneIsOpen = ETrue;
+
+ RPhone::TStatus status;
+ User::LeaveIfError(iPhone.GetStatus(status));
+ if(status.iModemDetected!=RPhone::EDetectedPresent)
+ {
+ ret = iPhone.Initialise();
+ if(ret != KErrNone)
+ {
+ iPhone.Close();
+ iPhoneIsOpen = EFalse;
+ continue;
+ }
+ }
+ // we found the correct phone
+ break;
+ }
+
+ //
+ // ret will be KErrNone if a valid phone was found...
+ //
+
+ LOG1( "CLocationManagerServer::InitialisePhoneL(), end. Err - %d", ret );
+ User::LeaveIfError(ret);
+ }
+
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::CancelRequests()
// --------------------------------------------------------------------------
//
void CLocationManagerServer::CancelRequests(RArray<RMessage2>& aMessageList)
@@ -211,6 +362,10 @@
aMessageList.Reset();
}
+// --------------------------------------------------------------------------
+// CLocationManagerServer::CancelCopyRequests
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::CancelCopyRequests(RArray<TMessageQuery>& aMessageList)
{
const TInt count = aMessageList.Count();
@@ -227,10 +382,14 @@
aMessageList.Reset();
}
-
+// --------------------------------------------------------------------------
+// CLocationManagerServer::HandleSessionOpened
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::HandleSessionOpened(CMdESession& /*aSession*/, TInt aError)
{
- if ( iASW->IsStarted() )
+ LOG ("CLocationManagerServer::HandleSessionOpened() start");
+ if ( iASW && iASW->IsStarted() )
{
iASW->AsyncStop();
}
@@ -249,18 +408,31 @@
}
}
-void CLocationManagerServer::HandleSessionError(CMdESession& /*aSession*/, TInt /*aError*/)
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::HandleSessionError
+// --------------------------------------------------------------------------
+//
+void CLocationManagerServer::HandleSessionError(CMdESession& /*aSession*/, TInt aError)
{
+ LOG1 ("CLocationManagerServer::HandleSessionError() start, Error - %d", aError);
+ ARG_USED(aError);
iSessionReady = EFalse;
delete iMdeSession;
iMdeSession = NULL;
- if ( iASW->IsStarted() )
+ if ( iASW && iASW->IsStarted() )
{
iASW->AsyncStop();
}
}
+
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::IsSessionReady
+// --------------------------------------------------------------------------
+//
TBool CLocationManagerServer::IsSessionReady()
{
return iSessionReady;
@@ -303,8 +475,11 @@
void CLocationManagerServer::RemoveSession()
{
iSessionCount--;
- if ( !iSessionCount )
+ if ( !iSessionCount
+ && iLocationRecord
+ && !iLocationRecord->TaggingInProgress())
{
+ // Nothing in progress. shutdown the server
CActiveScheduler::Stop();
}
}
@@ -334,7 +509,8 @@
if ( iTimer )
{
- iTimer->Cancel();
+ delete iTimer;
+ iTimer = NULL;
}
iLocationRecord->StartL( aCaptureSetting );
@@ -355,24 +531,19 @@
if( state != RLocationTrail::ETrailStopped && state != RLocationTrail::ETrailStopping )
{
- if(!iTimer)
+ if(iTimer == NULL)
{
- TRAPD( error, iTimer = CPeriodic::NewL( CActive::EPriorityUserInput ) );
- if ( error != KErrNone )
- {
- LOG("CLocationManagerServer::StopGPSPositioningL() - iTimer not created");
- iTimer = NULL;
- }
- }
- if(iTimer)
+ TRAP_IGNORE(iTimer = CLocationServerTimerHandler::NewL(*this));
+ }
+ if ( iTimer == NULL)
{
- iTimer->Cancel();
- iLocationRecord->SetStateToStopping();
- iTimer->Start( iLocManStopDelay * 1000000, 0, TCallBack( CheckForRemappingCallback, this ) );
- }
+ // If timer can't be created we stop the location trail immediately.
+ iLocationRecord->Stop();
+ }
else
{
- iLocationRecord->Stop();
+ iLocationRecord->SetStateToStopping();
+ iTimer->StartTimer( iLocManStopDelay * 1000000, MLocationServerTimerObserver::EStopRecording);
}
}
@@ -389,48 +560,61 @@
LOG( "CLocationManagerServer::StopRecording()" );
iWaitForPositioningStopTimeout = EFalse;
iLocationRecord->Stop();
- if(iTimer)
- {
- iTimer->Cancel();
- }
-
+ }
+
+// --------------------------------------------------------------------------
+// CLocationUtilityServer::LocationServerTimerCallBackL
+// --------------------------------------------------------------------------
+//
+void CLocationManagerServer::LocationServerTimerCallBackL
+ (const TLocationServerTimerType aLocationServerTimerType, const TInt /*aErrorCode*/)
+ {
+ LOG1( "CLocationManagerServer::LocationServerTimerCallBackL, begin, Type - %d",
+ aLocationServerTimerType);
+ switch(aLocationServerTimerType)
+ {
+ case MLocationServerTimerObserver::EStopRecording:
+ CheckForRemappingCallback();
+ break;
+ case MLocationServerTimerObserver::EPositioningStopTimeout:
+ PositioningStopTimeout();
+ break;
+ case MLocationServerTimerObserver::ELocGeneralPurpose:
+ default:
+ // execution shouldn't come over here.
+ LOG("Invalid timer type");
+ break;
+ }
+ LOG( "CLocationManagerServer::LocationServerTimerCallBackL, end" );
}
// --------------------------------------------------------------------------
// CLocationUtilityServer::PositioningStopTimeout
// --------------------------------------------------------------------------
//
-TInt CLocationManagerServer::PositioningStopTimeout( TAny* aAny )
+void CLocationManagerServer::PositioningStopTimeout()
{
LOG( "CLocationManagerServer::PositioningStopTimeout" );
- CLocationManagerServer* self = STATIC_CAST( CLocationManagerServer*, aAny );
- self->StopRecording();
-
- return KErrNone;
+ StopRecording();
}
// --------------------------------------------------------------------------
-// CLocationUtilityServer::PositioningStopTimeout
+// CLocationUtilityServer::CheckForRemappingCallback
// --------------------------------------------------------------------------
//
-TInt CLocationManagerServer::CheckForRemappingCallback( TAny* aAny )
+void CLocationManagerServer::CheckForRemappingCallback()
{
- LOG( "CLocationManagerServer::CheckForRemappingCallback" );
- CLocationManagerServer* self = STATIC_CAST( CLocationManagerServer*, aAny );
-
- self->iTimer->Cancel();
-
- if ( self->iLocationRecord->RemappingNeeded() && !self->iLocationRecord->IsLowBattery())
+ LOG( "CLocationManagerServer::CheckForRemappingCallback, begin" );
+ if ( iLocationRecord->RemappingNeeded() && !iLocationRecord->IsLowBattery())
{
- self->iTimer->Start( self->iLocManStopRemapDelay * 1000000, 0, TCallBack( PositioningStopTimeout, self ) );
- self->iWaitForPositioningStopTimeout = ETrue;
+ iTimer->StartTimer( iLocManStopRemapDelay * 1000000, MLocationServerTimerObserver::EPositioningStopTimeout);
+ iWaitForPositioningStopTimeout = ETrue;
}
else
{
- self->StopRecording();
+ StopRecording();
}
-
- return KErrNone;
+ LOG( "CLocationManagerServer::CheckForRemappingCallback, end" );
}
// --------------------------------------------------------------------------
@@ -548,7 +732,7 @@
}
// --------------------------------------------------------------------------
-// CLocationManagerServer::GetCurrentCellId
+// CLocationManagerServer::GetCurrentNetworkInfo
// --------------------------------------------------------------------------
//
void CLocationManagerServer::GetCurrentNetworkInfo( CTelephony::TNetworkInfoV1& aNetworkInfo )
@@ -630,6 +814,11 @@
LOG( "CLocationManagerServer::CurrentLocation(), end" );
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::GPSSignalQualityChanged
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::GPSSignalQualityChanged( const TPositionSatelliteInfo& aSatelliteInfo )
{
LOG( "CLocationManagerServer::GPSSignalQualityChanged" );
@@ -677,7 +866,10 @@
}
-
+// --------------------------------------------------------------------------
+// CLocationManagerServer::CancelTrackLogNotificationRequest
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::CancelTrackLogNotificationRequest( const TInt aHandle )
{
LOG( "CLocationManagerServer::CancelTrackLogNotificationRequest(), begin" );
@@ -704,6 +896,11 @@
LOG( "CLocationManagerServer::CancelTrackLogNotificationRequest(), end" );
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::CreateLocationObjectL
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::CreateLocationObjectL( const TLocationData& aLocationData,
const TUint& aObjectId )
{
@@ -715,13 +912,21 @@
iLocationRecord->CreateLocationObjectL( aLocationData, aObjectId );
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::LocationSnapshotL
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::LocationSnapshotL( const TUint& aObjectId )
{
+ LOG( "CLocationManagerServer::LocationSnapshotL(), begin" );
if ( !IsSessionReady() )
{
+ LOG( "Session is not ready" );
User::Leave( KErrNotReady );
}
iLocationRecord->LocationSnapshotL( aObjectId );
+ LOG( "CLocationManagerServer::LocationSnapshotL(), end" );
}
// --------------------------------------------------------------------------
@@ -757,6 +962,11 @@
iRelationQuery->FindL( 1, 1 );
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::CopyLocationObjectL
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::CopyLocationObjectL( TItemId aSource,
const RArray<TItemId>& aTargets, TMessageQuery& aMessageQuery )
{
@@ -818,6 +1028,11 @@
}
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::CopyLocationObjectL
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::CopyLocationObjectL( const TDesC& aSource,
const RArray<TPtrC>& aTargets, TMessageQuery& aQuery )
{
@@ -839,13 +1054,24 @@
CopyLocationObjectL( source, iTargetObjectIds, aQuery );
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::HandleQueryNewResults
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::HandleQueryNewResults( CMdEQuery& /*aQuery*/,
TInt /*aFirstNewItemIndex*/, TInt /*aNewItemCount*/ )
{
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::HandleQueryCompleted
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::HandleQueryCompleted( CMdEQuery& aQuery, TInt aError )
{
+ LOG("CLocationManagerServer::HandleQueryCompleted");
if ( iRemoveLocation )
{
if( aQuery.Count() > 0 && aError == KErrNone )
@@ -889,6 +1115,11 @@
iTargetObjectIds.Reset();
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::NewLC
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::CopyLocationL( CMdEQuery& aQuery )
{
CMdEObjectDef& locationDef = aQuery.NamespaceDef().GetObjectDefL( Location::KLocationObject );
@@ -926,6 +1157,11 @@
}
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::InitCopyLocationByIdL
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::InitCopyLocationByIdL( const RMessage2& aMessage )
{
const TInt KParamSourceId = 0;
@@ -959,6 +1195,11 @@
CleanupStack::PopAndDestroy(&targetIds);
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::InitCopyLocationByURIL
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::InitCopyLocationByURIL( const RMessage2& aMessage )
{
LOG( "CLocationManagerSession::CopyLocationDataByUriL begin" );
@@ -1008,8 +1249,14 @@
LOG( "CLocationManagerSession::CopyLocationDataByUriL end" );
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::StartTrackLogL
+// --------------------------------------------------------------------------
+//
TItemId CLocationManagerServer::StartTrackLogL()
{
+ LOG("CLocationManagerServer::StartTrackLogL");
if ( iTrackLog->IsRecording() )
{
User::Leave( KErrInUse );
@@ -1026,8 +1273,14 @@
return iTagId;
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::StopTrackLogL
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::StopTrackLogL()
{
+ LOG("CLocationManagerServer::StopTrackLogL");
if ( iTrackLog->IsRecording() )
{
iTrackLog->StopRecordingL();
@@ -1040,8 +1293,14 @@
}
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::CompleteNotifyRequest
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::CompleteNotifyRequest( TEventTypes aEventType, TInt aError )
{
+ LOG("CLocationManagerServer::CompleteNotifyRequest");
const TInt KEventTypeParam = 2;
TPckg<TEventTypes> wrapEventType( aEventType );
@@ -1059,19 +1318,35 @@
iTrackLogNotifyReqs.Reset();
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::IsTrackLogRecording
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::IsTrackLogRecording( TBool &aRec )
{
aRec = iTrackLog->IsRecording();
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::GpxFileCreated
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::GpxFileCreated( const TDesC& aFileName, TItemId aTagId,
TReal32 aLength, TTime aStart, TTime aEnd )
{
TRAP_IGNORE( CreateTrackLogL( aTagId, aFileName, aLength, aStart, aEnd ) );
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::CreateTrackLogTagL
+// --------------------------------------------------------------------------
+//
TItemId CLocationManagerServer::CreateTrackLogTagL()
{
+ LOG("CLocationManagerServer::CreateTrackLogTagL");
if ( !IsSessionReady() )
{
User::Leave( KErrNotReady );
@@ -1104,9 +1379,15 @@
return tagId;
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::CreateTrackLogL
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::CreateTrackLogL( TItemId aTagId, const TDesC& aUri, TReal32 aLength,
TTime aStart, TTime aEnd )
{
+ LOG("CLocationManagerServer::CreateTrackLogL");
if ( !IsSessionReady() )
{
User::Leave( KErrNotReady );
@@ -1153,6 +1434,11 @@
CleanupStack::PopAndDestroy( trackLog );
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::GetTrackLogStatus
+// --------------------------------------------------------------------------
+//
TInt CLocationManagerServer::GetTrackLogStatus( TBool& aRecording, TPositionSatelliteInfo& aFixQuality)
{
if ( !iTrackLog )
@@ -1165,6 +1451,11 @@
return KErrNone;
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::DeleteTrackLogL
+// --------------------------------------------------------------------------
+//
TInt CLocationManagerServer::DeleteTrackLogL( const TDesC& aUri )
{
LOG( "CLocationManagerServer::DeleteTrackLogL enter" );
@@ -1205,6 +1496,11 @@
return err;
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::TrackLogName
+// --------------------------------------------------------------------------
+//
TInt CLocationManagerServer::TrackLogName( TFileName& aFileName )
{
if ( iTrackLog->IsRecording() )
@@ -1215,11 +1511,21 @@
return KErrNotFound;
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::GetCaptureSetting
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::GetCaptureSetting( RLocationTrail::TTrailCaptureSetting& aCaptureSetting )
{
aCaptureSetting = iCaptureSetting;
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::HandleObjectNotification
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::HandleObjectNotification( CMdESession& /*aSession*/,
TObserverNotificationType aType,
const RArray<TItemId>& aObjectIdArray )
@@ -1234,6 +1540,11 @@
TRAP_IGNORE( LinkObjectToTrackLogTagL( aObjectIdArray ) );
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::StartListeningTagRemovalsL
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::StartListeningTagRemovalsL()
{
if ( !IsSessionReady() )
@@ -1249,6 +1560,11 @@
CleanupStack::Pop( condition );
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::StartListeningObjectCreationsL
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::StartListeningObjectCreationsL()
{
if ( !IsSessionReady() )
@@ -1271,6 +1587,11 @@
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::LinkObjectToTrackLogTagL
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::LinkObjectToTrackLogTagL( const RArray<TItemId>& aObjectIdArray )
{
CMdERelationDef& containsRelDef = iMdeSession->GetDefaultNamespaceDefL()
@@ -1288,21 +1609,279 @@
}
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::AddGpxObserver
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::AddGpxObserver( MGpxConversionObserver* aObserver )
{
iTrackLog->AddGpxObserver( aObserver );
}
+// --------------------------------------------------------------------------
+// CLocationManagerServer::RemapedCompleted()
+// --------------------------------------------------------------------------
+//
void CLocationManagerServer::RemapedCompleted()
{
LOG( "CLocationManagerServer::RemapedCompleted()" );
StopRecording();
}
+// --------------------------------------------------------------------------
+// CLocationManagerServer::WaitForPositioningStopTimeout()
+// --------------------------------------------------------------------------
+//
TBool CLocationManagerServer::WaitForPositioningStopTimeout()
{
LOG( "CLocationManagerServer::WaitForPositioningStopTimeout()" );
return iWaitForPositioningStopTimeout;
}
+// --------------------------------------------------------------------------
+// CLocationManagerServer::GeoTaggingCompleted
+// --------------------------------------------------------------------------
+//
+
+void CLocationManagerServer::GeoTaggingCompleted( const TInt aError )
+ {
+ LOG("CLocationManagerServer::GeoTaggingCompleted ,begin");
+ ARG_USED(aError);
+ // do nothing because we are only handling pending request for this object.
+#ifdef LOC_REVERSEGEOCODE
+ if(!iGeoTaggingMessage.IsNull())
+ {
+ LOG("Completing the request");
+ iGeoTaggingMessage.Complete(aError);
+ iGeoTaggingMessage = RMessage2 ();
+ }
+#endif //LOC_REVERSEGEOCODE
+ // once geo tagging completed, check whether, we can terminate the server
+ if ( !iSessionCount
+ && iLocationRecord
+ && !iLocationRecord->TaggingInProgress())
+ {
+ // Nothing in progress. shutdown the server
+ CActiveScheduler::Stop();
+ }
+ LOG("CLocationManagerServer::GeoTaggingCompleted ,end");
+ }
+
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::PendingGeoTagReqComplete
+// --------------------------------------------------------------------------
+//
+void CLocationManagerServer::PendingGeoTagReqComplete( const TInt aError )
+ {
+ LOG("CLocationManagerServer::PendingGeoTagReqComplete ,begin");
+ ARG_USED(aError);
+#ifdef LOC_REVERSEGEOCODE
+ if(!iTagPendingMessage.IsNull())
+ {
+
+ TGeoTaggingSatus pendingGeoTagEntry = EGeoTagCmpt;
+ switch(aError)
+ {
+ case KErrNotFound:
+ pendingGeoTagEntry = EGeoTaggingPending;
+ LOG("Geo tagging pending");
+ break;
+ case KErrInUse:
+ pendingGeoTagEntry = EGeoTaggingGoingOn;
+ LOG("Geo tagging going on");
+ break;
+ default:
+ break;
+ }
+
+ TPckg<TGeoTaggingSatus> pendingGeoTagEntryPkg( pendingGeoTagEntry );
+ TRAPD(err, iTagPendingMessage.WriteL( 0, pendingGeoTagEntryPkg ));
+ iTagPendingMessage.Complete((err == KErrNone) ? KErrNone : err);
+ iTagPendingMessage = RMessage2 ();
+ }
+#endif //LOC_REVERSEGEOCODE
+ LOG("CLocationManagerServer::PendingGeoTagReqComplete ,end");
+ }
+
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::TagPendingRequestL
+// --------------------------------------------------------------------------
+//
+void CLocationManagerServer::TagPendingRequestL( const RMessage2& aMessage )
+ {
+ LOG("CLocationManagerServer::TagPendingRequestL ,begin");
+ // Only one request at a time
+#ifdef LOC_REVERSEGEOCODE
+ if(iTagPendingMessage.IsNull() && iGeoTaggingMessage.IsNull())
+ {
+ iTagPendingMessage = RMessage2( aMessage );
+ // search for pending entry.
+ //Create the instance of geotagger class
+ TBool tagProgress = iLocationRecord->TaggingInProgress();
+ if(tagProgress)
+ {
+ LOG("Tagging is going on.\n");
+ // Let UI to send start geo tagging command.
+ PendingGeoTagReqComplete(KErrNotFound);
+ }
+ else
+ {
+ LOG("Tagging is not going on.\n");
+ if(iGeoTaggingPendingReqObj == NULL)
+ {
+ iGeoTaggingPendingReqObj = CGeoTagger::NewL( this, NULL );
+ }
+ iGeoTaggingPendingReqObj->PendingGeoTagsL( tagProgress);
+ }
+ }
+ else
+ {
+ LOG("Server busy\n");
+ aMessage.Complete(KErrServerBusy);
+ }
+#else
+ aMessage.Complete(KErrNotSupported);
+#endif //LOC_REVERSEGEOCODE
+ LOG("CLocationManagerServer::TagPendingRequestL ,end");
+ }
+
+
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::CancelTagPendingRequest
+// --------------------------------------------------------------------------
+//
+void CLocationManagerServer::CancelTagPendingRequest( const RMessage2& aMessage )
+ {
+ LOG("CLocationManagerServer::CancelTagPendingRequest ,begin");
+ // Only one request at a time
+#ifdef LOC_REVERSEGEOCODE
+ if(!iTagPendingMessage.IsNull())
+ {
+ iTagPendingMessage.Complete(KErrCancel);
+ iLocationRecord->CancelGeoTagging();
+ }
+ aMessage.Complete(KErrNone);
+#else
+ aMessage.Complete(KErrNotSupported);
+#endif //LOC_REVERSEGEOCODE
+ }
+
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::CancelGeoTaggingRequest
+// --------------------------------------------------------------------------
+//
+void CLocationManagerServer::CancelGeoTaggingRequest( const RMessage2& aMessage )
+ {
+ LOG("CLocationManagerServer::CancelGeoTaggingRequest ,begin");
+ // Only one request at a time
+#ifdef LOC_REVERSEGEOCODE
+ if(!iGeoTaggingMessage.IsNull())
+ {
+ iGeoTaggingMessage.Complete(KErrCancel);
+ iGeoTaggingMessage = RMessage2 ();
+ iLocationRecord->CancelGeoTagging();
+ }
+ aMessage.Complete(KErrNone);
+#else
+ aMessage.Complete(KErrNotSupported);
+#endif //LOC_REVERSEGEOCODE
+ }
+
+
+// --------------------------------------------------------------------------
+// CLocationManagerServer::StartGeoTaggingL
+// --------------------------------------------------------------------------
+//
+void CLocationManagerServer::StartGeoTaggingL( const RMessage2& aMessage )
+ {
+ LOG("CLocationManagerServer::StartGeoTaggingL ,begin");
+#ifdef LOC_REVERSEGEOCODE
+ if(iGeoTaggingMessage.IsNull() && iTagPendingMessage.IsNull())
+ {
+ iGeoTaggingMessage = RMessage2( aMessage );
+ // search for pending entry.
+ //Create the instance of geotagger class
+ if(!iLocationRecord->StartGeoTagging(EInteractive))
+ {
+ if(iGeoTaggingPendingReqObj == NULL)
+ {
+ iGeoTaggingPendingReqObj = CGeoTagger::NewL( this, NULL );
+ }
+ iGeoTaggingPendingReqObj->CreateGeoTagsL((TConnectionOption)(aMessage.Int0()));
+ }
+ }
+ else
+ {
+ LOG("Server busy\n");
+ aMessage.Complete(KErrServerBusy);
+ }
+#else
+ aMessage.Complete(KErrNotSupported);
+#endif //LOC_REVERSEGEOCODE
+ }
+
+
+// ----------------------------------------------------------------------------
+// CLocationManagerServer::GetCurrentRegisterNw()
+// ----------------------------------------------------------------------------
+RMobilePhone::TMobilePhoneNetworkInfoV2& CLocationManagerServer::GetCurrentRegisterNw()
+ {
+ LOG( "CLocationManagerServer::GetCurrentRegisterNw ,begin" );
+ return iLocationRecord->GetCurrentRegisteredNw();
+ }
+
+// ----------------------------------------------------------------------------
+// CLocationManagerServer::RetrieveHomeNetwork()
+// ----------------------------------------------------------------------------
+void CLocationManagerServer::RetrieveHomeNetwork()
+ {
+ LOG("CLocationManagerServer::RetrieveHomeNetwork ,begin");
+ if(iHomeNwInfoAvailableFlag)
+ {
+ RMobilePhone::TMobilePhoneNetworkInfoV1Pckg homeNetworkPckg( iHomeNetwork );
+
+ TRequestStatus status( KErrNone );
+
+ iPhone.GetHomeNetwork(status, homeNetworkPckg);
+ User::WaitForRequest( status );
+ if(status.Int() == KErrNone)
+ {
+ iHomeNwInfoAvailableFlag = ETrue;
+ }
+ }
+ LOG("CLocationManagerServer::RetrieveHomeNetwork ,end");
+ }
+
+// ----------------------------------------------------------------------------
+// CLocationManagerServer::GetHomeNetworkInfo()
+// ----------------------------------------------------------------------------
+const RMobilePhone::TMobilePhoneNetworkInfoV1&
+ CLocationManagerServer::GetHomeNetworkInfo(TBool& aHomeNwInfoAvailableFlag)
+ {
+ LOG("CLocationManagerServer::RetrieveHomeNetwork ,begin");
+ if(!iHomeNwInfoAvailableFlag)
+ {
+ RetrieveHomeNetwork();
+ }
+ aHomeNwInfoAvailableFlag = iHomeNwInfoAvailableFlag;
+ return iHomeNetwork;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CLocationManagerServer::IsRegisteredAtHomeNetwork()
+// ----------------------------------------------------------------------------
+TBool CLocationManagerServer::IsRegisteredAtHomeNetwork()
+ {
+ LOG( "CLocationManagerServer::IsRegisteredAtHomeNetwork" );
+ return (iNwRegistrationStatusHandler &&
+ (iNwRegistrationStatusHandler->GetNetworkRegistrationStatus()
+ == RMobilePhone::ERegisteredOnHomeNetwork));
+ }
+
// End of file
--- a/locationmanager/server/src/clocationmanagersession.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/server/src/clocationmanagersession.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -48,7 +48,12 @@
CLocationManagerSession::~CLocationManagerSession()
{
LOG( "CLocationManagerSession::~CLocationManagerSession(), begin" );
- TRAP_IGNORE(Server().StopGPSPositioningL());
+ // don't call stop GPS positioning from here...
+ // we are expecting the application to start and stop else on server terminate, we will do the same.
+ // this is not okay when user takes a photograph and then transfer photo using BT/PC .
+ // at this point, it will stop the trail for camera where as camera session is still valid.
+ // DON"T CALL StopGPSPositioningL METHOD.
+// TRAP_IGNORE(Server().StopGPSPositioningL());
Server().CancelNotificationRequest( iNotificationHandle );
Server().CancelLocationRequest( iLocationHandle );
Server().CancelTrackLogNotificationRequest( iTrackLogNotificationHandle );
@@ -86,22 +91,15 @@
//
void CLocationManagerSession::ServiceL( const RMessage2& aMessage )
{
- LOG( "CLocationManagerSession::ServiceL" );
- _LIT( KSemaphore, "LocManSynchSemaphore" );
- RSemaphore semaphore;
- const TInt result = semaphore.OpenGlobal( KSemaphore );
- LOG1( "CLocationManagerSession::ServiceL - semaphore open result: %d", result );
+ LOG( "CLocationManagerSession::ServiceL, begin" );
+ LOG1("Message id - %d", aMessage.Function());
iMessage = RMessage2( aMessage );
- if ( result == KErrNone )
- {
- semaphore.Signal();
- semaphore.Close();
- }
TRAPD( err, DispatchMessageL( aMessage ) );
if ( err != KErrNone )
{
aMessage.Complete( err );
}
+ LOG( "CLocationManagerSession::ServiceL, end" );
}
// --------------------------------------------------------------------------
@@ -180,6 +178,18 @@
case ELocManCancelTrackLogNotify:
CancelTrackLogNotificationRequest( aMessage );
break;
+ case ELocManTagPending:
+ Server().TagPendingRequestL(aMessage);
+ break;
+ case ELocManStartGeoTaging:
+ Server().StartGeoTaggingL(aMessage);
+ break;
+ case ELocManCancelTagPendingReq:
+ Server().CancelTagPendingRequest(aMessage);
+ break;
+ case ELocManCancelGeoTaggingReq:
+ Server().CancelGeoTaggingRequest(aMessage);
+ break;
default:
aMessage.Complete( KErrArgument );
break;
@@ -494,7 +504,7 @@
}
// --------------------------------------------------------------------------
-// CLocationManagerSession::GpsQualityChange
+// CLocationManagerSession::RegisterTrackLogObserver
// --------------------------------------------------------------------------
//
void CLocationManagerSession::RegisterTrackLogObserver( const RMessage2& aMessage )
@@ -503,6 +513,11 @@
TRAP_IGNORE( Server().AddTrackLogNotificationRequestL( aMessage ) );
}
+
+// --------------------------------------------------------------------------
+// CLocationManagerSession::GetCaptureSettingL
+// --------------------------------------------------------------------------
+//
void CLocationManagerSession::GetCaptureSettingL( const RMessage2& aMessage )
{
TInt KParamCaptureSetting = 0;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/server/src/clocationservertimerhandler.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,108 @@
+/*
+* Copyright (c) 2009-2010 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: Implements helper class to handle location server tiimer related functionality
+*
+*/
+
+#include "clocationservertimerhandler.h"
+#include "locationmanagerdebug.h"
+
+
+
+// --------------------------------------------------------------------------
+// CLocationServerTimerHandler::CLocationServerTimerHandler
+// --------------------------------------------------------------------------
+//
+CLocationServerTimerHandler::CLocationServerTimerHandler
+ (MLocationServerTimerObserver& aLocationServerTimerObserver):
+ CTimer(EPriorityStandard ),
+ iLocationServerTimerObserver(aLocationServerTimerObserver),
+ iLocationServerTimerType(MLocationServerTimerObserver::ELocGeneralPurpose)
+ {
+ }
+
+// --------------------------------------------------------------------------
+// CLocationServerTimerHandler::~CLocationServerTimerHandler
+// --------------------------------------------------------------------------
+//
+CLocationServerTimerHandler::~CLocationServerTimerHandler()
+ {
+ LOG ("CLocationServerTimerHandler::~CLocationServerTimerHandler(), begin");
+ Cancel();
+ LOG ("CLocationServerTimerHandler::~CLocationServerTimerHandler(), end");
+ }
+
+// --------------------------------------------------------------------------
+// CLocationServerTimerHandler::NewL
+// --------------------------------------------------------------------------
+//
+CLocationServerTimerHandler* CLocationServerTimerHandler::NewL(MLocationServerTimerObserver& aLocationServerTimerObserver)
+ {
+ CLocationServerTimerHandler* self =
+ new( ELeave ) CLocationServerTimerHandler(aLocationServerTimerObserver);
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+
+// --------------------------------------------------------------------------
+// CLocationServerTimerHandler::ConstructL
+// --------------------------------------------------------------------------
+//
+void CLocationServerTimerHandler::ConstructL()
+ {
+ LOG ("CLocationServerTimerHandler::ConstructL(), begin");
+ CActiveScheduler::Add(this);
+ CTimer::ConstructL();
+ LOG ("CLocationServerTimerHandler::ConstructL(), end");
+ }
+
+// --------------------------------------------------------------------------
+// CLocationServerTimerHandler::StartTimer
+// --------------------------------------------------------------------------
+//
+void CLocationServerTimerHandler::StartTimer(const TTimeIntervalMicroSeconds32 anInterval,
+ const MLocationServerTimerObserver::TLocationServerTimerType aLocationServerTimerType)
+ {
+ LOG ("CLocationServerTimerHandler::StartTimer(), begin");
+ if(!IsActive())
+ {
+ LOG1("Starting timer of type - %d", aLocationServerTimerType);
+ // not active.
+ iLocationServerTimerType = aLocationServerTimerType;
+ After( anInterval );
+ }
+ LOG ("CLocationServerTimerHandler::StartTimer(), end");
+ }
+
+
+// --------------------------------------------------------------------------
+// CLocationServerTimerHandler::RunL
+// --------------------------------------------------------------------------
+//
+void CLocationServerTimerHandler::RunL( )
+ {
+ LOG ("CLocationServerTimerHandler::RunL(), begin");
+ TInt status = iStatus.Int();
+ LOG1("Error code - %d", status);
+ iLocationServerTimerObserver.LocationServerTimerCallBackL
+ (iLocationServerTimerType,status);
+ LOG ("CLocationServerTimerHandler::RunL(), end");
+ }
+
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/server/src/nwregistrationstatushandler.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,137 @@
+/*
+* Copyright (c) 2009-2010 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: Network registration status handler
+*
+*/
+
+
+#include "nwregistrationstatushandler.h"
+#include "locationmanagerdebug.h"
+
+
+// ----------------------------------------------------------------------------
+// CNwRegistrationStatusHandler::CNwRegistrationStatusHandler()
+// ----------------------------------------------------------------------------
+CNwRegistrationStatusHandler::CNwRegistrationStatusHandler(RMobilePhone& aMobilePhone):
+ CActive(EPriorityStandard ),
+ iMobilePhone(aMobilePhone),
+ iRegistrationStatus(RMobilePhone::ERegistrationUnknown),
+ iState(ERegStatusOptStateNone)
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CNwRegistrationStatusHandler::~CNwRegistrationStatusHandler()
+// ----------------------------------------------------------------------------
+CNwRegistrationStatusHandler::~CNwRegistrationStatusHandler()
+ {
+ LOG("CNwRegistrationStatusHandler::~CNwRegistrationStatusHandler");
+ Cancel();
+ }
+
+// ----------------------------------------------------------------------------
+// CNwRegistrationStatusHandler::NewL()
+// ----------------------------------------------------------------------------
+CNwRegistrationStatusHandler* CNwRegistrationStatusHandler::NewL(RMobilePhone& aMobilePhone)
+ {
+ LOG("CNwRegistrationStatusHandler::NewL ,begin");
+ CNwRegistrationStatusHandler* self = new( ELeave ) CNwRegistrationStatusHandler(aMobilePhone);
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CNwRegistrationStatusHandler::ConstructL()
+// ----------------------------------------------------------------------------
+void CNwRegistrationStatusHandler::ConstructL()
+ {
+ LOG("CNwRegistrationStatusHandler::ConstructL ,begin");
+ CActiveScheduler::Add(this);
+ iMobilePhone.GetNetworkRegistrationStatus(iStatus, iRegistrationStatus);
+ iState = ERegStatusOptStateGet;
+ SetActive();
+ LOG("CNwRegistrationStatusHandler::ConstructL ,end");
+ }
+
+
+// ----------------------------------------------------------------------------
+// CNwRegistrationStatusHandler::GetNetworkRegistrationStatus()
+// ----------------------------------------------------------------------------
+RMobilePhone::TMobilePhoneRegistrationStatus CNwRegistrationStatusHandler::GetNetworkRegistrationStatus() const
+ {
+ return iRegistrationStatus;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CNwRegistrationStatusHandler::StartNotifier()
+// ----------------------------------------------------------------------------
+void CNwRegistrationStatusHandler::StartNotifier()
+ {
+ LOG("CNwRegistrationStatusHandler::StartNotifier ,begin");
+ if(!IsActive())
+ {
+ iState = ERegStatusOptStateNotify;
+ iMobilePhone.NotifyNetworkRegistrationStatusChange(iStatus, iRegistrationStatus);
+ SetActive();
+ }
+ else
+ {
+ // already active.
+ LOG("N/W registration status handler already active");
+ }
+ LOG("CNwRegistrationStatusHandler::StartNotifier ,end");
+ }
+
+// ----------------------------------------------------------------------------
+// CNwRegistrationStatusHandler::RunL()
+// ----------------------------------------------------------------------------
+void CNwRegistrationStatusHandler::RunL( )
+ {
+ LOG("CNwRegistrationStatusHandler::RunL");
+ LOG1("Status - %d", iStatus.Int());
+ StartNotifier();
+ }
+
+// ----------------------------------------------------------------------------
+// CNwRegistrationStatusHandler::DoCancel()
+// ----------------------------------------------------------------------------
+void CNwRegistrationStatusHandler::DoCancel( )
+ {
+ LOG("CNwRegistrationStatusHandler::DoCancel");
+ switch(iState)
+ {
+ case ERegStatusOptStateGet:
+ {
+ iMobilePhone.CancelAsyncRequest(EMobilePhoneGetNetworkRegistrationStatus);
+ break;
+ }
+ case ERegStatusOptStateNotify:
+ {
+ iMobilePhone.CancelAsyncRequest(EMobilePhoneNotifyNetworkRegistrationStatusChange);
+ break;
+ }
+ default:
+ // execution shouldn't come over here
+ LOG1("CNwRegistrationStatusHandler::DoCancel, in wrong state - %d", iState);
+ break;
+ }
+ }
+
+
+// End of file
+
--- a/locationmanager/sis/locutildebug.pkg Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/sis/locutildebug.pkg Tue Jul 06 14:44:37 2010 +0300
@@ -28,7 +28,34 @@
;:"Nokia"
:"Vendor"
-"S:\EPOC32\RELEASE\ARMV5\UDEB\locationutilityserver.exe" -"!:\sys\bin\locationutilityserver.exe"
-"S:\EPOC32\RELEASE\ARMV5\UDEB\LocationTrail.dll" -"!:\sys\bin\LocationTrail.dll"
-"S:\EPOC32\RELEASE\ARMV5\UDEB\locationutility.dll" -"!:\sys\bin\locationutility.dll"
-"S:\EPOC32\RELEASE\ARMV5\UDEB\Loc.exe" -"!:\sys\bin\Loc.exe"
\ No newline at end of file
+"\EPOC32\RELEASE\ARMV5\UDEB\locationutilityserver.exe" -"!:\sys\bin\locationutilityserver.exe"
+"\EPOC32\RELEASE\ARMV5\UDEB\LocationTrail.dll" -"!:\sys\bin\LocationTrail.dll"
+"\EPOC32\RELEASE\ARMV5\UDEB\locationutility.dll" -"!:\sys\bin\locationutility.dll"
+"\EPOC32\RELEASE\ARMV5\UDEB\Loc.exe" -"!:\sys\bin\Loc.exe"
+
+
+; Geo converter
+"\EPOC32\RELEASE\ARMV5\UDEB\geoconverter.dll" -"!:\sys\bin\geoconverter.dll"
+
+;#include "..\inc\locplatsupport.mmh"
+;#ifdef _LOC_REVERSEGEOCODE
+;MACRO LOC_REVERSEGEOCODE
+; Reverse geocode
+;"\EPOC32\RELEASE\ARMV5\UDEB\ReverseGeocode.dll" -"!:\sys\bin\ReverseGeocode.dll"
+
+; Tag creator
+;"\EPOC32\RELEASE\ARMV5\UDEB\tagcreator.dll" -"!:\sys\bin\tagcreator.dll"
+
+; Geo tagger
+;"\EPOC32\RELEASE\ARMV5\UDEB\geotagger.dll" -"!:\sys\bin\geotagger.dll"
+
+; Reverse geocode plugin
+;"\epoc32\RELEASE\armv5\UDEB\ReverseGeoCoderPlugin.dll"-"!:\sys\bin\ReverseGeoCoderPlugin.dll"
+;"\epoc32\data\z\resource\plugins\reversegeocoderplugin.rsc"-"!:\resource\plugins\reversegeocoderplugin.rsc"
+
+;#endif
+
+
+
+; End of file
+
--- a/locationmanager/sis/package.pkg Wed Jun 23 18:41:19 2010 +0300
+++ b/locationmanager/sis/package.pkg Tue Jul 06 14:44:37 2010 +0300
@@ -28,4 +28,7 @@
;Files
"\EPOC32\RELEASE\ARMV5\UREL\LocationTrail.dll" -"c:\sys\bin\LocationTrail.dll"
"\EPOC32\RELEASE\ARMV5\UREL\locationmanager.dll" -"c:\sys\bin\locationmanager.dll"
-"\EPOC32\RELEASE\ARMV5\UREL\locationmanagerserver.exe" -"c:\sys\bin\locationmanagerserver.exe"
\ No newline at end of file
+"\EPOC32\RELEASE\ARMV5\UREL\locationmanagerserver.exe" -"c:\sys\bin\locationmanagerserver.exe"
+
+; End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/sis/package_cellid_reverse_geocode_enabled.pkg Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,53 @@
+;
+; 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 "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:
+;
+;Languages
+&EN
+
+;packet-header (name, uid, major, minor, build, type)
+#{"Location Manager Patch"},(0x200071BE), 2, 0, 0, TYPE=SA, RU
+
+; Localised vendor name
+%{"Nokia"}
+
+; Unique vendor name
+:"Nokia"
+
+;Files
+"\EPOC32\RELEASE\ARMV5\UREL\LocationTrail.dll" -"c:\sys\bin\LocationTrail.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\locationmanager.dll" -"c:\sys\bin\locationmanager.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\locationmanagerserver.exe" -"c:\sys\bin\locationmanagerserver.exe"
+
+; Reverse geocode
+"\EPOC32\RELEASE\ARMV5\UREL\ReverseGeocode.dll" -"c:\sys\bin\ReverseGeocode.dll"
+
+; Tag creator
+"\EPOC32\RELEASE\ARMV5\UREL\tagcreator.dll" -"c:\sys\bin\tagcreator.dll"
+
+; Geo tagger
+"\EPOC32\RELEASE\ARMV5\UREL\geotagger.dll" -"c:\sys\bin\geotagger.dll"
+
+; Geo converter
+"\EPOC32\RELEASE\ARMV5\UREL\geoconverter.dll" -"c:\sys\bin\geoconverter.dll"
+
+
+; Reverse geocode plugin
+"\epoc32\RELEASE\armv5\UREL\ReverseGeoCoderPlugin.dll"-"c:\sys\bin\ReverseGeoCoderPlugin.dll"
+"\epoc32\data\z\resource\plugins\reversegeocoderplugin.rsc"-"c:\resource\plugins\reversegeocoderplugin.rsc"
+
+
+; End of file
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/sis/package_cellidenabled.pkg Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,39 @@
+;
+; 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 "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:
+;
+;Languages
+&EN
+
+;packet-header (name, uid, major, minor, build, type)
+#{"Location Manager Patch"},(0x200071BE), 2, 0, 0, TYPE=SA, RU
+
+; Localised vendor name
+%{"Nokia"}
+
+; Unique vendor name
+:"Nokia"
+
+;Files
+"\EPOC32\RELEASE\ARMV5\UREL\LocationTrail.dll" -"c:\sys\bin\LocationTrail.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\locationmanager.dll" -"c:\sys\bin\locationmanager.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\locationmanagerserver.exe" -"c:\sys\bin\locationmanagerserver.exe"
+
+; Geo converter
+"\EPOC32\RELEASE\ARMV5\UREL\geoconverter.dll" -"c:\sys\bin\geoconverter.dll"
+
+
+; End of file
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/tagcreator/group/bld.inf Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2005-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 "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Build information file
+*
+*/
+
+PRJ_PLATFORMS
+ DEFAULT
+
+PRJ_EXPORTS
+
+PRJ_MMPFILES
+tagcreator.mmp
+
+PRJ_TESTMMPFILES
+
+PRJ_TESTEXPORTS
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationmanager/tagcreator/group/tagcreator.mmp Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,60 @@
+/*
+* Copyright (c) 2005-2009 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: Project definition file
+*
+*/
+
+#include <platform_paths.hrh>
+#include <data_caging_paths.hrh>
+VERSION 10.0
+TARGET tagcreator.dll
+TARGETTYPE DLL
+UID 0x1000008d 0x2002701E
+
+VENDORID VID_DEFAULT
+CAPABILITY CAP_GENERAL_DLL
+
+#if defined(WINSCW)
+deffile ../bwincw/tagcreatorwinscw.def
+#elif defined(ARMCC)
+deffile ../eabi/tagcreatorarm.def
+#endif
+nostrictdef
+
+USERINCLUDE ../inc
+USERINCLUDE ../../inc
+USERINCLUDE ../../../inc
+USERINCLUDE ../../reversegeocode/inc
+
+
+
+SOURCEPATH ../src
+SOURCE ctagcreator.cpp
+
+MW_LAYER_SYSTEMINCLUDE
+
+LIBRARY euser.lib
+LIBRARY efsrv.lib
+LIBRARY mdeclient.lib
+LIBRARY estor.lib
+LIBRARY platformenv.lib
+DEBUGLIBRARY flogger.lib
+
+
+PAGED
+BYTEPAIRCOMPRESSTARGET
+OPTION ARMCC -O3 -OTime
+
+// End of file
+
--- a/mds_plat/harvester_framework_api/inc/harvesterplugin.h Wed Jun 23 18:41:19 2010 +0300
+++ b/mds_plat/harvester_framework_api/inc/harvesterplugin.h Tue Jul 06 14:44:37 2010 +0300
@@ -208,6 +208,11 @@
*/
IMPORT_C void SetHarvesterPluginFactory( CHarvesterPluginFactory& aFactory );
+ /**
+ * Method for checking if the plugin is in idle state
+ */
+ IMPORT_C TBool PluginInIdleState();
+
private:
/**
--- a/mds_plat/harvester_framework_api/tsrc/MonitorPluginTest/conf/MonitorPluginTest.cfg Wed Jun 23 18:41:19 2010 +0300
+++ b/mds_plat/harvester_framework_api/tsrc/MonitorPluginTest/conf/MonitorPluginTest.cfg Tue Jul 06 14:44:37 2010 +0300
@@ -53,8 +53,6 @@
test StartMonitoring
request Monitor
test CreateEvents
-wait Monitor
-request Monitor
test CreateEventsDelete
wait Monitor
test StopMonitoring
--- a/mds_plat/location_manager_api/group/bld.inf Wed Jun 23 18:41:19 2010 +0300
+++ b/mds_plat/location_manager_api/group/bld.inf Tue Jul 06 14:44:37 2010 +0300
@@ -16,6 +16,7 @@
*/
#include <platform_paths.hrh>
+#include "../../../locationmanager/inc/locplatsupport.mmh"
PRJ_PLATFORMS
DEFAULT
@@ -28,6 +29,11 @@
../inc/rlocationobjectmanipulator.h MW_LAYER_PLATFORM_EXPORT_PATH(rlocationobjectmanipulator.h)
../inc/locationdatatype.h MW_LAYER_PLATFORM_EXPORT_PATH(locationdatatype.h)
../inc/locationeventdef.h MW_LAYER_PLATFORM_EXPORT_PATH(locationeventdef.h)
+../inc/geotagobserver.h MW_LAYER_PLATFORM_EXPORT_PATH(geotagobserver.h)
+../inc/rlocationgeotagger.h MW_LAYER_PLATFORM_EXPORT_PATH(rlocationgeotagger.h)
+#ifdef _LOC_REVERSEGEOCODE
+../inc/geotagger.h MW_LAYER_PLATFORM_EXPORT_PATH(geotagger.h)
+#endif
PRJ_MMPFILES
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mds_plat/location_manager_api/inc/geotagger.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,60 @@
+/*
+* 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 "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: A class responsible for geotagging of media files in background.
+*
+*/
+
+#ifndef GEOTAGGER_H_
+#define GEOTAGGER_H_
+
+#include <e32base.h>
+#include <e32property.h>
+#include <mdesession.h>
+#include <geotagobserver.h>
+
+
+/**
+ * GeoTagger converts a given cell ID(CGI Info) to geo-coordinates.
+ * Does reverse geocoding to get country and city name.
+ * Creates country and city tag for image/video files.
+ * @since S60 9.2
+ */
+
+class CGeoTagger : public CBase
+ {
+public:
+ /**
+ * 2-phased constructor.
+ */
+ IMPORT_C static CGeoTagger* NewL(MGeoTaggerObserver* aObserver, CMdESession* aMdeSession = NULL );
+
+public: //exported API
+ /**
+ * Harvests location tags.
+ * @param aObserver, observer for geotagging.
+ * @return None.
+ */
+ virtual void CreateGeoTagsL( const TConnectionOption = ESilent ) = 0;
+
+ /**
+ * Is there any untagged photos with location info?.
+ * @return None.
+ */
+ virtual void PendingGeoTagsL( TBool aTagInProgress ) = 0;
+ };
+
+#endif // GEOTAGGER_H_
+
+// End of file.
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mds_plat/location_manager_api/inc/geotagobserver.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,79 @@
+/*
+* 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 "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: A class responsible for geotagging of media files in background.
+*
+*/
+
+#ifndef GEOTAGOBSERVER_H_
+#define GEOTAGOBSERVER_H_
+
+#include <e32base.h>
+#include <etel.h>
+#include <etelmm.h>
+
+enum TConnectionOption
+ {
+ ESilent=0,
+ EInteractive
+ };
+
+typedef enum
+ {
+ EGeoTaggingPending = 0x01,
+ EGeoTaggingGoingOn,
+ EGeoTagCmpt
+ }TGeoTaggingSatus;
+
+
+class MGeoTaggerObserver
+ {
+public:
+ /**
+ * This method is used for notifying completion of geotagging
+ */
+ virtual void GeoTaggingCompleted( const TInt aError ) = 0;
+
+ /**
+ * This method is used for notifying completion of query for pending geo tags
+ */
+ virtual void PendingGeoTagReqComplete( const TInt aError ) = 0;
+
+ /*
+ * Get registrer network country code
+ *
+ * @return current register n/w info
+ */
+ virtual RMobilePhone::TMobilePhoneNetworkInfoV2& GetCurrentRegisterNw() = 0;
+
+ /*
+ * UE is registered to home network?
+ *
+ * @return ETrue if UE is registered at home network else EFalse
+ */
+ virtual TBool IsRegisteredAtHomeNetwork() = 0;
+
+ /*
+ * Get home network country code
+ * @param aHomeNwInfoAvailableFlag ETrue if home n/w info available else EFalse
+ * @return user home n/w info
+ */
+ virtual const RMobilePhone::TMobilePhoneNetworkInfoV1&
+ GetHomeNetworkInfo(TBool& aHomeNwInfoAvailableFlag) = 0;
+
+ };
+
+
+#endif // GEOTAGOBSERVER_H_
+
+// End of file.
--- a/mds_plat/location_manager_api/inc/locationdatatype.h Wed Jun 23 18:41:19 2010 +0300
+++ b/mds_plat/location_manager_api/inc/locationdatatype.h Tue Jul 06 14:44:37 2010 +0300
@@ -20,6 +20,8 @@
#include <lbsposition.h>
#include <etel3rdparty.h>
+const TInt KMaxCountryName = 128;
+typedef TBuf<KMaxCountryName> TCountryName;
/*
* TLocationData encapsulates all location data.
*/
@@ -28,7 +30,7 @@
TPosition iPosition;
CTelephony::TNetworkInfoV1 iNetworkInfo;
TCourse iCourse;
- TBuf<100> iCountry;
+ TCountryName iCountry;
TUint iSatellites;
TReal32 iQuality;
};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mds_plat/location_manager_api/inc/rlocationgeotagger.h Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,81 @@
+/*
+* Copyright (c) 2006-2009 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: An interface to Location Trail.
+*
+*/
+
+#ifndef R_RLOCATIONGEOTAGGER_H
+#define R_RLOCATIONGEOTAGGER_H
+
+#include <e32base.h>
+#include <etel3rdparty.h>
+#include <lbsposition.h>
+#include <rlocationmanager.h>
+#include <locationdatatype.h>
+#include <geotagobserver.h>
+
+
+/**
+ * RLocationManager class is used for creating a Location Manager session.
+ * Location Manager is used to start and stop the location trail, retrieve
+ * location information and write the location information to images.
+ *
+ * @lib LocationManager.lib
+ * @since S60 9.2
+ */
+NONSHARABLE_CLASS( RLocationGeoTagger ) : public RLocationManager
+ {
+public:
+
+public:
+ IMPORT_C RLocationGeoTagger();
+
+ IMPORT_C ~RLocationGeoTagger();
+
+
+ /**
+ * Is there any geo tag pending state. (Asynchronous call)
+ * @param aStatus - request status.
+ * @param aTagPendingFlag - tag pending flag (ETrue if few entry is yet to be tagged else EFalse)
+ * @return None
+ */
+ IMPORT_C void GeoTagStaus( TRequestStatus& aStatus,
+ TGeoTaggingSatus& aTagPendingFlag );
+
+ /**
+ * Cancel tag pending request
+ * @return None
+ */
+ IMPORT_C void CancelTagPendingRequest();
+
+ /**
+ * Cancel geo tagging request
+ * @return None
+ */
+ IMPORT_C void CancelGeoTaggingRequest();
+
+ /**
+ * Start geo tagging.
+ * @param aConnectionOption - connection option (ESilent/EInteractive).
+ * @return None
+ */
+ IMPORT_C void StartGeoTagging(TRequestStatus& aStatus, const TConnectionOption aConnectionOption );
+
+private:
+ TPckg<TGeoTaggingSatus> *iTagPendingData;
+ };
+
+#endif // R_RLOCATIONGEOTAGGER_H
+
+//End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mds_plat/location_manager_api/tsrc/conf/LocationManagerTestScripter_reverse_geocode.cfg Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,345 @@
+#
+# Copyright (c) 2008-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: Location Manager API tests
+#
+
+// ---------------------------------------------------------------------------
+// Location Manager API test cases
+// ---------------------------------------------------------------------------
+
+// These should be run in sequential mode if several cases are run at the same
+// time!
+
+[StifSettings]
+TestThreadStackSize= 32768
+TestThreadMinHeap= 4096
+TestThreadMaxHeap= 16777216
+[EndStifSettings]
+
+[Test]
+title Location Manager Connect Disconnect
+timeout 60000
+create LocationManagerTestScripter test
+test Connect
+test Close
+delete test
+[Endtest]
+
+[Test]
+title Location Trail Connect Disconnect
+timeout 60000
+create LocationManagerTestScripter test
+test TrailConnect
+test TrailClose
+delete test
+[Endtest]
+
+[Test]
+title Start-Stop Location Trail
+timeout 60000
+create LocationManagerTestScripter test
+test TrailConnect
+test StartTrailTests
+test TrailClose
+delete test
+[Endtest]
+
+[Test]
+title Get Location Trail State
+timeout 60000
+create LocationManagerTestScripter test
+test TrailConnect
+test StartTrail
+test GetTrailState
+test StopTrail
+test TrailClose
+delete test
+[Endtest]
+
+[Test]
+title Location Trail Notification Basic Test
+timeout 60000
+create LocationManagerTestScripter test
+test TrailConnect
+test StartTrail
+test LocationTrailNotifyTest
+test StopTrail
+test TrailClose
+delete test
+[Endtest]
+
+[Test]
+title Retrieve Location Basic Test
+timeout 60000
+create LocationManagerTestScripter test
+test TrailConnect
+test StartTrail
+test RetrieveLocation
+test StopTrail
+test TrailClose
+delete test
+[Endtest]
+
+[Test]
+title Current Location Basic Test
+timeout 60000
+create LocationManagerTestScripter test
+test TrailConnect
+test StartTrail
+test CurrentLocation
+test StopTrail
+test TrailClose
+delete test
+[Endtest]
+
+[Test]
+title Create Location Object Manipulator
+timeout 60000
+create LocationManagerTestScripter test
+request Session
+test PrepareSession
+wait Session
+test TearDownOM
+delete test
+[Endtest]
+
+[Test]
+title Create Location Object
+timeout 60000
+create LocationManagerTestScripter test
+request Session
+test PrepareSession
+wait Session
+test SetupOM
+test TearDownOM
+delete test
+[Endtest]
+
+[Test]
+title Location Snapshot
+timeout 60000
+create LocationManagerTestScripter test
+request Session
+test PrepareSession
+wait Session
+test SetupOM
+test TearDownOM
+delete test
+[Endtest]
+
+[Test]
+title Remove Location Object
+timeout 60000
+create LocationManagerTestScripter test
+request Session
+test PrepareSession
+wait Session
+test SetupOM
+test TearDownOM
+delete test
+[Endtest]
+
+[Test]
+title Copy By ID
+timeout 60000
+create LocationManagerTestScripter test
+request Session
+test PrepareSession
+wait Session
+test SetupOM
+test CopyByID
+test CloseOM
+test CopyByIDDisco
+test TearDownOM
+delete test
+[Endtest]
+
+[Test]
+title Copy By URI
+timeout 60000
+create LocationManagerTestScripter test
+request Session
+test PrepareSession
+wait Session
+test SetupOM
+test CopyByURI
+test CloseOM
+test CopyByURIDisco
+test TearDownOM
+delete test
+[Endtest]
+
+[Test]
+title Tracklog Connect Disconnect
+timeout 60000
+create LocationManagerTestScripter test
+test SetupTrackLog
+test TearDownTrackLog
+delete test
+[Endtest]
+
+[Test]
+title Start Stop Tracklog Recording
+timeout 80000
+create LocationManagerTestScripter test
+test SetupTrackLog
+test AddObserver
+request Recording
+test StartTrackLog
+wait Recording
+test Recording
+request StopRecording
+test StopTrackLog
+wait StopRecording
+test NotRecording
+test RemoveObserver
+test TearDownTrackLog
+delete test
+[Endtest]
+
+[Test]
+title Tracklog Observer test
+timeout 60000
+create LocationManagerTestScripter test
+test SetupTrackLog
+test AddObserver
+test AddObserver
+test AddObserver
+test RemoveObserver
+test RemoveObserver
+test TearDownTrackLog
+delete test
+[Endtest]
+
+[Test]
+title Start Stop Tracklog Recording 2
+timeout 240000
+create LocationManagerTestScripter test
+test SetupTrackLog
+test AddObserver
+request Recording
+test StartTrackLog
+wait Recording
+test Recording
+test GetFile
+test GetStatus
+request StopRecording
+test StopTrackLog
+wait StopRecording
+test NotRecording
+test DeleteFile
+test GetStatus2
+test RemoveObserver
+test TearDownTrackLog
+delete test
+[Endtest]
+
+[Test]
+title Tracklog Crash Test
+timeout 60000
+create LocationManagerTestScripter test
+test SetupTrackLog
+test AddObserver
+request Recording
+test StartTrackLog
+wait Recording
+test CrashLocationManager
+test RemoveObserver
+test TearDownTrackLog
+delete test
+create LocationManagerTestScripter test2
+test2 SetupTrackLog
+test2 AddObserver
+request Recording
+test2 StartTrackLog
+wait Recording
+test2 StopTrackLog
+test2 RemoveObserver
+test2 TearDownTrackLog
+delete test2
+[Endtest]
+
+[Test]
+title StartGeoTagging Test
+create LocationManagerTestScripter test
+#test ConnectGeoTaggerL
+test StartGeoTaggingL
+test CloseGeoTaggerL
+delete test
+[Endtest]
+
+
+[Test]
+title TagComplete Status for GeoTagged Photos
+create LocationManagerTestScripter test
+test ConnectGeoTaggerL
+test TestGeoTagCompleteStatusL 0
+test CloseGeoTaggerL
+delete test
+[Endtest]
+
+[Test]
+title TagPending Status for GeoTagged Photos
+create LocationManagerTestScripter test
+test ConnectGeoTaggerL
+test TestGeoTagPendingStatusL 0
+test CloseGeoTaggerL
+delete test
+[Endtest]
+
+[Test]
+title TagGoingOn Status for GeoTagged Photos
+create LocationManagerTestScripter test
+test ConnectGeoTaggerL
+test TestGeoTagGoingOnStatusL 0
+test CloseGeoTaggerL
+delete test
+[Endtest]
+
+
+[Test]
+title TagComplete Status for NonGeoTagged Photos
+create LocationManagerTestScripter test
+test ConnectGeoTaggerL
+test TestGeoTagCompleteStatusL 1
+test CloseGeoTaggerL
+delete test
+[Endtest]
+
+[Test]
+title TagPending Status for NonGeoTagged Photos
+create LocationManagerTestScripter test
+test ConnectGeoTaggerL
+test TestGeoTagPendingStatusL 1
+test CloseGeoTaggerL
+delete test
+[Endtest]
+
+[Test]
+title TagGoingOn Status for NonGeoTagged Photos
+create LocationManagerTestScripter test
+test ConnectGeoTaggerL
+test TestGeoTagGoingOnStatusL 1
+test CloseGeoTaggerL
+delete test
+[Endtest]
+
+[Test]
+title CancelGeoTagging
+create LocationManagerTestScripter test
+test ConnectGeoTaggerL
+test CancelGeoTaggingL
+test CloseGeoTaggerL
+delete test
+[Endtest]
\ No newline at end of file
--- a/mds_plat/location_manager_api/tsrc/group/LocationManagerTestScripter.mmp Wed Jun 23 18:41:19 2010 +0300
+++ b/mds_plat/location_manager_api/tsrc/group/LocationManagerTestScripter.mmp Tue Jul 06 14:44:37 2010 +0300
@@ -18,6 +18,7 @@
#include <platform_paths.hrh>
#include <data_caging_paths.hrh>
+#include "../../../../locationmanager/inc/locplatsupport.mmh"
TARGET LocationManagerTestScripter.dll
TARGETTYPE dll
@@ -28,6 +29,11 @@
DEFFILE LocationManagerTestScripter.DEF
+#ifdef _LOC_REVERSEGEOCODE
+MACRO LOC_REVERSEGEOCODE
+#endif
+
+
SOURCEPATH ../src
SOURCE LocationManagerTestScripter.cpp
SOURCE LocationManagerTestScripterBlocks.cpp
--- a/mds_plat/location_manager_api/tsrc/group/bld.inf Wed Jun 23 18:41:19 2010 +0300
+++ b/mds_plat/location_manager_api/tsrc/group/bld.inf Tue Jul 06 14:44:37 2010 +0300
@@ -15,6 +15,8 @@
*
*/
+#include "../../../../locationmanager/inc/locplatsupport.mmh"
+
PRJ_PLATFORMS
DEFAULT
@@ -26,5 +28,10 @@
LocationManagerTestScripter.mmp
PRJ_TESTEXPORTS
+#ifdef _LOC_REVERSEGEOCODE
+../conf/LocationManagerTestScripter_reverse_geocode.cfg /epoc32/winscw/c/TestFramework/LocationManagerTestScripter.cfg
+#else
../conf/LocationManagerTestScripter.cfg /epoc32/winscw/c/TestFramework/LocationManagerTestScripter.cfg
+#endif
+
../init/LocationManagerTestScripter.ini /epoc32/winscw/c/TestFramework/LocationManagerTestScripter.ini
--- a/mds_plat/location_manager_api/tsrc/inc/LocationManagerTestScripter.h Wed Jun 23 18:41:19 2010 +0300
+++ b/mds_plat/location_manager_api/tsrc/inc/LocationManagerTestScripter.h Tue Jul 06 14:44:37 2010 +0300
@@ -31,6 +31,10 @@
#include "mdccommon.h"
#include "mdesession.h"
+#ifdef LOC_REVERSEGEOCODE
+#include "RLocationGeoTagger.h"
+#endif //LOC_REVERSEGEOCODE
+
// CONSTANTS
// Logging path
_LIT( KLocationManagerTestScripterLogPath, "\\logs\\testframework\\LocationManagerTestScripter\\" );
@@ -136,7 +140,19 @@
TInt GetStatus2L( CStifItemParser& aItem );
//ADD NEW METHOD DEC HERE
//[TestMethods] - Do not remove
-
+
+#ifdef LOC_REVERSEGEOCODE
+ TInt ConnectGeoTaggerL( CStifItemParser& /*aItem*/ );
+ TInt CloseGeoTaggerL( CStifItemParser& /*aItem*/ );
+ TInt StartGeoTaggingL( CStifItemParser& aItem );
+
+ TInt TestGeoTagCompleteStatusL( CStifItemParser& aItem );
+ TInt TestGeoTagPendingStatusL( CStifItemParser& aItem );
+ TInt TestGeoTagGoingOnStatusL( CStifItemParser& aItem );
+
+ TInt CancelGeoTaggingL( CStifItemParser& aItem ) ;
+#endif //LOC_REVERSEGEOCODE
+
public: // From MTrackLogObserver
void TrackLogStarted(TInt aError);
void TrackLogStopped(TInt aError);
@@ -155,7 +171,11 @@
CMdESession* iMdeSession;
CActiveSchedulerWait* iASW;
-
+
+#ifdef LOC_REVERSEGEOCODE
+ RLocationGeoTagger iLocationGeoTagger;
+ TBool iLocGeoTaggerConnected;
+#endif //LOC_REVERSEGEOCODE
};
#endif // LOCATIONMANAGERTESTSCRIPTER_H
--- a/mds_plat/location_manager_api/tsrc/src/LocationManagerTestScripter.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/mds_plat/location_manager_api/tsrc/src/LocationManagerTestScripter.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -43,6 +43,11 @@
//
void CLocationManagerTestScripter::ConstructL()
{
+
+#ifdef LOC_REVERSEGEOCODE
+ iLocGeoTaggerConnected = EFalse;
+#endif //LOC_REVERSEGEOCODE
+
//Read logger settings to check whether test case name is to be
//appended to log file name.
RSettingServer settingServer;
--- a/mds_plat/location_manager_api/tsrc/src/LocationManagerTestScripterBlocks.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/mds_plat/location_manager_api/tsrc/src/LocationManagerTestScripterBlocks.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -88,9 +88,16 @@
ENTRY( "DeleteFile" , CLocationManagerTestScripter::DeleteFileL ),
ENTRY( "GetStatus" , CLocationManagerTestScripter::GetStatusL ),
ENTRY( "GetStatus2" , CLocationManagerTestScripter::GetStatus2L )
- //ADD NEW ENTRY HERE
- // [test cases entries] - Do not remove
+#ifdef LOC_REVERSEGEOCODE
+ ,ENTRY( "ConnectGeoTaggerL", CLocationManagerTestScripter::ConnectGeoTaggerL )
+ ,ENTRY( "CloseGeoTaggerL", CLocationManagerTestScripter::CloseGeoTaggerL )
+ ,ENTRY( "StartGeoTaggingL", CLocationManagerTestScripter::StartGeoTaggingL )
+ ,ENTRY( "TestGeoTagCompleteStatusL", CLocationManagerTestScripter::TestGeoTagCompleteStatusL )
+ ,ENTRY( "TestGeoTagPendingStatusL", CLocationManagerTestScripter::TestGeoTagPendingStatusL )
+ ,ENTRY( "TestGeoTagGoingOnStatusL", CLocationManagerTestScripter::TestGeoTagGoingOnStatusL )
+ ,ENTRY( "CancelGeoTaggingL", CLocationManagerTestScripter::CancelGeoTaggingL )
+#endif //LOC_REVERSEGEOCODE
};
const TInt count = sizeof( KFunctions ) /
--- a/mds_plat/location_manager_api/tsrc/src/RLocationObjectManipulatorTest.cpp Wed Jun 23 18:41:19 2010 +0300
+++ b/mds_plat/location_manager_api/tsrc/src/RLocationObjectManipulatorTest.cpp Tue Jul 06 14:44:37 2010 +0300
@@ -334,5 +334,212 @@
aLocationData.iQuality = 1;
}
-// End of file
+
+#ifdef LOC_REVERSEGEOCODE
+TInt CLocationManagerTestScripter::ConnectGeoTaggerL( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KMsg1, "ConnectGeoTaggerL" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ if(!iLocGeoTaggerConnected)
+ {
+ User::LeaveIfError( iLocationGeoTagger.Connect() );
+ }
+
+ iLocGeoTaggerConnected = ETrue;
+ return KErrNone;
+ }
+
+TInt CLocationManagerTestScripter::CloseGeoTaggerL( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KMsg1, "CloseGeoTaggerL" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ iLocationGeoTagger.Close() ;
+ iLocGeoTaggerConnected = EFalse;
+
+ return KErrNone;
+ }
+
+
+TInt CLocationManagerTestScripter::StartGeoTaggingL( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KMsg1, "Enter StartGeoTagging" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ //rav
+
+ if(!iLocGeoTaggerConnected)
+ {
+ User::LeaveIfError( iLocationGeoTagger.Connect() );
+ }
+
+ iLocGeoTaggerConnected = ETrue;
+
+
+
+ TRequestStatus status(KRequestPending);
+ TConnectionOption conOption(ESilent);
+ iLocationGeoTagger.StartGeoTagging(status,conOption);
+ User::WaitForRequest( status );
+
+ _LIT( KMsg3, " status.Int() =%d" );
+ iLog->Log( KMsg3,status.Int() );
+
+ TL( status.Int() == KErrNone );
+
+
+ _LIT( KMsg2, "Exit StartGeoTagging" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CLocationManagerTestScripter::TestGeoTagCompleteStatusL
+// -----------------------------------------------------------------------------
+//
+TInt CLocationManagerTestScripter::TestGeoTagCompleteStatusL( CStifItemParser& /*aItem*/)
+ {
+ _LIT( KMsg1, "TestGeoTagCompleteStatusL enter" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ TRequestStatus status = KRequestPending;
+ TGeoTaggingSatus tagPendingFlag = EGeoTaggingPending;
+ iLocationGeoTagger.GeoTagStaus( status, tagPendingFlag );
+
+ User::WaitForRequest( status );
+
+ TL(status.Int() == KErrNone);
+
+ TL(tagPendingFlag == EGeoTagCmpt);
+
+ _LIT( KMsg2, "TestGeoTagCompleteStatusL exit" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CLocationManagerTestScripter::TestGeoTagPendingStatusL
+// -----------------------------------------------------------------------------
+//
+TInt CLocationManagerTestScripter::TestGeoTagPendingStatusL( CStifItemParser& aItem )
+ {
+ _LIT( KMsg1, "TestGeoTagPendingStatusL enter" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ TInt fntype;
+ aItem.GetNextInt(fntype);
+
+ TRequestStatus status = KRequestPending;
+ TGeoTaggingSatus tagPendingFlag = EGeoTagCmpt;
+ iLocationGeoTagger.GeoTagStaus( status, tagPendingFlag );
+
+ User::WaitForRequest( status );
+
+ TL(status.Int() == KErrNone);
+
+ if(fntype == 0 )
+ {
+ //for geotagged photos the tag status will be pending
+ TL(tagPendingFlag == EGeoTaggingPending);
+ }
+ else
+ {
+ //for geotagged photos the tag status will be pending
+ TL(tagPendingFlag == EGeoTagCmpt);
+ }
+
+ _LIT( KMsg2, "TestGeoTagPendingStatusL exit" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CLocationManagerTestScripter::TestGeoTagGoingOnStatusL
+// -----------------------------------------------------------------------------
+//
+TInt CLocationManagerTestScripter::TestGeoTagGoingOnStatusL( CStifItemParser& aItem )
+ {
+ _LIT( KMsg1, "TestGeoTagGoingOnStatusL enter" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ TInt fntype;
+ aItem.GetNextInt(fntype);
+
+
+ TRequestStatus status = KRequestPending;
+ TGeoTaggingSatus tagPendingFlag = EGeoTagCmpt;
+ iLocationGeoTagger.GeoTagStaus( status, tagPendingFlag );
+
+ User::WaitForRequest( status );
+
+ TL(status.Int() == KErrNone);
+
+ if(fntype == 0 )
+ {
+ if(tagPendingFlag == EGeoTaggingPending)
+ {
+ TConnectionOption conOption(ESilent);
+ status = KRequestPending;
+ iLocationGeoTagger.StartGeoTagging(status,conOption);
+ iLocationGeoTagger.GeoTagStaus( status, tagPendingFlag );
+
+ TL(tagPendingFlag == EGeoTaggingGoingOn);
+
+ User::WaitForRequest( status );
+
+ TL(status.Int() == KErrNone);
+ }
+ }
+ else
+ {
+ TL(tagPendingFlag == EGeoTagCmpt);
+ }
+
+ _LIT( KMsg2, "TestGeoTagGoingOnStatusL exit" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+
+ return KErrNone;
+ }
+
+
+TInt CLocationManagerTestScripter::CancelGeoTaggingL( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KMsg1, "Enter CancelGeoTaggingL" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ TRequestStatus status(KRequestPending);
+ TConnectionOption conOption(ESilent);
+ iLocationGeoTagger.StartGeoTagging(status,conOption);
+ iLocationGeoTagger.CancelGeoTaggingRequest();
+
+ User::WaitForRequest( status );
+
+ TL(status.Int() == KErrNone);
+
+
+ _LIT( KMsg2, "CancelGeoTaggingL exit" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+
+ return KErrNone;
+
+ }
+#endif //LOC_REVERSEGEOCODE
+
+ // End of file
--- a/mds_plat/metadata_engine_api/inc/mdeconstants.h Wed Jun 23 18:41:19 2010 +0300
+++ b/mds_plat/metadata_engine_api/inc/mdeconstants.h Tue Jul 06 14:44:37 2010 +0300
@@ -130,6 +130,12 @@
{
_LIT( KTagObject, "Tag" );
_LIT( KTagItemType, "application/vnd.nokia.mde.tag" );
+ enum TTagType
+ {
+ EUserDefineTags = 0,
+ ESystemDefineCityTags = 1,
+ ESystemDefineCountryTags = 2
+ };
}
namespace MediaObject
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rom/mds_cellid_reverse_geocode_enabled.iby Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,124 @@
+/*
+* Copyright (c) 2006-2009 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:
+* Metadata system iby file (for ROM image creation)
+*
+*
+*/
+
+
+#ifndef __METADATA_IBY__
+#define __METADATA_IBY__
+
+// sql is mandatory for mds
+#include <sql.iby>
+
+rem - MdE binaries
+file=ABI_DIR\BUILD_DIR\mdeclient.dll SHARED_LIB_DIR\mdeclient.dll
+file=ABI_DIR\BUILD_DIR\mdccommon.dll SHARED_LIB_DIR\mdccommon.dll
+file=ABI_DIR\BUILD_DIR\!mdsserver.exe PROGRAMS_DIR\!mdsserver.exe
+
+rem - MdE data files
+data=EPOCROOT##epoc32\data\z\Private\200009F3\schema.mde PRIVATE\200009F3\schema.mde
+data=EPOCROOT##epoc32\data\z\Private\200009F3\defaultimportfile.mde PRIVATE\200009F3\defaultimportfile.mde
+data=EPOCROOT##epoc32\data\z\Private\200009F3\backup_registration.xml PRIVATE\200009F3\backup_registration.xml
+data=EPOCROOT##epoc32\data\z\Private\200009F5\backup_registration.xml PRIVATE\200009F5\backup_registration.xml
+data=EPOCROOT##epoc32\data\z\Private\200009F5\mappings.db PRIVATE\200009F5\mappings.db
+
+rem - Harvester and Context Engine binaries
+file=ABI_DIR\BUILD_DIR\HarvesterPluginInterface.dll SHARED_LIB_DIR\HarvesterPluginInterface.dll
+file=ABI_DIR\BUILD_DIR\HarvesterClient.dll SHARED_LIB_DIR\HarvesterClient.dll
+file=ABI_DIR\BUILD_DIR\HarvesterServer.exe PROGRAMS_DIR\HarvesterServer.exe
+file=ABI_DIR\BUILD_DIR\harvestercommon.dll SHARED_LIB_DIR\harvestercommon.dll
+file=ABI_DIR\BUILD_DIR\harvesterdata.dll SHARED_LIB_DIR\harvesterdata.dll
+file=ABI_DIR\BUILD_DIR\mdsfileserverplugin.pxt SHARED_LIB_DIR\mdsfileserverplugin.pxt
+ECOM_PLUGIN(HarvesterImagePlugin.dll,HarvesterImagePlugin.rsc)
+ECOM_PLUGIN(HarvesterVideoPlugin.dll,HarvesterVideoPlugin.rsc)
+ECOM_PLUGIN(HarvesterMessagePlugin.dll,HarvesterMessagePlugin.rsc)
+ECOM_PLUGIN(harvesteromadrmplugin.dll,harvesteromadrmplugin.rsc)
+ECOM_PLUGIN(harvesterwmvplugin.dll,harvesterwmvplugin.rsc)
+ECOM_PLUGIN(harvesterrtpplugin.dll,harvesterrtpplugin.rsc)
+ECOM_PLUGIN(harvesteraudioplugin.dll,harvesteraudioplugin.rsc)
+
+rem - Blacklist server binaries
+file=ABI_DIR\BUILD_DIR\!blacklistserver.exe PROGRAMS_DIR\!blacklistserver.exe
+file=ABI_DIR\BUILD_DIR\blacklistclient.dll SHARED_LIB_DIR\blacklistclient.dll
+
+file=ABI_DIR\BUILD_DIR\MonitorPluginInterface.dll SHARED_LIB_DIR\MonitorPluginInterface.dll
+ECOM_PLUGIN(MMCMonitorPlugin.dll,MMCMonitorPlugin.rsc)
+ECOM_PLUGIN(FileMonitorPlugin.dll,FileMonitorPlugin.rsc)
+ECOM_PLUGIN(MessageMonitorPlugin.dll,MessageMonitorPlugin.rsc)
+ECOM_PLUGIN(mdsoomplugin.dll,mdsoomplugin.rsc)
+
+file=ABI_DIR\BUILD_DIR\ContextPluginInterface.dll SHARED_LIB_DIR\ContextPluginInterface.dll
+file=ABI_DIR\BUILD_DIR\ContextEngine.dll SHARED_LIB_DIR\ContextEngine.dll
+ECOM_PLUGIN(locationcontextplugin.dll,locationcontextplugin.rsc)
+ECOM_PLUGIN(calendarcontextplugin.dll,calendarcontextplugin.rsc)
+
+file=ABI_DIR\BUILD_DIR\ComposerPluginInterface.dll SHARED_LIB_DIR\ComposerPluginInterface.dll
+ECOM_PLUGIN(ComposerImagePlugin.dll,ComposerImagePlugin.rsc)
+
+// Location Manager
+REM locationmanager
+file=ABI_DIR\BUILD_DIR\locationmanager.dll SHARED_LIB_DIR\locationmanager.dll
+
+REM locationmanagerserver
+file=ABI_DIR\BUILD_DIR\locationmanagerserver.exe PROGRAMS_DIR\locationmanagerserver.exe
+
+REM watchdog
+file=ABI_DIR\BUILD_DIR\mdswatchdog.exe PROGRAMS_DIR\mdswatchdog.exe
+
+REM locationtrail
+file=ABI_DIR\BUILD_DIR\locationtrail.dll SHARED_LIB_DIR\locationtrail.dll
+
+REM ReverseGeocode
+file=ABI_DIR\BUILD_DIR\ReverseGeocode.dll SHARED_LIB_DIR\ReverseGeocode.dll
+
+REM Reverse geocoder plugin
+ECOM_PLUGIN(ReverseGeoCoderPlugin.dll,reversegeocoderplugin.rsc)
+
+REM tagcreator
+file=ABI_DIR\BUILD_DIR\tagcreator.dll SHARED_LIB_DIR\tagcreator.dll
+
+REM geotagger
+file=ABI_DIR\BUILD_DIR\geotagger.dll SHARED_LIB_DIR\geotagger.dll
+
+REM geoconverter
+file=ABI_DIR\BUILD_DIR\geoconverter.dll SHARED_LIB_DIR\geoconverter.dll
+
+REM Location Manager data files
+data=ZPRIVATE\10202BE9\200071BE.txt "PRIVATE\10202BE9\200071BE.txt"
+
+REM Harvester Cen Repo file
+data=ZPRIVATE\10202BE9\200009FE.txt "PRIVATE\10202BE9\200009FE.txt"
+
+REM MdS version CenRep file
+data=ZPRIVATE\10202BE9\200009F3.txt "PRIVATE\10202BE9\200009F3.txt"
+
+REM Harvester MMC plugin CenRep file
+data=ZPRIVATE\10202BE9\20007183.txt "PRIVATE\10202BE9\20007183.txt"
+
+data=ZSYSTEM\install\contentlistingframework_stub.sis system\install\contentlistingframework_stub.sis
+data=ZSYSTEM\install\contextengine_stub.sis system\install\contextengine_stub.sis
+data=ZSYSTEM\install\blacklistserver_stub.sis system\install\blacklistserver_stub.sis
+data=ZSYSTEM\install\composerplugins_stub.sis system\install\composerplugins_stub.sis
+data=ZSYSTEM\install\harvester_stub.sis system\install\harvester_stub.sis
+data=ZSYSTEM\install\harvesterplugins_stub.sis system\install\harvesterplugins_stub.sis
+data=ZSYSTEM\install\monitorplugins_stub.sis system\install\monitorplugins_stub.sis
+data=ZSYSTEM\install\locationmanager_stub.sis system\install\locationmanager_stub.sis
+data=ZSYSTEM\install\metadataengine_stub.sis system\install\metadataengine_stub.sis
+data=ZSYSTEM\install\mds_stub.sis system\install\mds_stub.sis
+data=ZSYSTEM\install\mdswatchdog_stub.sis system\install\mdswatchdog_stub.sis
+
+#endif //__METADATA_IBY__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rom/mds_cellidenabled.iby Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,113 @@
+/*
+* Copyright (c) 2006-2009 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:
+* Metadata system iby file (for ROM image creation)
+*
+*
+*/
+
+
+#ifndef __METADATA_IBY__
+#define __METADATA_IBY__
+
+// sql is mandatory for mds
+#include <sql.iby>
+
+rem - MdE binaries
+file=ABI_DIR\BUILD_DIR\mdeclient.dll SHARED_LIB_DIR\mdeclient.dll
+file=ABI_DIR\BUILD_DIR\mdccommon.dll SHARED_LIB_DIR\mdccommon.dll
+file=ABI_DIR\BUILD_DIR\!mdsserver.exe PROGRAMS_DIR\!mdsserver.exe
+
+rem - MdE data files
+data=EPOCROOT##epoc32\data\z\Private\200009F3\schema.mde PRIVATE\200009F3\schema.mde
+data=EPOCROOT##epoc32\data\z\Private\200009F3\defaultimportfile.mde PRIVATE\200009F3\defaultimportfile.mde
+data=EPOCROOT##epoc32\data\z\Private\200009F3\backup_registration.xml PRIVATE\200009F3\backup_registration.xml
+data=EPOCROOT##epoc32\data\z\Private\200009F5\backup_registration.xml PRIVATE\200009F5\backup_registration.xml
+data=EPOCROOT##epoc32\data\z\Private\200009F5\mappings.db PRIVATE\200009F5\mappings.db
+
+rem - Harvester and Context Engine binaries
+file=ABI_DIR\BUILD_DIR\HarvesterPluginInterface.dll SHARED_LIB_DIR\HarvesterPluginInterface.dll
+file=ABI_DIR\BUILD_DIR\HarvesterClient.dll SHARED_LIB_DIR\HarvesterClient.dll
+file=ABI_DIR\BUILD_DIR\HarvesterServer.exe PROGRAMS_DIR\HarvesterServer.exe
+file=ABI_DIR\BUILD_DIR\harvestercommon.dll SHARED_LIB_DIR\harvestercommon.dll
+file=ABI_DIR\BUILD_DIR\harvesterdata.dll SHARED_LIB_DIR\harvesterdata.dll
+file=ABI_DIR\BUILD_DIR\mdsfileserverplugin.pxt SHARED_LIB_DIR\mdsfileserverplugin.pxt
+ECOM_PLUGIN(HarvesterImagePlugin.dll,HarvesterImagePlugin.rsc)
+ECOM_PLUGIN(HarvesterVideoPlugin.dll,HarvesterVideoPlugin.rsc)
+ECOM_PLUGIN(HarvesterMessagePlugin.dll,HarvesterMessagePlugin.rsc)
+ECOM_PLUGIN(harvesteromadrmplugin.dll,harvesteromadrmplugin.rsc)
+ECOM_PLUGIN(harvesterwmvplugin.dll,harvesterwmvplugin.rsc)
+ECOM_PLUGIN(harvesterrtpplugin.dll,harvesterrtpplugin.rsc)
+ECOM_PLUGIN(harvesteraudioplugin.dll,harvesteraudioplugin.rsc)
+
+rem - Blacklist server binaries
+file=ABI_DIR\BUILD_DIR\!blacklistserver.exe PROGRAMS_DIR\!blacklistserver.exe
+file=ABI_DIR\BUILD_DIR\blacklistclient.dll SHARED_LIB_DIR\blacklistclient.dll
+
+file=ABI_DIR\BUILD_DIR\MonitorPluginInterface.dll SHARED_LIB_DIR\MonitorPluginInterface.dll
+ECOM_PLUGIN(MMCMonitorPlugin.dll,MMCMonitorPlugin.rsc)
+ECOM_PLUGIN(FileMonitorPlugin.dll,FileMonitorPlugin.rsc)
+ECOM_PLUGIN(MessageMonitorPlugin.dll,MessageMonitorPlugin.rsc)
+ECOM_PLUGIN(mdsoomplugin.dll,mdsoomplugin.rsc)
+
+file=ABI_DIR\BUILD_DIR\ContextPluginInterface.dll SHARED_LIB_DIR\ContextPluginInterface.dll
+file=ABI_DIR\BUILD_DIR\ContextEngine.dll SHARED_LIB_DIR\ContextEngine.dll
+ECOM_PLUGIN(locationcontextplugin.dll,locationcontextplugin.rsc)
+ECOM_PLUGIN(calendarcontextplugin.dll,calendarcontextplugin.rsc)
+
+file=ABI_DIR\BUILD_DIR\ComposerPluginInterface.dll SHARED_LIB_DIR\ComposerPluginInterface.dll
+ECOM_PLUGIN(ComposerImagePlugin.dll,ComposerImagePlugin.rsc)
+
+// Location Manager
+REM locationmanager
+file=ABI_DIR\BUILD_DIR\locationmanager.dll SHARED_LIB_DIR\locationmanager.dll
+
+REM locationmanagerserver
+file=ABI_DIR\BUILD_DIR\locationmanagerserver.exe PROGRAMS_DIR\locationmanagerserver.exe
+
+REM watchdog
+file=ABI_DIR\BUILD_DIR\mdswatchdog.exe PROGRAMS_DIR\mdswatchdog.exe
+
+REM locationtrail
+file=ABI_DIR\BUILD_DIR\locationtrail.dll SHARED_LIB_DIR\locationtrail.dll
+
+REM geoconverter
+file=ABI_DIR\BUILD_DIR\geoconverter.dll SHARED_LIB_DIR\geoconverter.dll
+
+
+REM Location Manager data files
+data=ZPRIVATE\10202BE9\200071BE.txt "PRIVATE\10202BE9\200071BE.txt"
+
+REM Harvester Cen Repo file
+data=ZPRIVATE\10202BE9\200009FE.txt "PRIVATE\10202BE9\200009FE.txt"
+
+REM MdS version CenRep file
+data=ZPRIVATE\10202BE9\200009F3.txt "PRIVATE\10202BE9\200009F3.txt"
+
+REM Harvester MMC plugin CenRep file
+data=ZPRIVATE\10202BE9\20007183.txt "PRIVATE\10202BE9\20007183.txt"
+
+data=ZSYSTEM\install\contentlistingframework_stub.sis system\install\contentlistingframework_stub.sis
+data=ZSYSTEM\install\contextengine_stub.sis system\install\contextengine_stub.sis
+data=ZSYSTEM\install\blacklistserver_stub.sis system\install\blacklistserver_stub.sis
+data=ZSYSTEM\install\composerplugins_stub.sis system\install\composerplugins_stub.sis
+data=ZSYSTEM\install\harvester_stub.sis system\install\harvester_stub.sis
+data=ZSYSTEM\install\harvesterplugins_stub.sis system\install\harvesterplugins_stub.sis
+data=ZSYSTEM\install\monitorplugins_stub.sis system\install\monitorplugins_stub.sis
+data=ZSYSTEM\install\locationmanager_stub.sis system\install\locationmanager_stub.sis
+data=ZSYSTEM\install\metadataengine_stub.sis system\install\metadataengine_stub.sis
+data=ZSYSTEM\install\mds_stub.sis system\install\mds_stub.sis
+data=ZSYSTEM\install\mdswatchdog_stub.sis system\install\mdswatchdog_stub.sis
+
+#endif //__METADATA_IBY__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rom/mds_reverse_geocode_enabled_only.iby Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,121 @@
+/*
+* Copyright (c) 2006-2009 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:
+* Metadata system iby file (for ROM image creation)
+*
+*
+*/
+
+
+#ifndef __METADATA_IBY__
+#define __METADATA_IBY__
+
+// sql is mandatory for mds
+#include <sql.iby>
+
+rem - MdE binaries
+file=ABI_DIR\BUILD_DIR\mdeclient.dll SHARED_LIB_DIR\mdeclient.dll
+file=ABI_DIR\BUILD_DIR\mdccommon.dll SHARED_LIB_DIR\mdccommon.dll
+file=ABI_DIR\BUILD_DIR\!mdsserver.exe PROGRAMS_DIR\!mdsserver.exe
+
+rem - MdE data files
+data=EPOCROOT##epoc32\data\z\Private\200009F3\schema.mde PRIVATE\200009F3\schema.mde
+data=EPOCROOT##epoc32\data\z\Private\200009F3\defaultimportfile.mde PRIVATE\200009F3\defaultimportfile.mde
+data=EPOCROOT##epoc32\data\z\Private\200009F3\backup_registration.xml PRIVATE\200009F3\backup_registration.xml
+data=EPOCROOT##epoc32\data\z\Private\200009F5\backup_registration.xml PRIVATE\200009F5\backup_registration.xml
+data=EPOCROOT##epoc32\data\z\Private\200009F5\mappings.db PRIVATE\200009F5\mappings.db
+
+rem - Harvester and Context Engine binaries
+file=ABI_DIR\BUILD_DIR\HarvesterPluginInterface.dll SHARED_LIB_DIR\HarvesterPluginInterface.dll
+file=ABI_DIR\BUILD_DIR\HarvesterClient.dll SHARED_LIB_DIR\HarvesterClient.dll
+file=ABI_DIR\BUILD_DIR\HarvesterServer.exe PROGRAMS_DIR\HarvesterServer.exe
+file=ABI_DIR\BUILD_DIR\harvestercommon.dll SHARED_LIB_DIR\harvestercommon.dll
+file=ABI_DIR\BUILD_DIR\harvesterdata.dll SHARED_LIB_DIR\harvesterdata.dll
+file=ABI_DIR\BUILD_DIR\mdsfileserverplugin.pxt SHARED_LIB_DIR\mdsfileserverplugin.pxt
+ECOM_PLUGIN(HarvesterImagePlugin.dll,HarvesterImagePlugin.rsc)
+ECOM_PLUGIN(HarvesterVideoPlugin.dll,HarvesterVideoPlugin.rsc)
+ECOM_PLUGIN(HarvesterMessagePlugin.dll,HarvesterMessagePlugin.rsc)
+ECOM_PLUGIN(harvesteromadrmplugin.dll,harvesteromadrmplugin.rsc)
+ECOM_PLUGIN(harvesterwmvplugin.dll,harvesterwmvplugin.rsc)
+ECOM_PLUGIN(harvesterrtpplugin.dll,harvesterrtpplugin.rsc)
+ECOM_PLUGIN(harvesteraudioplugin.dll,harvesteraudioplugin.rsc)
+
+rem - Blacklist server binaries
+file=ABI_DIR\BUILD_DIR\!blacklistserver.exe PROGRAMS_DIR\!blacklistserver.exe
+file=ABI_DIR\BUILD_DIR\blacklistclient.dll SHARED_LIB_DIR\blacklistclient.dll
+
+file=ABI_DIR\BUILD_DIR\MonitorPluginInterface.dll SHARED_LIB_DIR\MonitorPluginInterface.dll
+ECOM_PLUGIN(MMCMonitorPlugin.dll,MMCMonitorPlugin.rsc)
+ECOM_PLUGIN(FileMonitorPlugin.dll,FileMonitorPlugin.rsc)
+ECOM_PLUGIN(MessageMonitorPlugin.dll,MessageMonitorPlugin.rsc)
+ECOM_PLUGIN(mdsoomplugin.dll,mdsoomplugin.rsc)
+
+file=ABI_DIR\BUILD_DIR\ContextPluginInterface.dll SHARED_LIB_DIR\ContextPluginInterface.dll
+file=ABI_DIR\BUILD_DIR\ContextEngine.dll SHARED_LIB_DIR\ContextEngine.dll
+ECOM_PLUGIN(locationcontextplugin.dll,locationcontextplugin.rsc)
+ECOM_PLUGIN(calendarcontextplugin.dll,calendarcontextplugin.rsc)
+
+file=ABI_DIR\BUILD_DIR\ComposerPluginInterface.dll SHARED_LIB_DIR\ComposerPluginInterface.dll
+ECOM_PLUGIN(ComposerImagePlugin.dll,ComposerImagePlugin.rsc)
+
+// Location Manager
+REM locationmanager
+file=ABI_DIR\BUILD_DIR\locationmanager.dll SHARED_LIB_DIR\locationmanager.dll
+
+REM locationmanagerserver
+file=ABI_DIR\BUILD_DIR\locationmanagerserver.exe PROGRAMS_DIR\locationmanagerserver.exe
+
+REM watchdog
+file=ABI_DIR\BUILD_DIR\mdswatchdog.exe PROGRAMS_DIR\mdswatchdog.exe
+
+REM locationtrail
+file=ABI_DIR\BUILD_DIR\locationtrail.dll SHARED_LIB_DIR\locationtrail.dll
+
+REM ReverseGeocode
+file=ABI_DIR\BUILD_DIR\ReverseGeocode.dll SHARED_LIB_DIR\ReverseGeocode.dll
+
+REM Reverse geocoder plugin
+ECOM_PLUGIN(ReverseGeoCoderPlugin.dll,reversegeocoderplugin.rsc)
+
+REM tagcreator
+file=ABI_DIR\BUILD_DIR\tagcreator.dll SHARED_LIB_DIR\tagcreator.dll
+
+REM geotagger
+file=ABI_DIR\BUILD_DIR\geotagger.dll SHARED_LIB_DIR\geotagger.dll
+
+REM Location Manager data files
+data=ZPRIVATE\10202BE9\200071BE.txt "PRIVATE\10202BE9\200071BE.txt"
+
+REM Harvester Cen Repo file
+data=ZPRIVATE\10202BE9\200009FE.txt "PRIVATE\10202BE9\200009FE.txt"
+
+REM MdS version CenRep file
+data=ZPRIVATE\10202BE9\200009F3.txt "PRIVATE\10202BE9\200009F3.txt"
+
+REM Harvester MMC plugin CenRep file
+data=ZPRIVATE\10202BE9\20007183.txt "PRIVATE\10202BE9\20007183.txt"
+
+data=ZSYSTEM\install\contentlistingframework_stub.sis system\install\contentlistingframework_stub.sis
+data=ZSYSTEM\install\contextengine_stub.sis system\install\contextengine_stub.sis
+data=ZSYSTEM\install\blacklistserver_stub.sis system\install\blacklistserver_stub.sis
+data=ZSYSTEM\install\composerplugins_stub.sis system\install\composerplugins_stub.sis
+data=ZSYSTEM\install\harvester_stub.sis system\install\harvester_stub.sis
+data=ZSYSTEM\install\harvesterplugins_stub.sis system\install\harvesterplugins_stub.sis
+data=ZSYSTEM\install\monitorplugins_stub.sis system\install\monitorplugins_stub.sis
+data=ZSYSTEM\install\locationmanager_stub.sis system\install\locationmanager_stub.sis
+data=ZSYSTEM\install\metadataengine_stub.sis system\install\metadataengine_stub.sis
+data=ZSYSTEM\install\mds_stub.sis system\install\mds_stub.sis
+data=ZSYSTEM\install\mdswatchdog_stub.sis system\install\mdswatchdog_stub.sis
+
+#endif //__METADATA_IBY__
Binary file sis/mds/mds_stub.sis has changed
--- a/sis/mds/package.pkg Wed Jun 23 18:41:19 2010 +0300
+++ b/sis/mds/package.pkg Tue Jul 06 14:44:37 2010 +0300
@@ -17,7 +17,7 @@
&EN
;packet-header (name, uid, major, minor, build, type)
-#{"Metadata System Upgrade"},(0x200009F5), 10, 10, 9, TYPE=SA, RU
+#{"Metadata System Upgrade"},(0x200009F5), 10, 10, 10, TYPE=SA, RU
; Localised vendor name
%{"Nokia"}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/mds/package_cellid_reverse_geocode_enabled.pkg Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,117 @@
+;
+; 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 "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:
+;
+;Languages
+&EN
+
+;packet-header (name, uid, major, minor, build, type)
+#{"Metadata System Upgrade"},(0x200009F5), 10, 10, 9, TYPE=SA, RU
+
+; Localised vendor name
+%{"Nokia"}
+
+; Unique vendor name
+:"Nokia"
+
+;Files
+"\epoc32\release\armv5\udeb\mdsiadstop.exe"-"c:\sys\bin\mdsiadstop.exe",FILERUN,RB,RW
+
+; CenRep
+"..\..\clfwrapper\conf\102828AC.txt"-"c:\private\10202be9\102828AC.txt"
+"..\..\harvester\common\data\200009FE.txt"-"c:\private\10202be9\200009FE.txt"
+"..\..\locationmanager\data\200071BE.txt"-"c:\private\10202be9\200071BE.txt"
+
+; contextengine
+"\EPOC32\RELEASE\ARMV5\UREL\contextengine.dll" -"c:\sys\bin\contextengine.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\contextplugininterface.dll" -"c:\sys\bin\contextplugininterface.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\calendarcontextplugin.dll" -"c:\sys\bin\calendarcontextplugin.dll"
+"\epoc32\data\z\resource\plugins\calendarcontextplugin.rsc" -"c:\resource\plugins\calendarcontextplugin.rsc"
+"\EPOC32\RELEASE\ARMV5\UREL\locationcontextplugin.dll" -"c:\sys\bin\locationcontextplugin.dll"
+"\epoc32\data\z\resource\plugins\locationcontextplugin.rsc" -"c:\resource\plugins\locationcontextplugin.rsc"
+
+; clf wrapper
+"\EPOC32\RELEASE\ARMV5\UREL\MediaCollectionManager.dll" -"c:\sys\bin\MediaCollectionManager.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\ContentListingFramework.dll" -"c:\sys\bin\ContentListingFramework.dll"
+
+; blacklist
+"\EPOC32\RELEASE\ARMV5\UREL\!blacklistserver.exe" -"c:\sys\bin\!blacklistserver.exe"
+"\EPOC32\RELEASE\ARMV5\UREL\blacklistclient.dll" -"c:\sys\bin\blacklistclient.dll"
+
+; composer plugins
+"\epoc32\RELEASE\armv5\UREL\composerplugininterface.dll"-"c:\sys\bin\composerplugininterface.dll"
+"\epoc32\RELEASE\armv5\UREL\composerimageplugin.dll"-"c:\sys\bin\composerimageplugin.dll"
+"\epoc32\data\z\resource\plugins\composerimageplugin.rsc"-"c:\resource\plugins\composerimageplugin.rsc"
+
+; harvester
+"\epoc32\RELEASE\armv5\UREL\harvesterclient.dll" -"c:\sys\bin\harvesterclient.dll"
+"\epoc32\RELEASE\armv5\UREL\harvestercommon.dll" -"c:\sys\bin\harvestercommon.dll"
+"\epoc32\RELEASE\armv5\UREL\harvesterdata.dll" -"c:\sys\bin\harvesterdata.dll"
+"\epoc32\RELEASE\armv5\UREL\harvesterplugininterface.dll" -"c:\sys\bin\harvesterplugininterface.dll"
+"\epoc32\RELEASE\armv5\UREL\harvesterserver.exe" -"c:\sys\bin\harvesterserver.exe"
+
+; harvester plugins
+"\epoc32\RELEASE\armv5\UREL\harvesteraudioplugin.dll"-"c:\sys\bin\harvesteraudioplugin.dll"
+"\epoc32\data\z\resource\plugins\harvesteraudioplugin.rsc"-"c:\resource\plugins\harvesteraudioplugin.rsc"
+"\epoc32\RELEASE\armv5\UREL\harvesterimageplugin.dll"-"c:\sys\bin\harvesterimageplugin.dll"
+"\epoc32\data\z\resource\plugins\harvesterimageplugin.rsc"-"c:\resource\plugins\harvesterimageplugin.rsc"
+"\epoc32\RELEASE\armv5\UREL\harvestermessageplugin.dll"-"c:\sys\bin\harvestermessageplugin.dll"
+"\epoc32\data\z\resource\plugins\harvestermessageplugin.rsc"-"c:\resource\plugins\harvestermessageplugin.rsc"
+"\epoc32\RELEASE\armv5\UREL\harvesteromadrmplugin.dll"-"c:\sys\bin\harvesteromadrmplugin.dll"
+"\epoc32\data\z\resource\plugins\harvesteromadrmplugin.rsc"-"c:\resource\plugins\harvesteromadrmplugin.rsc"
+"\epoc32\RELEASE\armv5\UREL\harvesterrtpplugin.dll"-"c:\sys\bin\harvesterrtpplugin.dll"
+"\epoc32\data\z\resource\plugins\harvesterrtpplugin.rsc"-"c:\resource\plugins\harvesterrtpplugin.rsc"
+"\epoc32\RELEASE\armv5\UREL\harvestervideoplugin.dll"-"c:\sys\bin\harvestervideoplugin.dll"
+"\epoc32\data\z\resource\plugins\harvestervideoplugin.rsc"-"c:\resource\plugins\harvestervideoplugin.rsc"
+"\epoc32\RELEASE\armv5\UREL\harvesterwmvplugin.dll"-"c:\sys\bin\harvesterwmvplugin.dll"
+"\epoc32\data\z\resource\plugins\harvesterwmvplugin.rsc"-"c:\resource\plugins\harvesterwmvplugin.rsc"
+
+; monitor plugins
+"\epoc32\RELEASE\armv5\UREL\monitorplugininterface.dll"-"c:\sys\bin\monitorplugininterface.dll"
+"\epoc32\RELEASE\armv5\UREL\mdsfileserverplugin.pxt"-"c:\sys\bin\mdsfileserverplugin.pxt"
+"\epoc32\RELEASE\armv5\UREL\filemonitorplugin.dll"-"c:\sys\bin\filemonitorplugin.dll"
+"\epoc32\data\z\resource\plugins\filemonitorplugin.rsc"-"c:\resource\plugins\filemonitorplugin.rsc"
+"\epoc32\RELEASE\armv5\UREL\MessageMonitorPlugin.dll"-"c:\sys\bin\MessageMonitorPlugin.dll"
+"\epoc32\data\z\resource\plugins\MessageMonitorPlugin.rsc"-"c:\resource\plugins\MessageMonitorPlugin.rsc"
+"\epoc32\RELEASE\armv5\UREL\mmcmonitorplugin.dll"-"c:\sys\bin\mmcmonitorplugin.dll"
+"\epoc32\data\z\resource\plugins\mmcmonitorplugin.rsc"-"c:\resource\plugins\mmcmonitorplugin.rsc"
+"\epoc32\RELEASE\armv5\UREL\mdsoomplugin.dll"-"c:\sys\bin\mdsoomplugin.dll"
+"\epoc32\data\z\resource\plugins\mdsoomplugin.rsc"-"c:\resource\plugins\mdsoomplugin.rsc"
+
+; location manager
+"\EPOC32\RELEASE\ARMV5\UREL\LocationTrail.dll" -"c:\sys\bin\LocationTrail.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\locationmanager.dll" -"c:\sys\bin\locationmanager.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\locationmanagerserver.exe" -"c:\sys\bin\locationmanagerserver.exe"
+"\EPOC32\RELEASE\ARMV5\UREL\geoconverter.dll" -"c:\sys\bin\geoconverter.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\ReverseGeocode.dll" -"c:\sys\bin\ReverseGeocode.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\tagcreator.dll" -"c:\sys\bin\tagcreator.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\geotagger.dll" -"c:\sys\bin\geotagger.dll"
+"\epoc32\RELEASE\armv5\UREL\ReverseGeoCoderPlugin.dll"-"c:\sys\bin\ReverseGeoCoderPlugin.dll"
+"\epoc32\data\z\resource\plugins\reversegeocoderplugin.rsc"-"c:\resource\plugins\reversegeocoderplugin.rsc"
+
+; metadata engine
+"\EPOC32\RELEASE\ARMV5\UREL\mdeclient.dll" -"c:\sys\bin\mdeclient.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\mdccommon.dll" -"c:\sys\bin\mdccommon.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\!mdsserver.exe" -"c:\sys\bin\!mdsserver.exe"
+
+"\epoc32\release\armv5\udeb\mdswatchdog.exe"-"c:\sys\bin\mdswatchdog.exe"
+
+"\epoc32\data\z\Private\200009F3\schema.mde"-"c:\PRIVATE\200009F3\schema.mde"
+"\epoc32\data\z\Private\200009F3\defaultimportfile.mde"-"c:\PRIVATE\200009F3\defaultimportfile.mde"
+"\epoc32\data\z\Private\200009F3\backup_registration.xml"-"c:\PRIVATE\200009F3\backup_registration.xml"
+"\epoc32\data\z\Private\200009F5\backup_registration.xml"-"c:\PRIVATE\200009F5\backup_registration.xml"
+"\epoc32\data\z\Private\200009F5\mappings.db"-"c:\PRIVATE\200009F5\mappings.db"
+
+"\epoc32\release\armv5\udeb\mdsiadrestart.exe"-"c:\sys\bin\mdsiadrestart.exe",FILERUN,RB,RW
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/mds/package_cellidenabled.pkg Tue Jul 06 14:44:37 2010 +0300
@@ -0,0 +1,112 @@
+;
+; 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 "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:
+;
+;Languages
+&EN
+
+;packet-header (name, uid, major, minor, build, type)
+#{"Metadata System Upgrade"},(0x200009F5), 10, 10, 9, TYPE=SA, RU
+
+; Localised vendor name
+%{"Nokia"}
+
+; Unique vendor name
+:"Nokia"
+
+;Files
+"\epoc32\release\armv5\udeb\mdsiadstop.exe"-"c:\sys\bin\mdsiadstop.exe",FILERUN,RB,RW
+
+; CenRep
+"..\..\clfwrapper\conf\102828AC.txt"-"c:\private\10202be9\102828AC.txt"
+"..\..\harvester\common\data\200009FE.txt"-"c:\private\10202be9\200009FE.txt"
+"..\..\locationmanager\data\200071BE.txt"-"c:\private\10202be9\200071BE.txt"
+
+; contextengine
+"\EPOC32\RELEASE\ARMV5\UREL\contextengine.dll" -"c:\sys\bin\contextengine.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\contextplugininterface.dll" -"c:\sys\bin\contextplugininterface.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\calendarcontextplugin.dll" -"c:\sys\bin\calendarcontextplugin.dll"
+"\epoc32\data\z\resource\plugins\calendarcontextplugin.rsc" -"c:\resource\plugins\calendarcontextplugin.rsc"
+"\EPOC32\RELEASE\ARMV5\UREL\locationcontextplugin.dll" -"c:\sys\bin\locationcontextplugin.dll"
+"\epoc32\data\z\resource\plugins\locationcontextplugin.rsc" -"c:\resource\plugins\locationcontextplugin.rsc"
+
+; clf wrapper
+"\EPOC32\RELEASE\ARMV5\UREL\MediaCollectionManager.dll" -"c:\sys\bin\MediaCollectionManager.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\ContentListingFramework.dll" -"c:\sys\bin\ContentListingFramework.dll"
+
+; blacklist
+"\EPOC32\RELEASE\ARMV5\UREL\!blacklistserver.exe" -"c:\sys\bin\!blacklistserver.exe"
+"\EPOC32\RELEASE\ARMV5\UREL\blacklistclient.dll" -"c:\sys\bin\blacklistclient.dll"
+
+; composer plugins
+"\epoc32\RELEASE\armv5\UREL\composerplugininterface.dll"-"c:\sys\bin\composerplugininterface.dll"
+"\epoc32\RELEASE\armv5\UREL\composerimageplugin.dll"-"c:\sys\bin\composerimageplugin.dll"
+"\epoc32\data\z\resource\plugins\composerimageplugin.rsc"-"c:\resource\plugins\composerimageplugin.rsc"
+
+; harvester
+"\epoc32\RELEASE\armv5\UREL\harvesterclient.dll" -"c:\sys\bin\harvesterclient.dll"
+"\epoc32\RELEASE\armv5\UREL\harvestercommon.dll" -"c:\sys\bin\harvestercommon.dll"
+"\epoc32\RELEASE\armv5\UREL\harvesterdata.dll" -"c:\sys\bin\harvesterdata.dll"
+"\epoc32\RELEASE\armv5\UREL\harvesterplugininterface.dll" -"c:\sys\bin\harvesterplugininterface.dll"
+"\epoc32\RELEASE\armv5\UREL\harvesterserver.exe" -"c:\sys\bin\harvesterserver.exe"
+
+; harvester plugins
+"\epoc32\RELEASE\armv5\UREL\harvesteraudioplugin.dll"-"c:\sys\bin\harvesteraudioplugin.dll"
+"\epoc32\data\z\resource\plugins\harvesteraudioplugin.rsc"-"c:\resource\plugins\harvesteraudioplugin.rsc"
+"\epoc32\RELEASE\armv5\UREL\harvesterimageplugin.dll"-"c:\sys\bin\harvesterimageplugin.dll"
+"\epoc32\data\z\resource\plugins\harvesterimageplugin.rsc"-"c:\resource\plugins\harvesterimageplugin.rsc"
+"\epoc32\RELEASE\armv5\UREL\harvestermessageplugin.dll"-"c:\sys\bin\harvestermessageplugin.dll"
+"\epoc32\data\z\resource\plugins\harvestermessageplugin.rsc"-"c:\resource\plugins\harvestermessageplugin.rsc"
+"\epoc32\RELEASE\armv5\UREL\harvesteromadrmplugin.dll"-"c:\sys\bin\harvesteromadrmplugin.dll"
+"\epoc32\data\z\resource\plugins\harvesteromadrmplugin.rsc"-"c:\resource\plugins\harvesteromadrmplugin.rsc"
+"\epoc32\RELEASE\armv5\UREL\harvesterrtpplugin.dll"-"c:\sys\bin\harvesterrtpplugin.dll"
+"\epoc32\data\z\resource\plugins\harvesterrtpplugin.rsc"-"c:\resource\plugins\harvesterrtpplugin.rsc"
+"\epoc32\RELEASE\armv5\UREL\harvestervideoplugin.dll"-"c:\sys\bin\harvestervideoplugin.dll"
+"\epoc32\data\z\resource\plugins\harvestervideoplugin.rsc"-"c:\resource\plugins\harvestervideoplugin.rsc"
+"\epoc32\RELEASE\armv5\UREL\harvesterwmvplugin.dll"-"c:\sys\bin\harvesterwmvplugin.dll"
+"\epoc32\data\z\resource\plugins\harvesterwmvplugin.rsc"-"c:\resource\plugins\harvesterwmvplugin.rsc"
+
+; monitor plugins
+"\epoc32\RELEASE\armv5\UREL\monitorplugininterface.dll"-"c:\sys\bin\monitorplugininterface.dll"
+"\epoc32\RELEASE\armv5\UREL\mdsfileserverplugin.pxt"-"c:\sys\bin\mdsfileserverplugin.pxt"
+"\epoc32\RELEASE\armv5\UREL\filemonitorplugin.dll"-"c:\sys\bin\filemonitorplugin.dll"
+"\epoc32\data\z\resource\plugins\filemonitorplugin.rsc"-"c:\resource\plugins\filemonitorplugin.rsc"
+"\epoc32\RELEASE\armv5\UREL\MessageMonitorPlugin.dll"-"c:\sys\bin\MessageMonitorPlugin.dll"
+"\epoc32\data\z\resource\plugins\MessageMonitorPlugin.rsc"-"c:\resource\plugins\MessageMonitorPlugin.rsc"
+"\epoc32\RELEASE\armv5\UREL\mmcmonitorplugin.dll"-"c:\sys\bin\mmcmonitorplugin.dll"
+"\epoc32\data\z\resource\plugins\mmcmonitorplugin.rsc"-"c:\resource\plugins\mmcmonitorplugin.rsc"
+"\epoc32\RELEASE\armv5\UREL\mdsoomplugin.dll"-"c:\sys\bin\mdsoomplugin.dll"
+"\epoc32\data\z\resource\plugins\mdsoomplugin.rsc"-"c:\resource\plugins\mdsoomplugin.rsc"
+
+; location manager
+"\EPOC32\RELEASE\ARMV5\UREL\LocationTrail.dll" -"c:\sys\bin\LocationTrail.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\locationmanager.dll" -"c:\sys\bin\locationmanager.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\locationmanagerserver.exe" -"c:\sys\bin\locationmanagerserver.exe"
+"\EPOC32\RELEASE\ARMV5\UREL\geoconverter.dll" -"c:\sys\bin\geoconverter.dll"
+
+; metadata engine
+"\EPOC32\RELEASE\ARMV5\UREL\mdeclient.dll" -"c:\sys\bin\mdeclient.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\mdccommon.dll" -"c:\sys\bin\mdccommon.dll"
+"\EPOC32\RELEASE\ARMV5\UREL\!mdsserver.exe" -"c:\sys\bin\!mdsserver.exe"
+
+"\epoc32\release\armv5\udeb\mdswatchdog.exe"-"c:\sys\bin\mdswatchdog.exe"
+
+"\epoc32\data\z\Private\200009F3\schema.mde"-"c:\PRIVATE\200009F3\schema.mde"
+"\epoc32\data\z\Private\200009F3\defaultimportfile.mde"-"c:\PRIVATE\200009F3\defaultimportfile.mde"
+"\epoc32\data\z\Private\200009F3\backup_registration.xml"-"c:\PRIVATE\200009F3\backup_registration.xml"
+"\epoc32\data\z\Private\200009F5\backup_registration.xml"-"c:\PRIVATE\200009F5\backup_registration.xml"
+"\epoc32\data\z\Private\200009F5\mappings.db"-"c:\PRIVATE\200009F5\mappings.db"
+
+"\epoc32\release\armv5\udeb\mdsiadrestart.exe"-"c:\sys\bin\mdsiadrestart.exe",FILERUN,RB,RW
+
--- a/sis/mds/package_separate.pkg Wed Jun 23 18:41:19 2010 +0300
+++ b/sis/mds/package_separate.pkg Tue Jul 06 14:44:37 2010 +0300
@@ -17,7 +17,7 @@
&EN
;packet-header (name, uid, major, minor, build, type)
-#{"Metadata System Upgrade"},(0x200009F5), 10, 10, 9, TYPE=SA, RU
+#{"Metadata System Upgrade"},(0x200009F5), 10, 10, 10, TYPE=SA, RU
; Localised vendor name
%{"Nokia"}
--- a/sis/mds/stub.pkg Wed Jun 23 18:41:19 2010 +0300
+++ b/sis/mds/stub.pkg Tue Jul 06 14:44:37 2010 +0300
@@ -17,7 +17,7 @@
&EN
; Header
-#{"Metadata System"}, (0x200009F5), 10, 10, 9, TYPE=SA
+#{"Metadata System"}, (0x200009F5), 10, 10, 10, TYPE=SA
; Localised Vendor name
%{"Nokia"}