email/email/smtp/src/T_StartRamUsageTimer.cpp
branchSymbian2
changeset 1 8758140453c0
child 6 c108117318cb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/email/smtp/src/T_StartRamUsageTimer.cpp	Thu Jan 21 12:53:44 2010 +0000
@@ -0,0 +1,148 @@
+// Copyright (c) 2007-2009 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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file 
+// [TestStep Name]
+// StartRamUsageTimer
+// [Paramaters]
+// IntervalTimeInMicroSecs			<input>	: The interval between events generated
+// after the initial delay, in microseconds
+// Starts periodical measurement of RAM memory used and updates the information kept
+// in SMTP testserver.
+// [APIs Used]
+// 
+//
+
+
+
+// User includes 
+#include "T_StartRamUsageTimer.h"
+#include "T_MsgSharedDataSmtp.h"
+
+// Epoc includes
+#include <hal.h>
+#include <hal_data.h>
+
+// Literals used
+_LIT(KIntervalTimeInMicroSecs, "IntervalTimeInMicroSecs");
+
+/**
+  Function 		: CT_StartRamUsageTimer
+  Description 	: Constructor
+  @return 		: none
+*/
+CT_StartRamUsageTimer::CT_StartRamUsageTimer(CT_MsgSharedDataSmtp& aSharedDataSMTP)
+:CT_MsgAsyncStepSMTP(aSharedDataSMTP)
+	{
+	SetTestStepName(KStartRamUsageTimer);
+	}
+
+/**
+  Function 		: ~CT_StartRamUsageTimer
+  Description 	: Destructor
+  @return 		: N/A
+*/
+CT_StartRamUsageTimer::~CT_StartRamUsageTimer()
+	{}
+	
+
+/**
+  Function 		: doTestStepL
+  Description 	: Generate a periodic Timer event and handle the RAM usage callback function
+  @return 		: TVerdict Test result
+*/
+TVerdict CT_StartRamUsageTimer::doTestStepL()
+	{
+	INFO_PRINTF1(_L("TestStep :StartRamUsageTimer"));
+	TInt intervalTime = 0;	
+	if(!GetIntFromConfig(ConfigSection(),KIntervalTimeInMicroSecs,intervalTime))
+		{
+		ERR_PRINTF1(_L("Interval time is not specified"));
+		SetTestStepResult(EFail);
+		}
+	else
+		{
+		iSharedDataSMTP.iPeriodic->Start(intervalTime, intervalTime, TCallBack(RamUsage,this));
+		}
+	return TestStepResult();	
+	}
+
+/**
+  Function 		: RamUsage
+  Description 	: Call non-static method DoRamUsage
+  @return 		: TInt
+*/
+TInt CT_StartRamUsageTimer::RamUsage(TAny* aObject)
+	{
+	// Cast, and call non-static function
+	((CT_StartRamUsageTimer *)aObject)->DoRamUsage();	
+	return 1;	
+	}
+
+/**
+  Function 		: DoRamUsage
+  Description 	: Calculate the RAM usage value and percentage at a particular instance 
+  @return 		: void
+*/	
+void CT_StartRamUsageTimer::DoRamUsage()
+	{
+	
+	TInt fullRamValue;
+	TInt ramFreeValue;
+	
+	HAL 	data;
+	HALData haldata;
+	
+	data.Get(haldata.EMemoryRAM, fullRamValue);
+	data.Get(haldata.EMemoryRAMFree, ramFreeValue);	
+	
+	TInt ramUsage = ((fullRamValue - ramFreeValue)/(1024));
+	
+	if ( iSharedDataSMTP.iMark != EFalse )
+		{
+		iSharedDataSMTP.iStartRamValue = ramUsage;
+		iSharedDataSMTP.iMinRamValue = ramUsage;
+		iSharedDataSMTP.iMaxRamValue = ramUsage;
+		iSharedDataSMTP.iMark = EFalse;
+		}
+	
+	if ( iSharedDataSMTP.iMinRamValue > ramUsage )
+		{
+		iSharedDataSMTP.iMinRamValue = ramUsage;
+		}
+		
+	if ( iSharedDataSMTP.iMaxRamValue < ramUsage )
+		{
+		iSharedDataSMTP.iMaxRamValue = ramUsage;
+		}
+	
+	iSharedDataSMTP.iEndRamValue = ramUsage;
+	}
+	
+
+	
+/**
+  Function 		: ProgressL
+  Description 	: Displays the progress information of the asynchronous operation
+  @return 		: void
+*/
+void CT_StartRamUsageTimer::ProgressL(TBool /*aFinal*/)
+	{}
+
+/**
+  Function 		: CancelStep
+  Description 	: Cancels the asynchronous operation
+  @return 		: void
+*/
+void CT_StartRamUsageTimer::CancelStep()
+	{}