diff -r c1e808730d6c -r eedf2dcd43c6 omxil/omxilcomponentcommon/src/common/omxilfsm.h --- a/omxil/omxilcomponentcommon/src/common/omxilfsm.h Mon May 03 13:56:28 2010 +0300 +++ b/omxil/omxilcomponentcommon/src/common/omxilfsm.h Fri May 07 16:25:23 2010 +0100 @@ -1,221 +1,221 @@ -// 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 +// 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 MOmxILPortManagerIf; +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, + MOmxILPortManagerIf& 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, + MOmxILPortManagerIf& 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; + MOmxILPortManagerIf& iPortManager; + COmxILConfigManager& iConfigManager; + MOmxILCallbackManagerIf& iCallbacks; + + RPointerArray iStates; + TStateIndex iCurrentStateIndex; + COmxILState* ipCurrentState; + + }; + + +#endif // OMXILFSM_H