upnpmpxplugins/upnpplaybackplugins/inc/upnpmusicplayer.h
branchIOP_Improvements
changeset 40 08b5eae9f9ff
parent 39 6369bfd1b60d
child 41 b4d83ea1d6e2
--- a/upnpmpxplugins/upnpplaybackplugins/inc/upnpmusicplayer.h	Mon Nov 01 13:44:24 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,454 +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:      Plugin for playing files in a remote upnp renderer
-*
-*/
-
-
-
-
-
-
-#ifndef __CUPNPMUSICPLAYER_H__
-#define __CUPNPMUSICPLAYER_H__
-
-// INCLUDES
-#include <badesca.h>
-#include <mpxplaybackplugin.h> // base class
-#include "upnpavrenderingsessionobserver.h" // Avcontrol callback
-#include "upnprendererselectorobserver.h" // for r.s.observer
-#include "upnptrackobserver.h" // for track observer
-#include "upnpaudiopolicy.h" // for audio policy observer
-
-// FORWARD DECLARATIONS
-class MUPnPAVController;
-class CUPnPSingleton;
-class MUPnPAVRenderingSession;
-class CUpnpAVDevice;
-class CUPnPTrack;
-class CUPnPPlaybackStateMachine;
-class CUPnPValueStateMachine;
-
-// CONSTANTS
-const TInt KMaxDeviceFriendlyName = 256; // from DLNA
-
-/**
- * Plugin for playing files in a remote upnp renderer.
- *
- * This class implements a CPlayerPlugin that plays
- * both local and remote files in a remote UPnP
- * renderer. The class uses UPnP framework's AVControl
- * resource to execute UPnP commands to achieve this.
- *
- * @lib upnpmusicplugins.lib
- * @since S60 v3.1
- */
-class CUPnPMusicPlayer : public CMPXPlaybackPlugin,
-                         public MUPnPAVRenderingSessionObserver,
-                         public MUPnPRendererSelectorObserver,
-                         public MUPnPTrackObserver,
-                         public MUPnPAudioPolicyObserver
-    {
-
-public:
-    
-    /**
-     * Static 1st phase constructor.
-     * 
-     * @since Series 60 3.1
-     * @param aObs reference to call back interface
-     * @return A new player instance
-     */   
-    static CUPnPMusicPlayer* NewL( MMPXPlaybackPluginObserver& aObs );
-
-    /**
-     * Destructor
-     *
-     * @since Series 60 3.1
-     */   
-    ~CUPnPMusicPlayer();
-    
-    /**
-     * Compares renderers names
-     *
-     * @since Series 60 3.1
-     * @param aRenderer current renderer to be compared
-     * @return TBool ETrue if match EFalse if not
-     */ 
-    TBool MatchRenderer( const CUpnpAVDevice* aRenderer ) const;
-    
-    /**
-     * Returns currently used renderer device
-     *
-     * @since Series 60 3.1
-     * @return CUpnpAVDevice currently used device
-     */ 
-    CUpnpAVDevice& UsedRendererDevice() const;
-    
-    /**
-     * Set Plugin state to active
-     *
-     * @param aForceInitialise
-     * @since Series 60 3.1
-     */
-    void SetActive( TBool aForceInitialise );
-
-    /**
-     * Public access to the plugin's observer
-     */
-    MMPXPlaybackPluginObserver& Observer() const;
-
-    /**
-     * Public access to the playback state machine
-     */
-    const CUPnPPlaybackStateMachine& PlaybackStateMachine() const;
-
-    /**
-     * Public access to the value state machine
-     */
-    const CUPnPValueStateMachine& ValueStateMachine() const;
-
-    /**
-     * Public access to the track
-     */
-    CUPnPTrack& Track() const;
-
-    /**
-     * State handling when playback has started.
-     * Initiates song duration query.
-     */
-    void HandlePlayStarted();
-
-    /**
-     * State handling when playback is complete.
-     * If there is another instance of plugin waiting, activates it.
-     */
-    void HandlePlayComplete();
-
-
-public: // datatypes
-
-    /**
-     * Defines internal player state
-     * 
-     * EStateUninitialised          - The plugin is in initial state and
-     *                                can not be used
-     * EStateUninitialising         - Uninitialise called.
-     * EStateInitializing           - Initialise for track is called
-     * EStateActive                 - Initialise is complete, plugin is
-     *                                readyto play
-     * EStatePreInitializing        - Plugin is doing initialisation to 
-     *                                the renderer by using
-     *                                SetNextAVTransportURI command.
-     * EStatePreInitialized         - The plugin pre-initialisation phase
-     *                                iscomplete, but plugin is not yet 
-     *                                ready to play
-     * EStateWaiting                - Another instance of the plugin is
-     *                                active. This plugin is just waiting
-     *                                for activation
-     * EStateActiveForceInitialise  - An instance that was waiting is
-     *                                activated, and is indicating that
-     *                                is in working state. However when
-     *                                it receives Play command, it will
-     *                                do normal initialisation
-     *
-     * EStatePauseInActiveForceInitialise
-     *                              - Plugin is on
-     *                                EStateActiveForceInitialise state
-     *                                and pause is called. This case 
-     *                                happens when user skip to the next
-     *                                track when playback is paused.
-     *
-     * EStateError                  - connection failure. In this state
-     *                                the plugin has resources freed and
-     *                                does not accept any requests or
-     *                                notifications. It will ignore all
-     *                                other commands except close
-     *                                
-     * @since Series 60 3.1
-     */   
-    enum TPlayerState
-        {
-        EStateNone = 0,
-        EStateUninitialised,
-        EStateUninitialising,
-        EStateInitializing,
-        EStateActive,
-        EStatePreInitializing,
-        EStatePreInitialized,
-        EStateWaiting,
-        EStateActiveForceInitialise,
-        EStatePauseInActiveForceInitialise,
-        EStateError
-        };
-        
-private:
-
-    /**
-     * Private default constructor
-     *
-     * @since Series 60 3.1
-     * @param aObs reference to call back interface
-     */   
-    CUPnPMusicPlayer( MMPXPlaybackPluginObserver& aObs );
-
-    /**
-     * 2nd phase constructor
-     *
-     * @since Series 60 3.1
-     */   
-    void ConstructL();
-    
-    /**
-     * Initializes a remote or local song for playback. 
-     *
-     * @since Series 60 3.1
-     * @param aSong URI of initialised song
-     */ 
-    void InitialiseTrackL( const TDesC& aSong );
-
-    /**
-     * Uninitialises all local resources
-     * @param aToState the target player state
-     *        (either EStateUninitialised or EStateError)
-     */
-    void UninitialiseTrack( TPlayerState aToState = EStateUninitialised );
-
-    /**
-     * Set URI of track to be playing
-     *
-     * @since Series 60 3.1
-     */
-    void SetURIL();  
-    
-    /**
-     * Changes state internally
-     * @param aNewState a new plugin state
-     *
-     * @since Series 60 3.1
-     */
-    void ChangeState( TPlayerState aNewState );
-
-    /**
-     * A string representing the plugin state
-     * @param aState a state
-     * @return a descriptive string
-     */
-    const TDesC* State( TPlayerState aState ) const;
-
-public: // From CMPXPlaybackPlugin
-
-    /**
-     * See CMPXPlaybackPlugin
-     */
-    void InitialiseL( const TDesC& aSong );
-    
-    /**
-     * See CMPXPlaybackPlugin
-     */
-    void InitialiseL( RFile& aSong );
-
-    /**
-     * See CMPXPlaybackPlugin
-     */
-    void CommandL( TMPXPlaybackCommand aCmd, TInt aData );
-
-    /**
-     * See CMPXPlaybackPlugin
-     */
-    void SetL( TMPXPlaybackProperty aProperty, TInt aValue ); 
-
-    /**
-     * See CMPXPlaybackPlugin
-     */
-    void ValueL( TMPXPlaybackProperty aProperty ) const;
-            
-    /**
-     * See CMPXPlaybackPlugin
-     */
-    void SubPlayerNamesL();
-    
-    /**
-     * See CMPXPlaybackPlugin
-     */
-    void SelectSubPlayerL(TInt aIndex) ;
-    
-    /**
-     * See CMPXPlaybackPlugin
-     */
-    const TDesC& SubPlayerName();
-    
-    /**
-     * See CMPXPlaybackPlugin
-     */
-    TInt SubPlayerIndex() const;
-    
-    /**
-     * See CMPXPlaybackPlugin
-     */
-    void MediaL( const TArray<TMPXAttribute>& aAttrs );
-    
-    /**
-     * See CMPXPlaybackPlugin
-     */
-    void CancelRequest();
-
-protected: // From MUPnPAVRenderingSessionObserver
-
-    /**
-     * See MUPnPAVRenderingSessionObserver
-     */
-    void VolumeResult( TInt aError, TInt aVolumeLevel,
-        TBool aActionResponse );
-
-    /**
-     * See MUPnPAVRenderingSessionObserver
-     */
-    void MuteResult( TInt aError, TBool aMute, TBool aActionResponse );
-
-    /**
-     * See MUPnPAVRenderingSessionObserver
-     */
-    void InteractOperationComplete( TInt aErrorCode, 
-        TUPnPAVInteractOperation aOperation );
-
-    /**
-     * See MUPnPAVRenderingSessionObserver
-     */
-    void PositionInfoResult( TInt aStatus, const TDesC8& aTrackPosition,
-        const TDesC8& aTrackLength ); 
-    
-    /**
-     * See MUPnPAVRenderingSessionObserver
-     */ 
-    void SetURIResult( TInt aError );
-    
-    /**
-     * See MUPnPAVRenderingSessionObserver
-     */
-    void SetNextURIResult( TInt aError );
-    
-    /**
-     * See MUPnPAVRenderingSessionObserver
-     */
-    void MediaRendererDisappeared( TUPnPDeviceDisconnectedReason aReason );
-    
-protected: // From MUPnPAVSessionObserverBase
-
-    /**
-     * See MUPnPAVSessionObserverBase
-     */    
-    void ReserveLocalMSServicesCompleted( TInt aError );
-
-protected: // From MUPnPRendererSelectorObserver
-
-    /**
-     * See MUPnPRendererSelectorObserver
-     */
-    void HandleSubPlayerNames( const MDesCArray* aSubPlayers, 
-        TBool aComplete, TInt aError );
-    
-    /**
-     * See MUPnPRendererSelectorObserver
-     */
-    void RendererListChanged();
-
-protected: // From MUPnPTrackObserver
-
-    /**
-     * See MUPnPTrackObserver
-     */
-    void ResolveURIComplete( TInt aError );
-
-protected: // From MUPnPAudioPolicyObserver
-
-    /**
-     * See MUPnPAudioPolicyObserver
-     */
-    void AudioConflict( TInt aError );
-
-private:
-    
-    /**
-     * Pointer to the plugin that is 
-     * active at the time
-     */
-    static CUPnPMusicPlayer*            iActivePlugIn;
-    
-    /**
-     * Pointer to the plugini that is
-     * waiting to activate (pre-initialized)
-     */
-    static CUPnPMusicPlayer*            iNextPlugIn;
-         
-    /**
-     * The singleton for AVController resources
-     */    
-    CUPnPSingleton*                     iSingleton;
-    
-    /**
-     * Pointer to renderer session
-     */
-    MUPnPAVRenderingSession*            iRendererSession;
-     
-    /**
-     * Pointer to playback state machine
-     */
-    CUPnPPlaybackStateMachine*          iPlaybackStateMachine;
-
-    /**
-     * Pointer to value state machine
-     */
-    CUPnPValueStateMachine*             iValueStateMachine;
-                      
-    /**
-     * UPnP track
-     */            
-    CUPnPTrack*                         iTrack;
-
-    /**
-     * UPnP Audio policy handler
-     */
-    CUPnPAudioPolicy*                   iAudioPolicy;
-
-    /**
-     * The currently active device. OWNED
-     */
-    CUpnpAVDevice*                      iSelectedRenderer;
-
-    /**
-     * The currently active device
-     */
-    TBuf<KMaxDeviceFriendlyName>        iSelectedRendererName;
-
-    /**
-     * The currently active device index
-     */
-    TInt                                iSelectedRendererIndex;
-
-    /**
-     * Current player state
-     */
-    TPlayerState                        iPlayerState;
-    
-    /**
-     * Tells is remote device ready to give playback information
-     * (volume, duration and position).
-     */
-    TBool                               iIsReady;
-
-    };
-
-#endif // __CUPNPMUSICPLAYER_H__
-