htiui/HtiServicePlugins/HtiCameraServicePlugin/src/HtiCameraServicePlugin.cpp
branchRCL_3
changeset 42 d40e813b23c0
parent 33 65b472535a0d
--- a/htiui/HtiServicePlugins/HtiCameraServicePlugin/src/HtiCameraServicePlugin.cpp	Mon Jun 21 15:41:16 2010 +0300
+++ b/htiui/HtiServicePlugins/HtiCameraServicePlugin/src/HtiCameraServicePlugin.cpp	Thu Jul 15 18:39:46 2010 +0300
@@ -44,6 +44,7 @@
 _LIT8( KErrorNoCommand, "ERROR: No command given" );
 _LIT8( KErrorUnknownCmd, "ERROR: Unknown Camera Service command" );
 _LIT8( KErrorInitFailed, "ERROR: Failed to init");
+_LIT8( KErrorUninitialized, "ERROR: Uninitialized");
 _LIT8( KErrInvalidateParameters, "ERROR: Invalidate parameters");
 _LIT8( KErrQualityLevel, "ERROR: Invalidate quality level");
 _LIT8( KErrorPrepareVideoRecordingFailed, "ERROR: Prepare video recording failed");
@@ -83,7 +84,6 @@
 void CHtiCameraServicePlugin::ConstructL()
     {
     HTI_LOG_TEXT( "CHtiCameraServicePlugin::ConstructL" );
-    iVideoRecordingEngine = CEngineVideoRecording::NewL(*this, 0);
     iWaiter = new ( ELeave ) CActiveSchedulerWait;
     }
 
@@ -106,8 +106,11 @@
 // Destructor
 CHtiCameraServicePlugin::~CHtiCameraServicePlugin()
     {
-    delete iVideoRecordingEngine;
-    iVideoRecordingEngine = NULL;
+    if(iVideoRecordingEngine)
+        {
+        delete iVideoRecordingEngine;
+        iVideoRecordingEngine = NULL;
+        }
     
     delete iWaiter;
     iWaiter = NULL;
@@ -146,8 +149,11 @@
 
     switch (command)
         {
-        case ECmdInit:
-            TRAP(err, HandleInitCmdL(aMessage.Right( aMessage.Length() - 1 )));
+        case ECmdInitialize:
+            TRAP(err, HandleInitializeCmdL(aMessage.Right( aMessage.Length() - 1 )));
+            break;
+        case ECmdUninitialize:
+            TRAP(err, HandleUninitializeCmdL(aMessage.Right( aMessage.Length() - 1 )));
             break;
         case ECmdPrepareVideoRecording:
             TRAP(err, HandlePrepareVideoRecordingCmdL(aMessage.Right( aMessage.Length() - 1 )));
@@ -187,9 +193,9 @@
     HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::ProcessMessageL" );
     }
 
-void CHtiCameraServicePlugin::HandleInitCmdL( const TDesC8& aData )
+void CHtiCameraServicePlugin::HandleInitializeCmdL( const TDesC8& aData )
     {
-    HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::HandleInitCmdL" );
+    HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::HandleInitializeCmdL" );
     if(aData.Length() != 0)
         {
         SendErrorMessageL(KErrArgument, KErrInvalidateParameters);
@@ -197,6 +203,13 @@
         }
     
     HTI_LOG_TEXT("Initializes Camera Application Engine");
+    if(iVideoRecordingEngine)
+        {
+        delete iVideoRecordingEngine;
+        iVideoRecordingEngine = NULL;
+        }
+    
+    iVideoRecordingEngine = CEngineVideoRecording::NewL(*this, 0);
     iVideoRecordingEngine->InitL();
     iWaiter->Start();
     if(iError != KErrNone)
@@ -211,9 +224,30 @@
         SendOkMsgL(KNullDesC8);
         }
 
-    HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::HandleInitCmdL" );
+    HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::HandleInitializeCmdL" );
     }
 
+void CHtiCameraServicePlugin::HandleUninitializeCmdL(const TDesC8& aData)
+    {
+    HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::HandleUninitializeCmdL" );
+    if(aData.Length() != 0)
+        {
+        SendErrorMessageL(KErrArgument, KErrInvalidateParameters);
+        return;
+        }
+    
+    if(iVideoRecordingEngine == NULL)
+        {
+        SendErrorMessageL(KErrNotReady, KErrorUninitialized);
+        return;
+        }
+    
+    delete iVideoRecordingEngine;
+    iVideoRecordingEngine = NULL;
+    
+    SendOkMsgL(KNullDesC8);
+    HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::HandleUninitializeCmdL" );
+    }
 
 void CHtiCameraServicePlugin::HandlePrepareVideoRecordingCmdL( const TDesC8& aData )
     {
@@ -224,6 +258,12 @@
         return;
         }
     
+    if(iVideoRecordingEngine == NULL)
+        {
+        SendErrorMessageL(KErrNotReady, KErrorUninitialized);
+        return;
+        }
+    
     TInt qualityLevelIndex = aData[0];
     if(qualityLevelIndex < 0 || qualityLevelIndex > iVideoRecordingEngine->VideoQualityCount() -1)
         {
@@ -267,6 +307,12 @@
         return;
         }
     
+    if(iVideoRecordingEngine == NULL)
+        {
+        SendErrorMessageL(KErrNotReady, KErrorUninitialized);
+        return;
+        }
+    
     HTI_LOG_TEXT("Start video recording...");
     iVideoRecordingEngine->StartVideoRecording();
     
@@ -291,6 +337,12 @@
         return;
         }
     
+    if(iVideoRecordingEngine == NULL)
+        {
+        SendErrorMessageL(KErrNotReady, KErrorUninitialized);
+        return;
+        }
+    
     HTI_LOG_TEXT("Pausing video recording");
     iVideoRecordingEngine->PauseVideoRecording();
     if(iError != KErrNone)
@@ -313,6 +365,12 @@
         return;
         }
     
+    if(iVideoRecordingEngine == NULL)
+        {
+        SendErrorMessageL(KErrNotReady, KErrorUninitialized);
+        return;
+        }
+    
     HTI_LOG_TEXT("Resume video recording...");
     iVideoRecordingEngine->ResumeVideoRecording();
     
@@ -336,6 +394,12 @@
         return;
         }
     
+    if(iVideoRecordingEngine == NULL)
+        {
+        SendErrorMessageL(KErrNotReady, KErrorUninitialized);
+        return;
+        }
+    
     HTI_LOG_TEXT("Stop video recording");
     iVideoRecordingEngine->StopVideoRecording();
     if(iError != KErrNone)
@@ -358,6 +422,12 @@
         return;
         }
     
+    if(iVideoRecordingEngine == NULL)
+        {
+        SendErrorMessageL(KErrNotReady, KErrorUninitialized);
+        return;
+        }
+    
     HTI_LOG_TEXT("Close video recording");
     iVideoRecordingEngine->CloseVideoRecording();
     SendOkMsgL(KNullDesC8);
@@ -373,6 +443,12 @@
         return;
         }
     
+    if(iVideoRecordingEngine == NULL)
+        {
+        SendErrorMessageL(KErrNotReady, KErrorUninitialized);
+        return;
+        }
+    
     TUint8 zoomMode = (TUint8)iVideoRecordingEngine->ZoomMode();
     HTI_LOG_FORMAT("Current zoom mode: %d", zoomMode);
     
@@ -404,6 +480,12 @@
         return;
         }
     
+    if(iVideoRecordingEngine == NULL)
+        {
+        SendErrorMessageL(KErrNotReady, KErrorUninitialized);
+        return;
+        }
+    
     CEngineVideoRecording::TZoomMode zoomMode = (CEngineVideoRecording::TZoomMode)aData[0];
     HTI_LOG_FORMAT("Set zoom mode: %d", zoomMode);
     TRAPD(err, iVideoRecordingEngine->SetZoomModeL(zoomMode));
@@ -515,7 +597,7 @@
     {
     HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::MevroInitComplete" );
     HTI_LOG_FORMAT("aError = %d", aError);
-    iError = aError;
+    iError = aError; 
     iWaiter->AsyncStop();
     HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::MevroInitComplete" );
     }