--- a/htiui/HtiServicePlugins/HtiCameraServicePlugin/src/HtiCameraServicePlugin.cpp Thu Jul 15 18:39:46 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,637 +0,0 @@
-/*
-* 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: Implements the ECom plugin for HTI camera
-* service.
-*
-*/
-
-
-
-// INCLUDE FILES
-#include <HtiDispatcherInterface.h>
-#include <HtiLogging.h>
-
-
-#include "HtiCameraServicePlugin.h"
-
-// EXTERNAL DATA STRUCTURES
-
-// EXTERNAL FUNCTION PROTOTYPES
-
-// CONSTANTS
-
-// MACROS
-
-// LOCAL CONSTANTS AND MACROS
-const static TUid KCameraServiceUid = { 0x2002EA9E };
-
-
-
-// NOTE: Max length for error description is defined
-// in HtiDispatcherInterface.h (currently 118).
-
-_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");
-_LIT8( KErrorStartVideoRecordingFailed, "ERROR: Start video recording failed");
-_LIT8( KErrorPausingVideoRecordingFailed, "ERROR: Pausing video recording failed");
-_LIT8( KErrorResumeVideoRecordingFailed, "ERROR: Resume video recording failed");
-_LIT8( KErrorStopVideoRecordingFailed, "ERROR: Stop video recording failed");
-_LIT8( KErrorSetZoomModeFailed, "ERROR: Set zoom mode failed");
-_LIT8( KErrorSetZoomValueFailed, "ERROR: Set zoom value failed");
-
-// MODULE DATA STRUCTURES
-
-// LOCAL FUNCTION PROTOTYPES
-
-// FORWARD DECLARATIONS
-
-// ============================= LOCAL FUNCTIONS ===============================
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CHtiCameraServicePlugin::CHtiCameraServicePlugin
-// C++ default constructor can NOT contain any code, that might leave.
-// -----------------------------------------------------------------------------
-//
-CHtiCameraServicePlugin::CHtiCameraServicePlugin():iIsBusy(EFalse), iError(0),
- iVideoRecordingEngine(NULL), iWaiter(NULL)
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// CHtiCameraServicePlugin::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CHtiCameraServicePlugin::ConstructL()
- {
- HTI_LOG_TEXT( "CHtiCameraServicePlugin::ConstructL" );
- iWaiter = new ( ELeave ) CActiveSchedulerWait;
- }
-
-
-// -----------------------------------------------------------------------------
-// CHtiCameraServicePlugin::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CHtiCameraServicePlugin* CHtiCameraServicePlugin::NewL()
- {
- CHtiCameraServicePlugin* self = new (ELeave) CHtiCameraServicePlugin;
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop();
- return self;
- }
-
-
-// Destructor
-CHtiCameraServicePlugin::~CHtiCameraServicePlugin()
- {
- if(iVideoRecordingEngine)
- {
- delete iVideoRecordingEngine;
- iVideoRecordingEngine = NULL;
- }
-
- delete iWaiter;
- iWaiter = NULL;
- }
-
-
-// -----------------------------------------------------------------------------
-// CHtiCameraServicePlugin::ProcessMessageL
-// -----------------------------------------------------------------------------
-//
-void CHtiCameraServicePlugin::ProcessMessageL( const TDesC8& aMessage,
- THtiMessagePriority /*aPriority*/ )
- {
- HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::ProcessMessageL" );
- HTI_LOG_FORMAT( "Message length = %d", aMessage.Length() );
-
- if ( iIsBusy )
- {
- HTI_LOG_TEXT( "Plugin is busy - leaving" );
- User::Leave( KErrInUse );
- }
-
- // Will be set to EFalse in the SendResponseMsg or SendErrorResponseMsg
- // methods when the response has been successfully sent and the plugin is
- // ready for next message.
- iIsBusy = ETrue;
-
- if ( aMessage.Length() < 1 )
- {
- SendErrorMessageL( KErrArgument, KErrorNoCommand );
- return;
- }
-
- TUint8 command = aMessage.Ptr()[0];
- TInt err = KErrNone;
-
- switch (command)
- {
- 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 )));
- break;
- case ECmdStartVideoRecording:
- TRAP(err, HandleStartVideoRecordingCmdL(aMessage.Right( aMessage.Length() - 1 )));
- break;
- case ECmdPausingVideoRecording:
- TRAP(err, HandlePausingVideoRecordingCmdL(aMessage.Right( aMessage.Length() - 1 )));
- break;
- case ECmdResumeVideoRecording:
- TRAP(err, HandleResumeVideoRecordingCmdL(aMessage.Right( aMessage.Length() - 1 )));
- break;
- case ECmdStopVideoRecording:
- TRAP(err, HandleStopVideoRecordingCmdL(aMessage.Right( aMessage.Length() - 1 )));
- break;
- case ECmdCloseVideoRecording:
- TRAP(err, HandleCloseVideoRecordingCmdL(aMessage.Right( aMessage.Length() - 1 )));
- break;
- case ECmdGetZoom:
- TRAP(err, HandleGetZoomCmdL(aMessage.Right( aMessage.Length() - 1 )));
- break;
- case ECmdSetZoom:
- TRAP(err, HandleSetZoomCmdL(aMessage.Right( aMessage.Length() - 1 )));
- break;
- default:
- TRAP(err, SendErrorMessageL(KErrArgument, KErrorUnknownCmd));
- break;
- }
-
- if(err != KErrNone)
- {
- iIsBusy = EFalse;
- User::Leave( err );
- }
-
- HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::ProcessMessageL" );
- }
-
-void CHtiCameraServicePlugin::HandleInitializeCmdL( const TDesC8& aData )
- {
- HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::HandleInitializeCmdL" );
- if(aData.Length() != 0)
- {
- SendErrorMessageL(KErrArgument, KErrInvalidateParameters);
- return;
- }
-
- 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)
- {
- SendErrorMessageL(iError, KErrorInitFailed);
- }
- else
- {
- HTI_LOG_TEXT("Initializes video recording");
- iVideoRecordingEngine->InitVideoRecorderL();
-
- SendOkMsgL(KNullDesC8);
- }
-
- 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 )
- {
- HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::HandlePrepareVideoRecordingCmdL" );
- if(aData.Length() < 2 || aData[1] != aData.Length() -2)
- {
- SendErrorMessageL(KErrArgument, KErrInvalidateParameters);
- return;
- }
-
- if(iVideoRecordingEngine == NULL)
- {
- SendErrorMessageL(KErrNotReady, KErrorUninitialized);
- return;
- }
-
- TInt qualityLevelIndex = aData[0];
- if(qualityLevelIndex < 0 || qualityLevelIndex > iVideoRecordingEngine->VideoQualityCount() -1)
- {
- SendErrorMessageL(KErrOverflow, KErrQualityLevel);
- return;
- }
-
- TBuf<255> filePath;
- TInt nextOffset = ParseString( aData, 1, filePath );
- if ( filePath.Length() < 1 || nextOffset < 0 )
- {
- SendErrorMessageL(KErrArgument, KErrInvalidateParameters);
- return;
- }
-
- HTI_LOG_FORMAT("Set video recording file name: %S", &filePath);
- iVideoRecordingEngine->SetVideoRecordingFileNameL(filePath);
-
- HTI_LOG_FORMAT("Prepare video recording with quality level index: %d", qualityLevelIndex);
- iVideoRecordingEngine->PrepareVideoRecordingL(qualityLevelIndex);
-
- iWaiter->Start();
- if(iError != KErrNone)
- {
- SendErrorMessageL(iError, KErrorPrepareVideoRecordingFailed);
- }
- else
- {
- SendOkMsgL(KNullDesC8);
- }
-
- HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::HandlePrepareVideoRecordingCmdL" );
- }
-
-void CHtiCameraServicePlugin::HandleStartVideoRecordingCmdL( const TDesC8& aData )
- {
- HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::HandleStartVideoRecordingCmdL" );
- if(aData.Length() != 0)
- {
- SendErrorMessageL(KErrArgument, KErrInvalidateParameters);
- return;
- }
-
- if(iVideoRecordingEngine == NULL)
- {
- SendErrorMessageL(KErrNotReady, KErrorUninitialized);
- return;
- }
-
- HTI_LOG_TEXT("Start video recording...");
- iVideoRecordingEngine->StartVideoRecording();
-
- if(iError != KErrNone)
- {
- SendErrorMessageL(iError, KErrorStartVideoRecordingFailed);
- }
- else
- {
- SendOkMsgL(KNullDesC8);
- }
-
- HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::HandleStartVideoRecordingCmdL" );
- }
-
-void CHtiCameraServicePlugin::HandlePausingVideoRecordingCmdL( const TDesC8& aData )
- {
- HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::HandlePausingVideoRecordingCmdL" );
- if(aData.Length() != 0)
- {
- SendErrorMessageL(KErrArgument, KErrInvalidateParameters);
- return;
- }
-
- if(iVideoRecordingEngine == NULL)
- {
- SendErrorMessageL(KErrNotReady, KErrorUninitialized);
- return;
- }
-
- HTI_LOG_TEXT("Pausing video recording");
- iVideoRecordingEngine->PauseVideoRecording();
- if(iError != KErrNone)
- {
- SendErrorMessageL(iError, KErrorPausingVideoRecordingFailed);
- }
- else
- {
- SendOkMsgL(KNullDesC8);
- }
- HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::HandlePausingVideoRecordingCmdL" );
- }
-
-void CHtiCameraServicePlugin::HandleResumeVideoRecordingCmdL( const TDesC8& aData )
- {
- HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::HandleResumeVideoRecordingCmdL" );
- if(aData.Length() != 0)
- {
- SendErrorMessageL(KErrArgument, KErrInvalidateParameters);
- return;
- }
-
- if(iVideoRecordingEngine == NULL)
- {
- SendErrorMessageL(KErrNotReady, KErrorUninitialized);
- return;
- }
-
- HTI_LOG_TEXT("Resume video recording...");
- iVideoRecordingEngine->ResumeVideoRecording();
-
- if(iError != KErrNone)
- {
- SendErrorMessageL(iError, KErrorResumeVideoRecordingFailed);
- }
- else
- {
- SendOkMsgL(KNullDesC8);
- }
- HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::HandleResumeVideoRecordingCmdL" );
- }
-
-void CHtiCameraServicePlugin::HandleStopVideoRecordingCmdL( const TDesC8& aData )
- {
- HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::HandleStopVideoRecordingCmdL" );
- if(aData.Length() != 0)
- {
- SendErrorMessageL(KErrArgument, KErrInvalidateParameters);
- return;
- }
-
- if(iVideoRecordingEngine == NULL)
- {
- SendErrorMessageL(KErrNotReady, KErrorUninitialized);
- return;
- }
-
- HTI_LOG_TEXT("Stop video recording");
- iVideoRecordingEngine->StopVideoRecording();
- if(iError != KErrNone)
- {
- SendErrorMessageL(iError, KErrorStopVideoRecordingFailed);
- }
- else
- {
- SendOkMsgL(KNullDesC8);
- }
- HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::HandleStopVideoRecordingCmdL" );
- }
-
-void CHtiCameraServicePlugin::HandleCloseVideoRecordingCmdL( const TDesC8& aData )
- {
- HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::HandleCloseVideoRecordingCmdL" );
- if(aData.Length() != 0)
- {
- SendErrorMessageL(KErrArgument, KErrInvalidateParameters);
- return;
- }
-
- if(iVideoRecordingEngine == NULL)
- {
- SendErrorMessageL(KErrNotReady, KErrorUninitialized);
- return;
- }
-
- HTI_LOG_TEXT("Close video recording");
- iVideoRecordingEngine->CloseVideoRecording();
- SendOkMsgL(KNullDesC8);
- HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::HandleCloseVideoRecordingCmdL" );
- }
-
-void CHtiCameraServicePlugin::HandleGetZoomCmdL( const TDesC8& aData )
- {
- HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::HandleGetZoomCmdL" );
- if(aData.Length() != 0)
- {
- SendErrorMessageL(KErrArgument, KErrInvalidateParameters);
- return;
- }
-
- if(iVideoRecordingEngine == NULL)
- {
- SendErrorMessageL(KErrNotReady, KErrorUninitialized);
- return;
- }
-
- TUint8 zoomMode = (TUint8)iVideoRecordingEngine->ZoomMode();
- HTI_LOG_FORMAT("Current zoom mode: %d", zoomMode);
-
- TUint32 zoomValue = iVideoRecordingEngine->ZoomValue();
- HTI_LOG_FORMAT("Current zoom value: %d", zoomValue);
-
- TUint32 zoomMinValue = iVideoRecordingEngine->MinZoomValue();
- HTI_LOG_FORMAT("Min zoom value: %d", zoomMinValue);
-
- TUint32 zoomMaxValue = iVideoRecordingEngine->MaxZoomValue();
- HTI_LOG_FORMAT("Max zoom value: %d", zoomMaxValue);
-
- TBuf8<13> buf;
- buf.Append(zoomMode);
- buf.Append((TUint8*)&zoomValue, 4);
- buf.Append((TUint8*)&zoomMinValue, 4);
- buf.Append((TUint8*)&zoomMaxValue, 4);
- SendOkMsgL( buf );
-
- HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::HandleGetZoomCmdL" );
- }
-
-void CHtiCameraServicePlugin::HandleSetZoomCmdL( const TDesC8& aData )
- {
- HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::HandleSetZoomCmdL" );
- if(aData.Length() != 5)
- {
- SendErrorMessageL(KErrArgument, KErrInvalidateParameters);
- 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));
- if(err != KErrNone)
- {
- SendErrorMessageL(err, KErrorSetZoomModeFailed);
- }
- else
- {
- TInt value = aData[1] + ( aData[2] << 8 )
- + ( aData[3] << 16 )
- + ( aData[4] << 24 );
- HTI_LOG_FORMAT("Set zoom value: %d", value);
- TRAPD(err, iVideoRecordingEngine->SetZoomValueL(value));
- if(err != KErrNone)
- {
- SendErrorMessageL(err, KErrorSetZoomValueFailed);
- }
- else
- {
- SendOkMsgL(KNullDesC8);
- }
- }
-
- HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::HandleSetZoomCmdL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// CHtiCameraServicePlugin::IsBusy
-// -----------------------------------------------------------------------------
-//
-TBool CHtiCameraServicePlugin::IsBusy()
- {
- return iIsBusy;
- }
-
-
-// ----------------------------------------------------------------------------
-void CHtiCameraServicePlugin::SendOkMsgL( const TDesC8& aData )
- {
- HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::SendOkMsgL: Starting" );
-
- User::LeaveIfNull( iDispatcher );
-
- HBufC8* temp = HBufC8::NewL( aData.Length() + 1 );
- TPtr8 response = temp->Des();
- response.Append( ( TChar ) EResultOk );
- response.Append( aData );
- User::LeaveIfError( iDispatcher->DispatchOutgoingMessage(
- temp, KCameraServiceUid ) );
- iIsBusy = EFalse;
- HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::SendOkMsgL: Done" );
- }
-
-// ----------------------------------------------------------------------------
-void CHtiCameraServicePlugin::SendErrorMessageL( TInt aError, const TDesC8& aDescription )
- {
- HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::SendErrorMessageL: Starting" );
- User::LeaveIfNull( iDispatcher );
- User::LeaveIfError( iDispatcher->DispatchOutgoingErrorMessage(
- aError, aDescription, KCameraServiceUid ) );
- iIsBusy = EFalse;
- HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::SendErrorMessageL: Done" );
- }
-
-TInt CHtiCameraServicePlugin::ParseString( const TDesC8& aRequest,
- TInt aOffset,
- TDes& aResult )
- {
- HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::ParseString" );
-
- // If offset outside the string return empty string
- if ( aOffset >= aRequest.Size() )
- {
- return aOffset;
- }
-
- TInt length = aRequest[aOffset];
- HTI_LOG_FORMAT( "String length = %d", length );
-
- // If length is zero return empty string
- if ( length < 1 )
- {
- return aOffset + 1;
- }
-
- if ( length > aResult.MaxLength() )
- {
- return KErrBadDescriptor;
- }
-
- TInt nextOffset = length + aOffset + 1;
- HTI_LOG_FORMAT( "Next offset = %d", nextOffset );
- HTI_LOG_FORMAT( "Request size = %d", aRequest.Size() );
-
- if ( nextOffset > aRequest.Size() )
- {
- return KErrArgument;
- }
-
- aResult.Copy( aRequest.Mid( aOffset + 1, length ) );
-
- HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::ParseString" );
- return nextOffset;
- }
-
-void CHtiCameraServicePlugin::MevroInitComplete( TInt aError )
- {
- HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::MevroInitComplete" );
- HTI_LOG_FORMAT("aError = %d", aError);
- iError = aError;
- iWaiter->AsyncStop();
- HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::MevroInitComplete" );
- }
-
-void CHtiCameraServicePlugin::MevroVideoPrepareComplete(TInt aError)
- {
- HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::MevroVideoPrepareComplete" );
- HTI_LOG_FORMAT("aError = %d", aError);
- iError = aError;
- iWaiter->AsyncStop();
- HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::MevroVideoPrepareComplete" );
- }
-
-void CHtiCameraServicePlugin::MevroVideoRecordingOn(TInt aError)
- {
- HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::MevroVideoRecordingOn" );
- HTI_LOG_FORMAT("aError = %d", aError);
- iError = aError;
- HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::MevroVideoRecordingOn" );
- }
-
-void CHtiCameraServicePlugin::MevroVideoRecordingPaused(TInt aError)
- {
- HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::MevroVideoRecordingPaused" );
- HTI_LOG_FORMAT("aError = %d", aError);
- iError = aError;
- HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::MevroVideoRecordingPaused" );
- }
-
-void CHtiCameraServicePlugin::MevroVideoRecordingComplete(TInt aError)
- {
- HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::MevroVideoRecordingComplete" );
- HTI_LOG_FORMAT("aError = %d", aError);
- iError = aError;
- HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::MevroVideoRecordingComplete" );
- }
-// End of File