upnpmpxplugins/upnpplaybackplugins/src/upnpaudiopolicy.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:52:00 +0200
changeset 0 7f85d04be362
permissions -rw-r--r--
Revision: 200947 Kit: 200951

/*
* 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:      Audio policy implementation for upnp remote plugin
*
*/






// INCLUDES
#include <mmf/common/mmfbase.h> // MMF base classes

#include <S60FourCC.h>
#include <AudioPreference.h>
#include "upnpaudiopolicy.h" // myself

_LIT( KComponentLogfile, "musicplugins.txt");
#include "upnplog.h"
// CONSTANTS

// ======== MEMBER FUNCTIONS ========

// --------------------------------------------------------------------------
// CUPnPAudioPolicy::NewL
// 1st phase constructor.
// --------------------------------------------------------------------------
//
CUPnPAudioPolicy* CUPnPAudioPolicy::NewL(
    MUPnPAudioPolicyObserver& aObserver )
    {
    __LOG( "CUPnPAudioPolicy::NewL 1" );
    CUPnPAudioPolicy* self =
        new(ELeave) CUPnPAudioPolicy( aObserver );
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop( self );
    return self;
    }

// --------------------------------------------------------------------------
// CUPnPAudioPolicy::CUPnPAudioPolicy
// Default constructor.
// --------------------------------------------------------------------------
// 
CUPnPAudioPolicy::CUPnPAudioPolicy(
    MUPnPAudioPolicyObserver& aObserver )
    : iObserver( aObserver )
    , iAudioPolicyState( EStateUninitialised )
    {
    }

// --------------------------------------------------------------------------
// CUPnPTrack::ConstructL
// --------------------------------------------------------------------------
//  
void CUPnPAudioPolicy::ConstructL()
    {
    __LOG( "CUPnPAudioPolicy::ConstructL" );
    iDevSound = CMMFDevSound::NewL();
    __LOG( "CUPnPAudioPolicy::ConstructL end" );
    }

// --------------------------------------------------------------------------
// CUPnPAudioPolicy::CUPnPAudioPolicy
// destructor.
// --------------------------------------------------------------------------
//
CUPnPAudioPolicy::~CUPnPAudioPolicy()
    {
    __LOG( "CUPnPAudioPolicy destructor" );
    delete iDevSound;
    }

// --------------------------------------------------------------------------
// CUPnPAudioPolicy::PlayL
// requests for playback start
// --------------------------------------------------------------------------
//
void CUPnPAudioPolicy::PlayL()
    {
    __LOG( "CUPnPAudioPolicy::PlayL()" );
    __LOG1( "CUPnPAudioPolicy::PlayL in state(%d)", TInt(iAudioPolicyState) );

    // Ignore if already on playing state
    if( iAudioPolicyState != EStatePlaying )
        {
        __LOG( "CUPnPAudioPolicy: initialising devsound" );
        TRAPD( err, iDevSound->InitializeL(
            *this, KFourCCCodeNokiaUPnP, EMMFStatePlaying ) );
        if( err != KErrNone )
            {
            __LOG1( "CUPnPAudioPolicy: DevSound initialize err:(%d)",err );
            }
        }
    }

// --------------------------------------------------------------------------
// CUPnPAudioPolicy::Stop
// indicates playback will stop
// --------------------------------------------------------------------------
//
void CUPnPAudioPolicy::Stop()
    {
    __LOG( "CUPnPAudioPolicy::Stop()" );
    __LOG1( "CUPnPAudioPolicy::Stop in state(%d)", TInt(iAudioPolicyState) );

    // Ignore if already on stopped state
    if( iAudioPolicyState == EStatePlaying )
        {
        iAudioPolicyState = EStateStopped;
        iDevSound->Stop();
        }
    }

// --------------------------------------------------------------------------
// CUPnPAudioPolicy::InitializeComplete
// from MDevSoundObserver
// --------------------------------------------------------------------------
//
void CUPnPAudioPolicy::InitializeComplete( TInt aError )
    {
    __LOG1( "CUPnPAudioPolicy::InitializeComplete(%d)", aError );
    __LOG1( "CUPnPAudioPolicy::InitializeCompl in state(%d)",
        TInt(iAudioPolicyState) );
    if( aError == KErrNone && iAudioPolicyState != EStatePlaying )
        {
        __LOG( "CUPnPAudioPolicy: priority settings" );
        TMMFPrioritySettings mmfPrioSettings;
        mmfPrioSettings.iPriority = KAudioPriorityUPnPRemotePlayback;
        mmfPrioSettings.iPref =
            (TMdaPriorityPreference)KAudioPrefUPnPPlayback;
        mmfPrioSettings.iState = EMMFStatePlaying;
        iDevSound->SetPrioritySettings(mmfPrioSettings);
        
        __LOG( "CUPnPAudioPolicy::InitializeComple calling PlayInitL.." );
        TRAPD( err, iDevSound->PlayInitL() );
        if( err == KErrNone )
            {
            iAudioPolicyState = EStatePlaying;
            }
        else
            {
            __LOG1( "CUPnPAudioPolicy: PlayInitL err:(%d)", err );
            }
        __LOG( "CUPnPAudioPolicy::InitializeComplete - end" );
        }
    }

// --------------------------------------------------------------------------
// CUPnPAudioPolicy::PlayError
// from MDevSoundObserver
// --------------------------------------------------------------------------
//
void CUPnPAudioPolicy::PlayError( TInt aError )
    {
    __LOG1( "CUPnPAudioPolicy::PlayError(%d)", aError );
    __LOG1( "CUPnPAudioPolicylicy::PlayError in state(%d)",
        TInt(iAudioPolicyState) );
    if ( aError == KErrDied || aError == KErrInUse )
        {
        iAudioPolicyState = EStateStopped;
        iObserver.AudioConflict( aError );
        }
    }

// --------------------------------------------------------------------------
// Unused callbacks from MDevSoundObserver
// --------------------------------------------------------------------------
void CUPnPAudioPolicy::ToneFinished( TInt /*aError*/ )
    {
    __LOG( "CUPnPAudioPolicy::ToneFinished()" );
    }
void CUPnPAudioPolicy::BufferToBeFilled( CMMFBuffer* /*aBuffer*/ )
    {
    __LOG( "CUPnPAudioPolicy::BufferToBeFilled()" );
    }
void CUPnPAudioPolicy::DeviceMessage( TUid /*aMessageType*/,
    const TDesC8& /*aMsg*/ )
    {
    __LOG( "CUPnPAudioPolicy::DeviceMessage()" );
    }
void CUPnPAudioPolicy::SendEventToClient( const TMMFEvent& /*aEvent*/ )
    {
    __LOG( "CUPnPAudioPolicy::SendEventToClient()" );
    }
void CUPnPAudioPolicy::RecordError( TInt /*aError*/ )
    {
    __LOG( "CUPnPAudioPolicy::RecordError()" );
    }
void CUPnPAudioPolicy::ConvertError( TInt /*aError*/ )
    {
    __LOG( "CUPnPAudioPolicy::ConvertError()" );
    }
void CUPnPAudioPolicy::BufferToBeEmptied( CMMFBuffer* /*aBuffer*/ )
    {
    __LOG( "CUPnPAudioPolicy::BufferToBeEmptied()" );
    }