diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilfsm.h --- a/omxil/omxilcomponentcommon/src/common/omxilfsm.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,221 +0,0 @@ -// 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 "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: -// - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILFSM_H -#define OMXILFSM_H - - -#include -#include -#include - -#include "omxilcommand.h" - -// forward declarations -class COmxILPortManager; -class COmxILConfigManager; -class MOmxILCallbackManagerIf; -class COmxILComponent; -class COmxILProcessingFunction; - -/** - FSM Panic category -*/ -_LIT(KOmxILFsmPanicCategory, "OmxILFsm"); - -/** - FSM class that represents the main FSM context object of the State - pattern. It delegates most events for processing to the current state - object. - */ -NONSHARABLE_CLASS(COmxILFsm) : public CBase - { - -public: - - static const TInt KMaxMsgQueueEntries = 10; - - enum TStateIndex - { - EStateInvalid = OMX_StateInvalid, - EStateLoaded = OMX_StateLoaded, - EStateIdle = OMX_StateIdle, - EStateExecuting = OMX_StateExecuting, - EStatePause = OMX_StatePause, - EStateWaitForResources = OMX_StateWaitForResources, - ESubStateLoadedToIdle, - ESubStateIdleToLoaded, - ESubStateExecutingToIdle, - ESubStatePauseToIdle, - EStateMax - }; - - -public: - - IMPORT_C static COmxILFsm* NewL(COmxILComponent& aComponent, - COmxILProcessingFunction& aProcFunction, - COmxILPortManager& aPortManager, - COmxILConfigManager& aConfigManager, - MOmxILCallbackManagerIf& aCallbacks); - - ~COmxILFsm(); - - OMX_ERRORTYPE InitFsm(); - - COmxILComponent* GetComponent() const; - - // - // OpenMAX IL API calls - // - - OMX_ERRORTYPE GetComponentVersion(OMX_STRING aComponentName, - OMX_VERSIONTYPE* pComponentVersion, - OMX_VERSIONTYPE* pSpecVersion, - OMX_UUIDTYPE* pComponentUUID) const; - - OMX_ERRORTYPE SendCommand(OMX_COMMANDTYPE Cmd, - TUint32 nParam1, - TAny* apCmdData); - - OMX_ERRORTYPE GetParameter(OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const; - - OMX_ERRORTYPE SetParameter(OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure); - - OMX_ERRORTYPE GetConfig(OMX_INDEXTYPE aConfigIndex, - TAny* apComponentConfigStructure) const; - - OMX_ERRORTYPE SetConfig(OMX_INDEXTYPE aConfigIndex, - const TAny* apComponentConfigStructure); - - OMX_ERRORTYPE GetExtensionIndex(OMX_STRING aParameterName, - OMX_INDEXTYPE* apIndexType) const; - - OMX_ERRORTYPE GetState(OMX_STATETYPE* apState) const; - - OMX_ERRORTYPE ComponentTunnelRequest(OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup); - - OMX_ERRORTYPE UseBuffer(OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer); - - OMX_ERRORTYPE AllocateBuffer(OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes); - - OMX_ERRORTYPE FreeBuffer(OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE EmptyThisBuffer(OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE FillThisBuffer(OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE SetCallbacks(const OMX_CALLBACKTYPE* apCallbacks, - const OMX_PTR apAppData); - - OMX_ERRORTYPE UseEGLImage(OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR aAppPrivate, - void* eglImage); - - OMX_ERRORTYPE ComponentRoleEnum(OMX_U8* aRole, - OMX_U32 aIndex) const; - -private: - - // Declaration of nested private state classes - class COmxILState; - class COmxILStateInvalid; - class COmxILStateLoaded; - class COmxILStateLoadedToIdle; - class COmxILStateWaitForResources; - class COmxILStateIdle; - class COmxILStateIdleToLoaded; - class COmxILStateExecuting; - class COmxILStateExecutingToIdle; - class COmxILStatePause; - class COmxILStatePauseToIdle; - class MOmxILPauseOrExecutingToIdle; - - // Note that the following friends don't break COmxILFsm's interface as all - // friends below are COmxILFsm's private nested classes and therefore they - // are logically part of COmxILFsm implementation - friend class COmxILState; - friend class COmxILStateInvalid; - friend class COmxILStateLoaded; - friend class COmxILStateLoadedToIdle; - friend class COmxILStateWaitForResources; - friend class COmxILStateIdle; - friend class COmxILStateIdleToLoaded; - friend class COmxILStateExecuting; - friend class COmxILStateExecutingToIdle; - friend class COmxILStatePause; - friend class COmxILStatePauseToIdle; - friend class MOmxILPauseOrExecutingToIdle; - -private: - - COmxILFsm(COmxILComponent& aComponent, - COmxILProcessingFunction& aProcFunction, - COmxILPortManager& aPortManager, - COmxILConfigManager& aConfigManager, - MOmxILCallbackManagerIf& aCallbacks); - - void ConstructL(); - - OMX_ERRORTYPE PopulateBuffer(OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer); - - OMX_ERRORTYPE FsmTransition(TStateIndex aNewState); - - OMX_ERRORTYPE FsmTransition(TUint32 aNewState); - - OMX_ERRORTYPE SendOmxErrorEventIfNeeded(OMX_ERRORTYPE aError) const; - - OMX_ERRORTYPE SendOmxErrorEventIfNeeded(OMX_ERRORTYPE aError); - -private: - - COmxILComponent& iComponent; - COmxILProcessingFunction& iProcFunction; - COmxILPortManager& iPortManager; - COmxILConfigManager& iConfigManager; - MOmxILCallbackManagerIf& iCallbacks; - - RPointerArray iStates; - TStateIndex iCurrentStateIndex; - COmxILState* ipCurrentState; - - }; - - -#endif // OMXILFSM_H