keepalive/flextimer/client/src/flextimer.cpp
changeset 32 5c4486441ae6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/keepalive/flextimer/client/src/flextimer.cpp	Mon May 24 20:51:35 2010 +0300
@@ -0,0 +1,171 @@
+/*
+ * Copyright (c) 2010 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 CFlexTimer class
+ *
+ */
+
+/*
+ * %version: 1 %
+ */
+//#include <e32panic.h>
+
+#include "flextimer.h"
+#include "flextimerpanic.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "flextimerTraces.h"
+#endif
+
+// ---------------------------------------------------------------------------
+// Destructs the object.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CFlexTimer::~CFlexTimer()
+    {
+    OstTrace1( TRACE_NORMAL, CFLEXTIMER_CFLEXTIMER,
+               "CFlexTimer::~CFlexTimer;this=%x", this );
+    
+    Cancel();
+    iTimer.Close();
+    }
+
+// ---------------------------------------------------------------------------
+// Fire timer at latest on the given interval. 32-bit interval.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFlexTimer::After( TTimeIntervalMicroSeconds32 aInterval )
+    {
+    OstTraceExt2( TRACE_NORMAL, CFLEXTIMER_AFTER32,
+                  "CFlexTimer::After32;this=%x;aInterval=%d",
+                  ( TUint )this, aInterval.Int() );
+    
+    __ASSERT_ALWAYS( IsAdded(),
+                     User::Panic( KCFlexTimerPanicCat, 
+                                  EFlexTimerNotAddedToActiveScheduler ) );
+    iTimer.After( iStatus, aInterval );
+    SetActive();
+    }
+
+// ---------------------------------------------------------------------------
+// Fire timer at latest on the given interval. 64-bit interval.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFlexTimer::After( TTimeIntervalMicroSeconds aInterval )
+    {
+    OstTraceExt2( TRACE_NORMAL, CFLEXTIMER_AFTER64,
+                  "CFlexTimer::After64;this=%x;aInterval=%llu",
+                  ( TUint )this, aInterval.Int64() );
+    
+    __ASSERT_ALWAYS( IsAdded(),
+                     User::Panic(KCFlexTimerPanicCat,
+                                 EFlexTimerNotAddedToActiveScheduler ) );
+    iTimer.After( iStatus, aInterval );
+    SetActive();
+    }
+
+// ---------------------------------------------------------------------------
+// Fire timer between at latest by the given time value.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFlexTimer::At( const TTime& aTime )
+    {
+    OstTraceExt2( TRACE_NORMAL, CFLEXTIMER_AT,
+                  "CFlexTimer::At;this=%x;aTime=%lld", ( TUint )this,
+                  aTime.Int64() );
+    
+    __ASSERT_ALWAYS( IsAdded(),
+                     User::Panic( KCFlexTimerPanicCat,
+                                  EFlexTimerNotAddedToActiveScheduler ) );
+    iTimer.At( iStatus, aTime );
+    SetActive();
+    }
+
+// ---------------------------------------------------------------------------
+// Fire timer between at latest by the given time value.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFlexTimer::AtUTC( const TTime& aTime )
+    {
+    OstTraceExt2( TRACE_NORMAL, CFLEXTIMER_ATUTC,
+                  "CFlexTimer::AtUTC;this=%x;aTime=%lld",
+                  ( TUint )this, aTime.Int64() );
+    
+    __ASSERT_ALWAYS( IsAdded(),
+                     User::Panic(KCFlexTimerPanicCat,
+                                 EFlexTimerNotAddedToActiveScheduler ) );
+    iTimer.AtUTC( iStatus, aTime );
+    SetActive();
+    }
+
+// ---------------------------------------------------------------------------
+// Sets the window size in which alignment is possible for the timer.
+// This is a synchronous command. 32-bit function argument.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CFlexTimer::Configure( TTimeIntervalMicroSeconds32 aWindowSize )
+    {
+    OstTraceExt2( TRACE_NORMAL, CFLEXTIMER_CONFIGURE,
+                  "CFlexTimer::Configure32;this=%x;aWindowSize=%d",
+                  ( TUint )this, aWindowSize.Int() );
+    
+    return iTimer.Configure( aWindowSize );
+    }
+
+// ---------------------------------------------------------------------------
+// Sets the window size in which alignment is possible for the timer.
+// This is a synchronous command. 64-bit function argument.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CFlexTimer::Configure( TTimeIntervalMicroSeconds aWindowSize )
+    {
+    OstTraceExt2( TRACE_NORMAL, DUP1_CFLEXTIMER_CONFIGURE,
+                  "CFlexTimer::Configure64;this=%x;aWindowSize=%lld",
+                  ( TUint )this, aWindowSize.Int64() );
+    
+    return iTimer.Configure( aWindowSize );
+    }
+
+// ---------------------------------------------------------------------------
+// Constructs the object. Connects to the server and create a session.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFlexTimer::ConstructL()
+    {
+    OstTrace1( TRACE_NORMAL, CFLEXTIMER_CONSTRUCTL,
+               "CFlexTimer::ConstructL;this=%x", ( TUint )this );
+    
+    User::LeaveIfError(iTimer.Connect());
+    }
+
+// ---------------------------------------------------------------------------
+// Constructs the object.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CFlexTimer::CFlexTimer( TInt aPriority ) :
+    CActive( aPriority )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// Inherited from CActive. Handles the object canceling operations.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFlexTimer::DoCancel()
+    {
+    OstTrace1( TRACE_NORMAL, CFLEXTIMER_DOCANCEL,
+               "CFlexTimer::DoCancel;this=%x", ( TUint )this );
+    
+    iTimer.Cancel();
+    }
+