diff -r 6369bfd1b60d -r 08b5eae9f9ff upnpmpxplugins/upnpplaybackplugins/inc/upnpvaluestatemachine.h --- a/upnpmpxplugins/upnpplaybackplugins/inc/upnpvaluestatemachine.h Mon Nov 01 13:44:24 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,311 +0,0 @@ -/* -* Copyright (c) 2008 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: Class for retrieving and selecting media renderers -* -*/ - - - - - - -#ifndef C_UPNPVALUESTATEMACHINE_H -#define C_UPNPVALUESTATEMACHINE_H - -// INCLUDES -#include -#include - -// FORWARD DECLARATIONS -class CUPnPMusicPlayer; -class MUPnPAVRenderingSession; - - - -/** - * Class for handling playback state machine functionality - * - * @lib upnpmusicplugins.lib - * @since S60 v3.1 - */ -class CUPnPValueStateMachine : public CBase - { - -public: // construction / destruction - - /** - * Static 1st phase constructor - * - * @since Series 60 3.1 - * @param aParent the parent plugin instance - * @param aRenderingSession for playback commands - */ - static CUPnPValueStateMachine* NewL( - CUPnPMusicPlayer& aParent, - MUPnPAVRenderingSession& aRenderingSession ); - - /** - * Destructor - * - * @since Series 60 3.1 - */ - virtual ~CUPnPValueStateMachine(); - -public: // datatypes used in this class - - /** - * current type of operation - */ - enum TOperationType - { - EOperationNone, // no operation going on - EOperationValue, // value get - EOperationSet, // value set - EOperationDurationQuery, // internal duration query - EOperationPositionQuery, // internal position query - EOperationVolumeQuery, // internal volume query - EOperationMute // internal mute - }; - - /** - * An internal operation class - */ - class TOperation - { - public: - /** construction */ - TOperation( TOperationType aType ) - : iType( aType ) {} - TOperation( TOperationType aType, TInt aValue ) - : iType( aType ) - , iValue( aValue ) {} - TOperation( TMPXPlaybackProperty aProperty, TInt aValue ) - : iType( EOperationSet ) - , iProperty( aProperty ) - , iValue( aValue ) {} - TOperation( TMPXPlaybackProperty aProperty ) - : iType( EOperationValue ) - , iProperty( aProperty ) {} - - /** setters */ - void operator=( TOperationType aType ) - { - iType = aType; - } - void Set( TMPXPlaybackProperty aProperty, TInt aValue ) - { - iType = EOperationSet; - iProperty = aProperty; - iValue = aValue; - } - void Set( TMPXPlaybackProperty aProperty ) - { - iType = EOperationValue; - iProperty = aProperty; - } - void Reset() - { - iType = EOperationNone; - } - /** comparision */ - TBool operator==( TOperationType aType ) - { - return ( iType == aType ); - } - TBool Compare( TOperationType aType, TMPXPlaybackProperty aProperty ) - { - return ( iType == aType && iProperty == aProperty ); - } - TBool None() - { - return ( iType == EOperationNone ); - } - /** identifies the operation type */ - TOperationType iType; - /** playback property, if op == Value or Set */ - TMPXPlaybackProperty iProperty; - /** playback property value, if op == Set */ - TInt iValue; - }; - - /** - * A result of validation query. - * Indicates what to do with a Value- or a Set- call - */ - enum TValidationResult - { - EHandle, // handle the call in value state machine - EHandleStatic, // handle the call statically in v.s.m. - EErrorNotReady, // async error (KErrNotReady) - EErrorNotSupported, // async error (KErrNotSupported) - EIgnore // do absolutely nothing - }; - -public: // services - - /** - * A method to copy some static renderer-specific values from - * another instance of a state machine. Note that one instance is - * track specific, so track specific cached values are NOT copied, - * (track duration etc.) but renderer specific values are copied - * (volume etc) - * @param aOther another instance to copy values from - */ - void CopyValues( const CUPnPValueStateMachine& aOther ); - - /** - * See CMPXPlaybackPlugin - */ - void SetL( TMPXPlaybackProperty aProperty, TInt aValue ); - - /** - * See CMPXPlaybackPlugin - */ - void ValueL( TMPXPlaybackProperty aProperty ); - - /** - * See MUPnPRenderiongSessionObserver - */ - void VolumeResult( TInt aError, TInt aVolumeLevel, - TBool aActionResponse ); - - /** - * See MUPnPRenderiongSessionObserver - */ - void MuteResult( TInt aError, TBool aMute, TBool aActionResponse ); - - /** - * See MUPnPRenderiongSessionObserver - */ - void PositionInfoResult( TInt aStatus, const TDesC8& aTrackPosition, - const TDesC8& aTrackLength ); - - /** - * Initiates a duration request, which will be reported to - * the plugin observer as a change event - */ - void DurationQueryL(); - - /** - * Initiates a position request - */ - void PositionQueryL(); - - /** - * Initiates a volume request, which will be reported to - * the plugin observer as a change event - */ - void VolumeQueryL(); - - /** - * Initiates an internal mute request, which will not be reported. - * @param aMute if other than zero, mute will be activated - */ - void MuteRequestL( TInt aMute ); - - /** - * Validates a Value- or Set- call with given property in given - * player state. There will be a result indicating what to do with - * the call. - * @param aProperty the property to be either get or set - * @param aSetting true if setting the value, false if getting - * @param aPlayerState state of the player plugin - * @param aIsReady is remote device to gíve playback information - * @return result of validation - */ - static TValidationResult ValidatePropertyInState( - TMPXPlaybackProperty aProperty, - TBool aSetting, - TInt aPlayerState, - TBool aIsReady ); - - /** - * A static version of Value query - this one is capable of handling - * some fixed Value queries that do not need network resources - */ - static void ValueStatic( - TMPXPlaybackProperty aProperty, - MMPXPlaybackPluginObserver& aPlaybackObs ); - - /** - * Cancels any ongoing operation - * (actually it just resets the state so the result will be ignored - * and not reported) - */ - void Cancel(); - -private: - - /** - * Private default constructor - * - * @since Series 60 3.1 - * @param aParent the parent plugin instance - * @param aRenderingSession for playback commands - */ - CUPnPValueStateMachine( - CUPnPMusicPlayer& aParent, - MUPnPAVRenderingSession& aRenderingSession ); - - /** - * Checks if operations are in the queue, and executes - */ - void CheckOperationInQueueL(); - - /** - * Check if given property are in queue - * @param aProperty property to be searched - * @return Etrue if found - */ - TBool FoundFromQueue( TMPXPlaybackProperty aProperty ); - -private: // data - - /** - * Parent plugin instance - */ - CUPnPMusicPlayer& iParent; - - /** - * Rendering session - */ - MUPnPAVRenderingSession& iRendererSession; - - /** - * currently ongoing operation - */ - TOperation iCurrentOperation; - - /** - * queue of operations pending - */ - RArray iOperationQueue; - - /** - * current renderer volume level. - * cached internally to avoid unnecessary message traffic. - */ - TInt iRendererVolume; - - /** - * current renderer muted state (1 = muted, 0 = normal) - * cached internally to avoid unnecessary message traffic. - */ - TInt iRendererMuted; - - }; - - -#endif // C_UPNPVALUESTATEMACHINE_H -