upnpmpxplugins/upnpplaybackplugins/src/upnpmusicperiodizer.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:      Periodic timer support resource
*
*/






// INCLUDES
#include "upnpmusicperiodizer.h"

const TInt KPlaybackInfoTimeOutEnd = 2000000; // 2s wait check whether 
    //the playing is ended
// ======== MEMBER FUNCTIONS ========

// --------------------------------------------------------------------------
// CUPnPMusicPeriodizer::NewL
// 1st phase constructor.
// --------------------------------------------------------------------------
//
CUPnPMusicPeriodizer* CUPnPMusicPeriodizer::NewL(
    MUPnPMusicPeriodizerObserver& aObserver,
    TInt32 aTimerWavelength )
    {
    CUPnPMusicPeriodizer* p = CUPnPMusicPeriodizer::NewLC(
        aObserver, aTimerWavelength );
    CleanupStack::Pop();
    return p;    
    }

// --------------------------------------------------------------------------
// CUPnPMusicPeriodizer::NewLC
// 1st phase constructor.
// --------------------------------------------------------------------------
//  
CUPnPMusicPeriodizer* CUPnPMusicPeriodizer::NewLC(
    MUPnPMusicPeriodizerObserver& aObserver,
    TInt32 aTimerWavelength )
    {
    
    CUPnPMusicPeriodizer* p = new(ELeave) CUPnPMusicPeriodizer( aObserver,
        aTimerWavelength );
    CleanupStack::PushL( p );
    p->ConstructL();
    return p;    
    }

// --------------------------------------------------------------------------
// CUPnPMusicPeriodizer::~CUPnPMusicPeriodizer
// Desctructor.
// --------------------------------------------------------------------------
//
CUPnPMusicPeriodizer::~CUPnPMusicPeriodizer()
    {
    // No implementation required
    }

// --------------------------------------------------------------------------
// CUPnPMusicPeriodizer::CUPnPMusicPeriodizer
// Default constructor.
// --------------------------------------------------------------------------
//
CUPnPMusicPeriodizer::CUPnPMusicPeriodizer(
    MUPnPMusicPeriodizerObserver& aObserver,
    TInt32 aTimerWavelength )
    :CTimer( EPriorityStandard ),
    iObserver( aObserver ),
    iTimerWavelength( aTimerWavelength )
    {
    // No implementation required
    }

// --------------------------------------------------------------------------
// CUPnPMusicPeriodizer::ConstructL
// --------------------------------------------------------------------------
//
void CUPnPMusicPeriodizer::ConstructL()
    {
    CTimer::ConstructL();
    CActiveScheduler::Add(this);
    }
 
// --------------------------------------------------------------------------
// Periodizer services
// --------------------------------------------------------------------------

// --------------------------------------------------------------------------
// CUPnPMusicPeriodizer::Start
// Starts the periodizer.
// --------------------------------------------------------------------------
//
void CUPnPMusicPeriodizer::Start()
    {
    if ( !IsActive() )
        {
        After( TTimeIntervalMicroSeconds32( iTimerWavelength ) );
        }
    }

// --------------------------------------------------------------------------
// CUPnPMusicPeriodizer::Continue
// Continues a next step for the periodizer.
// --------------------------------------------------------------------------
//
void CUPnPMusicPeriodizer::Continue()
    {
    After( TTimeIntervalMicroSeconds32( iTimerWavelength ) );
    }

// --------------------------------------------------------------------------
// CUPnPMusicPeriodizer::RunL
// Receives the timer triggering.
// --------------------------------------------------------------------------
//
void CUPnPMusicPeriodizer::RunL()
    {
    // deliver the periodic event to the observer
    if ( iTimerWavelength == KPlaybackInfoTimeOutEnd )
        {
        iObserver.HandlePeriodForEnd();
        }
    else
        {
        iObserver.HandlePeriod();
        }
    }
    
// --------------------------------------------------------------------------
// CUPnPMusicPeriodizer::Stop
// Stops periodizer.
// --------------------------------------------------------------------------
//
void CUPnPMusicPeriodizer::Stop()
    {
    Cancel();
    }