securitydialogs/Securitynotifier/Src/SecurityNotifier.cpp
branchRCL_3
changeset 21 09b1ac925e3f
parent 20 63339781d179
child 22 03674e5abf46
--- a/securitydialogs/Securitynotifier/Src/SecurityNotifier.cpp	Thu Aug 19 10:45:23 2010 +0300
+++ b/securitydialogs/Securitynotifier/Src/SecurityNotifier.cpp	Tue Aug 31 16:04:40 2010 +0300
@@ -34,10 +34,10 @@
 #include <apgcli.h>
 
 //  LOCAL CONSTANTS AND MACROS
-	/*****************************************************
-	*	Series 60 Customer / TSY
-	*	Needs customer TSY implementation
-	*****************************************************/
+  /*****************************************************
+  * Series 60 Customer / TSY
+  * Needs customer TSY implementation
+  *****************************************************/
 
 const TInt KTriesToConnectServer( 2 );
 const TInt KTimeBeforeRetryingServerConnection( 50000 );
@@ -92,10 +92,10 @@
         if ( scpClient.QueryAdminCmd( ESCPCommandLockPhone ) )
             {
             #if defined(_DEBUG)
-        	RDebug::Print(_L("CSecObsNotify::SCP admin command, no action required"));
-	        #endif
+          RDebug::Print(_L("CSecObsNotify::SCP admin command, no action required"));
+          #endif
 
-	        isAdminCall = ETrue;
+          isAdminCall = ETrue;
             }
 
         scpClient.Close();
@@ -137,7 +137,7 @@
 //
 CSecurityNotifier::~CSecurityNotifier()
     {
-    	FeatureManager::UnInitializeLib();
+      FeatureManager::UnInitializeLib();
     }
 //
 // ----------------------------------------------------------
@@ -158,9 +158,9 @@
 //
 MEikSrvNotifierBase2::TNotifierInfo CSecurityNotifier::RegisterL()
     {
-	#if defined(_DEBUG)
+  #if defined(_DEBUG)
     RDebug::Print(_L("(SECURITYNOTIFIER)CSecurityNotifier::RegisterL()"));
-	#endif
+  #endif
     iInfo.iUid = KSecurityNotifierUid;
     iInfo.iChannel = KSecurityNotifierChannel;
     iInfo.iPriority = ENotifierPriorityHigh;
@@ -174,9 +174,9 @@
 //
 MEikSrvNotifierBase2::TNotifierInfo CSecurityNotifier::Info() const
     {
-	#if defined(_DEBUG)
+  #if defined(_DEBUG)
     RDebug::Print(_L("(SECURITYNOTIFIER)CSecurityNotifier::Info()"));
-	#endif
+  #endif
     return iInfo;
     }
 
@@ -190,9 +190,9 @@
 //
 TPtrC8 CSecurityNotifier::StartL(const TDesC8& /*aBuffer*/)
     {
-	#if defined(_DEBUG)
+  #if defined(_DEBUG)
     RDebug::Print(_L("(SECURITYNOTIFIER)CSecurityNotifier::StartL()"));
-	#endif
+  #endif
     TPtrC8 ret(KNullDesC8);
     return (ret);
     }
@@ -204,9 +204,9 @@
 //
 void CSecurityNotifier::StartL(const TDesC8& aBuffer, TInt aReturnVal,const RMessagePtr2& aMessage)
     {
-	#if defined(_DEBUG)
+  #if defined(_DEBUG)
     RDebug::Print(_L("(SECURITYNOTIFIER)CSecurityNotifier::StartL2()"));
-	#endif
+  #endif
     TRAPD(err, GetParamsL(aBuffer, aReturnVal, aMessage));
     if (err)
         {
@@ -225,15 +225,44 @@
 //
 void CSecurityNotifier::GetParamsL(const TDesC8& aBuffer, TInt aReturnVal, const RMessagePtr2& aMessage)
     {
-	/*****************************************************
-	*	Series 60 Customer / ETel
-	*	Series 60  ETel API
-	*****************************************************/
+  #if defined(_DEBUG)
+  RDebug::Printf( "%s %s (%u) searching for autolock.exe =%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0x0 );
+  #endif
+    
+  TApaTaskList taskList( CCoeEnv::Static()->WsSession() );
+  const TUid KAutolockUid = { 0x100059B5 };
+  TApaTask task( taskList.FindApp( KAutolockUid ) );
+  if ( !task.Exists() )
+    {
+    #if defined(_DEBUG)
+    RDebug::Printf( "%s %s (%u) autolock.exe not running. Starting now=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0x1 );
+    #endif
+    RApaLsSession ls;                   
+    User::LeaveIfError(ls.Connect());   
+    CleanupClosePushL(ls);         
+    
+    CApaCommandLine* commandLine = CApaCommandLine::NewLC();
+    commandLine->SetExecutableNameL( _L("autolock.exe" ) );     
+    commandLine->SetCommandL( EApaCommandRun );
+    
+    // Try to launch the application.        
+    TInt err = ls.StartApp(*commandLine);
+    #if defined(_DEBUG)
+    RDebug::Printf( "%s %s (%u) autolock.exe err=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, err );
+    #endif
+    
+    CleanupStack::PopAndDestroy(2); // commandLine, ls
+    }
+
+  /*****************************************************
+  * Series 60 Customer / ETel
+  * Series 60  ETel API
+  *****************************************************/
     iMessage = aMessage;
     iReturnVal = aReturnVal;
     TBool skipQuery = EFalse; // In some cases the query is handled by some other entity and SecurityNotifier should skip it.
 
-	#if defined(_DEBUG)
+  #if defined(_DEBUG)
     RDebug::Print(_L("(SECURITYNOTIFIER)CSecurityNotifier::GetParamsL() Start BEGIN"));
     #endif
     
@@ -243,38 +272,9 @@
     iStartup = pckg().iStartup;
     iEvent = static_cast<RMobilePhone::TMobilePhoneSecurityEvent>(pckg().iEvent);
     
-	#if defined(_DEBUG)
-	RDebug::Printf( "%s %s (%u) searching for autolock.exe =%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0x0 );
-	RDebug::Printf( "%s %s (%u) iEvent=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, iEvent );
-	RDebug::Printf( "%s %s (%u) 2 RMobilePhone::EPin1Required=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, RMobilePhone::EPin1Required );
-	#endif
-	TApaTaskList taskList( CCoeEnv::Static()->WsSession() );
-	const TUid KAutolockUid = { 0x100059B5 };
-	TApaTask task( taskList.FindApp( KAutolockUid ) );
-	if ( !task.Exists() && iEvent != RMobilePhone::EPin1Required )	// PIN-request should not start autolock, to prevent that lock-code is secretly accepted by TARM. Rely on Startup.
-		{
-		#if defined(_DEBUG)
-		RDebug::Printf( "%s %s (%u) autolock.exe not running. Starting now=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0x1 );
-		#endif
-		RApaLsSession ls;                   
-		User::LeaveIfError(ls.Connect());   
-		CleanupClosePushL(ls);         
-		
-		CApaCommandLine* commandLine = CApaCommandLine::NewLC();
-		commandLine->SetExecutableNameL( _L("autolock.exe" ) );     
-		commandLine->SetCommandL( EApaCommandRun );
-		
-		// Try to launch the application.        
-		User::LeaveIfError(ls.StartApp(*commandLine));
-		#if defined(_DEBUG)
-		RDebug::Printf( "%s %s (%u) autolock.exe created=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0x2 );
-		#endif
-		
-		CleanupStack::PopAndDestroy(2); // commandLine, ls
-		}
 
 if(FeatureManager::FeatureSupported(KFeatureIdSapTerminalControlFw ))
-		{
+    {
     if(iEvent == RMobilePhone::EPhonePasswordRequired)
         {
             skipQuery = IsAdminCall(); // SCP handles the call.
@@ -292,7 +292,7 @@
         SetActive();
         iStatus = KRequestPending;
         TRequestStatus* stat = &iStatus;
-	    #if defined(_DEBUG)
+      #if defined(_DEBUG)
         RDebug::Print(_L("CSecurityNotifier::GetParamsL() End"));
         #endif
         User::RequestComplete(stat, KErrNone); // jump to RunL
@@ -305,26 +305,26 @@
 // ----------------------------------------------------------
 void CSecurityNotifier::RunL()
     {
-	/*****************************************************
-	*	Series 60 Customer / ETel
-	*	Series 60  ETel API
-	*****************************************************/
-	/*****************************************************
-	*	Series 60 Customer / TSY
-	*	Needs customer TSY implementation
-	*****************************************************/
+  /*****************************************************
+  * Series 60 Customer / ETel
+  * Series 60  ETel API
+  *****************************************************/
+  /*****************************************************
+  * Series 60 Customer / TSY
+  * Needs customer TSY implementation
+  *****************************************************/
 
     TInt err( KErrGeneral );
     TInt thisTry( 0 );
-	RTelServer::TPhoneInfo PhoneInfo;
-	#if defined(_DEBUG)
+  RTelServer::TPhoneInfo PhoneInfo;
+  #if defined(_DEBUG)
     RDebug::Print(_L("CSecurityNotifier::RunL() Start"));
     #endif
     /*All server connections are tried to be made KTriesToConnectServer times because occasional
     fails on connections are possible, at least on some servers*/
 
     // connect to ETel server
-	#if defined(_DEBUG)
+  #if defined(_DEBUG)
     RDebug::Print(_L("CSecurityNotifier::RunL() connect to ETel server"));
     #endif
     while ( ( err = iServer.Connect() ) != KErrNone && ( thisTry++ ) <= KTriesToConnectServer )
@@ -336,11 +336,14 @@
     thisTry = 0;
 
     // load TSY
-	#if defined(_DEBUG)
+  #if defined(_DEBUG)
     RDebug::Print(_L("CSecurityNotifier::RunL() load TSY"));
     #endif
-    err = iServer.LoadPhoneModule( KMmTsyModuleName );
-    if ( err != KErrAlreadyExists )
+    
+    if ( !iPhone.SubSessionHandle() )    
+    {
+      err = iServer.LoadPhoneModule( KMmTsyModuleName );
+      if ( err != KErrAlreadyExists )
         {
         // may also return KErrAlreadyExists if something
         // else has already loaded the TSY module. And that is
@@ -348,20 +351,22 @@
         User::LeaveIfError( err );
         }
 
-    // open phones
-	#if defined(_DEBUG)
-    RDebug::Print(_L("CSecurityNotifier::RunL() open phones"));
-    #endif
-    User::LeaveIfError(iServer.SetExtendedErrorGranularity(RTelServer::EErrorExtended));
-	User::LeaveIfError(iServer.GetPhoneInfo(PhoneIndex, PhoneInfo));
-    User::LeaveIfError(iPhone.Open(iServer,PhoneInfo.iName));
+       // open phones
+      #if defined(_DEBUG)
+      RDebug::Print(_L("CSecurityNotifier::RunL() open phones"));
+      #endif
+      User::LeaveIfError(iServer.SetExtendedErrorGranularity(RTelServer::EErrorExtended));
+      User::LeaveIfError(iServer.GetPhoneInfo(PhoneIndex, PhoneInfo));
+      User::LeaveIfError(iPhone.Open(iServer,PhoneInfo.iName));
+    }   
+        
     RProperty Property;
     CleanupClosePushL( Property );
     err = Property.Set(KPSUidStartup, KStartupSecurityCodeQueryStatus, ESecurityQueryActive);
     User::LeaveIfError( err );
 
     // initialize security ui
-	#if defined(_DEBUG)
+  #if defined(_DEBUG)
     RDebug::Print(_L("CSecurityNotifier::RunL() initialize security ui"));
     #endif
     CSecurityHandler* handler = new(ELeave) CSecurityHandler(iPhone);
@@ -388,11 +393,11 @@
     // if something went wrong cancel the code request
     if (error)
         {
-		#if defined(_DEBUG)
-		RDebug::Print(_L("CSecurityNotifier::RunL() ERROR: %d"), error);
-		#endif
-		TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ));
-		TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin ));
+    #if defined(_DEBUG)
+    RDebug::Print(_L("CSecurityNotifier::RunL() ERROR: %d"), error);
+    #endif
+    TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ));
+    TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin ));
         switch (iEvent)
             {
             case RMobilePhone::EUniversalPinRequired:
@@ -407,19 +412,19 @@
                    iPhone.AbortSecurityCode(RMobilePhone::ESecurityUniversalPuk);
                   }
                 break;
-			case RMobilePhone::EPin1Required:
+      case RMobilePhone::EPin1Required:
                 iPhone.AbortSecurityCode(RMobilePhone::ESecurityCodePin1);
                 break;
-			case RMobilePhone::EPuk1Required:
+      case RMobilePhone::EPuk1Required:
                 iPhone.AbortSecurityCode(RMobilePhone::ESecurityCodePuk1);
                 break;
-			case RMobilePhone::EPin2Required:
+      case RMobilePhone::EPin2Required:
                 iPhone.AbortSecurityCode(RMobilePhone::ESecurityCodePin2);
                 break;
-			case RMobilePhone::EPuk2Required:
+      case RMobilePhone::EPuk2Required:
                 iPhone.AbortSecurityCode(RMobilePhone::ESecurityCodePuk2);
                 break;
-			case RMobilePhone::EPhonePasswordRequired:
+      case RMobilePhone::EPhonePasswordRequired:
                 iPhone.AbortSecurityCode(RMobilePhone::ESecurityCodePhonePassword);
                 break;
             default:
@@ -449,9 +454,9 @@
     iReturnVal = KErrNone;
     //Leave the window group to foreground for a short time to absorb key presses so that autolock has time to activate.
     if(!StartUp)
-		User::After(KDelayPeriod);
-	( CEikonEnv::Static() )->BringForwards(EFalse);
-	#if defined(_DEBUG)
+    User::After(KDelayPeriod);
+  ( CEikonEnv::Static() )->BringForwards(EFalse);
+  #if defined(_DEBUG)
     RDebug::Print(_L("CSecurityNotifier::RunL() End"));
     #endif
     }