radioapp/radioenginewrapper/tsrc/src/t_schedulerstartandstoptimer.cpp
branchRCL_3
changeset 19 cce62ebc198e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radioenginewrapper/tsrc/src/t_schedulerstartandstoptimer.cpp	Tue Aug 31 15:15:02 2010 +0300
@@ -0,0 +1,153 @@
+/*
+* Copyright (c) 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:  Implementation of a timer interface.
+*
+*/
+
+
+
+#include "t_schedulerstartandstoptimer.h"
+#include "trace.h"
+
+
+// ======== LOCAL FUNCTIONS ========
+
+
+// ======== MEMBER FUNCTIONS ========
+
+
+// -----------------------------------------------------------------------------
+// CAccSrvResetInactivityTimeTimer::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CSchedulerStopAndStartTimer* CSchedulerStopAndStartTimer::NewL(
+        MSchedulerStartAndStopTimerObserver& aSchedulerStartAndStopTimerObserver )
+    {
+    FUNC_LOG;
+
+    CSchedulerStopAndStartTimer* self = new ( ELeave ) CSchedulerStopAndStartTimer(
+            aSchedulerStartAndStopTimerObserver );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+
+// Destructor
+CSchedulerStopAndStartTimer::~CSchedulerStopAndStartTimer()
+    {
+    FUNC_LOG;
+    Cancel();
+    }
+
+// -----------------------------------------------------------------------------
+// CSchedulerStopAndStartTimer::StartTimer
+// .
+// -----------------------------------------------------------------------------
+//
+void CSchedulerStopAndStartTimer::StartTimer(
+        TInt aTime,
+        TUint aTimerId  )
+    {
+    FUNC_LOG;
+    INFO_2( "Timer Id: %d, Time: %d", aTimerId, aTime)
+    iTime = aTime;
+    iTimerId = aTimerId;
+
+    if ( ETimerIdRunMUT == iTimerId )
+        {
+        After( ( TTimeIntervalMicroSeconds32 ) iTime );
+        }
+    else
+        {
+        After( ( TTimeIntervalMicroSeconds32 ) 1 );
+        }
+    CActiveScheduler::Start();
+    }
+
+// -----------------------------------------------------------------------------
+// CSchedulerStopAndStartTimer::RunL
+// 
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CSchedulerStopAndStartTimer::RunL()
+    {
+    FUNC_LOG;
+    if ( ETimerIdCreateMUT == iTimerId )
+        {
+        iSchedulerStartAndStopTimerObserver.CreateMUT();
+        iTimerId = ETimerIdRunMUT;
+        After( ( TTimeIntervalMicroSeconds32 ) iTime );        
+        }
+    else if ( ETimerIdDeleteMUT == iTimerId )
+        {
+        iSchedulerStartAndStopTimerObserver.DeleteMUT();
+        CActiveScheduler::Stop();
+        }
+    else
+        {
+        CActiveScheduler::Stop();
+        iSchedulerStartAndStopTimerObserver.Timeout( iTimerId );        
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CSchedulerStopAndStartTimer::RunError
+// Returns KErrNone
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CSchedulerStopAndStartTimer::RunError( TInt aError )
+    {
+    FUNC_LOG;
+     // Avoid Panic in CActiveScheduler
+    aError = KErrNone;
+    return aError;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CSchedulerStopAndStartTimer::CSchedulerStopAndStartTimer
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CSchedulerStopAndStartTimer::CSchedulerStopAndStartTimer(
+        MSchedulerStartAndStopTimerObserver& aSchedulerStartAndStopTimerObserver) : 
+    CTimer( CActive::EPriorityStandard ),
+    iSchedulerStartAndStopTimerObserver( aSchedulerStartAndStopTimerObserver )
+    {
+    FUNC_LOG;
+    }
+
+// -----------------------------------------------------------------------------
+// CAccSrvProcessCommandTimer::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CSchedulerStopAndStartTimer::ConstructL()
+    {
+    FUNC_LOG;
+    CTimer::ConstructL();
+    CActiveScheduler* AS = CActiveScheduler::Current();
+    CActiveScheduler::Add( this );
+    }
+
+
+// ======== GLOBAL FUNCTIONS ========
+