eapol/eapol_framework/eapol_symbian/am/core/symbian/EapolTimer.cpp
changeset 0 c8830336c852
child 2 1c7bc153c08e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eapol/eapol_framework/eapol_symbian/am/core/symbian/EapolTimer.cpp	Thu Dec 17 08:47:43 2009 +0200
@@ -0,0 +1,181 @@
+/*
+* Copyright (c) 2001-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:  EAP and WLAN authentication protocols.
+*
+*/
+
+
+// This is enumeration of EAPOL source code.
+#if defined(USE_EAP_MINIMUM_RELEASE_TRACES)
+	#undef EAP_FILE_NUMBER_ENUM
+	#define EAP_FILE_NUMBER_ENUM 164 
+	#undef EAP_FILE_NUMBER_DATE 
+	#define EAP_FILE_NUMBER_DATE 1127594498 
+#endif //#if defined(USE_EAP_MINIMUM_RELEASE_TRACES)
+
+
+// INCLUDE FILES
+#include "eap_am_memory.h"
+#include "EapolTimer.h"
+#include "eap_tools.h"
+#include "eap_am_tools.h"
+#include "abs_eap_am_tools.h"
+#include "abs_eap_am_mutex.h"
+#include "eap_am_tools_symbian.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+CEapolTimer::CEapolTimer(abs_eap_am_tools_c * const aTools) 
+: CTimer(CTimer::EPriorityStandard)
+, iTools(aTools)
+{
+	// Set a flag in EAPOL that specifies that timer queue can be used.
+	reinterpret_cast<eap_am_tools_symbian_c *>(iTools)->set_use_timer_queue();
+}
+
+
+//--------------------------------------------------
+
+void CEapolTimer::ConstructL()
+{
+	CTimer::ConstructL();
+}
+
+//--------------------------------------------------
+
+CEapolTimer* CEapolTimer::NewL(abs_eap_am_tools_c * const aTools)
+{
+	CEapolTimer* self = new (ELeave) CEapolTimer(aTools);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;
+}
+
+//--------------------------------------------------
+
+CEapolTimer::~CEapolTimer()
+{
+	Cancel();
+}
+
+//--------------------------------------------------
+
+void CEapolTimer::StartTimer(const TUint aInterval)
+{	
+	EAP_TRACE_DEBUG(
+		iTools,
+		TRACE_FLAGS_TIMER_QUEUE,
+		(EAPL("CEapolTimer::StartTimer().\n")));
+
+	iInterval = aInterval;
+	iStartTime = iTools->get_clock_ticks();
+	
+	iLastTime = iStartTime;
+	
+	// Start the timer
+	After(iInterval*1000);
+}
+
+//--------------------------------------------------
+void CEapolTimer::StopTimer()
+{
+	EAP_TRACE_DEBUG(
+		iTools,
+		TRACE_FLAGS_TIMER_QUEUE,
+		(EAPL("CEapolTimer::StopTimer().\n")));
+
+	Cancel();
+}
+//--------------------------------------------------
+
+TBool CEapolTimer::TimerRunning()
+{
+	if (!IsActive())
+	{
+		EAP_TRACE_DEBUG(
+			iTools,
+			TRACE_FLAGS_TIMER_QUEUE,
+			(EAPL("CEapolTimer::TimerRunning(): EFalse.\n")));
+
+		return EFalse;
+	}
+	else
+	{
+		EAP_TRACE_DEBUG(
+			iTools,
+			TRACE_FLAGS_TIMER_QUEUE,
+			(EAPL("CEapolTimer::TimerRunning(): ETrue.\n")));
+
+		return ETrue;
+	}
+}
+
+void CEapolTimer::RunL()
+{
+	EAP_TRACE_DEBUG(
+		iTools,
+		TRACE_FLAGS_TIMER_QUEUE,
+		(EAPL("CEapolTimer::RunL().\n")));
+
+	u64_t currentTime = iTools->get_clock_ticks();
+
+	iLastTime = currentTime;
+
+	u32_t next_sleep_time = iInterval;
+
+	iTools->enter_global_mutex();
+	if (iTools->get_is_timer_thread_active())
+	{
+		EAP_TRACE_DEBUG(
+			iTools,
+			TRACE_FLAGS_TIMER_QUEUE,
+			(EAPL("CEapolTimer::RunL(): pulse_timer().\n")));
+
+		next_sleep_time = iTools->pulse_timer(next_sleep_time);
+	}
+	iTools->leave_global_mutex();
+
+	// Setup timer again (if somebody inside pulse_timer has not already done it...)
+	if (!IsActive())
+	{
+		EAP_TRACE_DEBUG(
+			iTools,
+			TRACE_FLAGS_TIMER_QUEUE,
+			(EAPL("CEapolTimer::RunL(): After().\n")));
+
+		After(next_sleep_time*1000);
+	}
+	else
+	{
+		EAP_TRACE_DEBUG(
+			iTools,
+			TRACE_FLAGS_TIMER_QUEUE,
+			(EAPL("CEapolTimer::RunL(): is active.\n")));
+	}
+}
+//--------------------------------------------------
+
+void CEapolTimer::DoCancel()
+{
+	EAP_TRACE_DEBUG(
+		iTools,
+		TRACE_FLAGS_TIMER_QUEUE,
+		(EAPL("CEapolTimer::DoCancel().\n")));
+
+	  // Base class
+	CTimer::DoCancel();
+}
+
+// End of file