#include "MemoryMonitor.h"
#include <hal.h>
CMemoryMonitor::CMemoryMonitor(MMemoryMonitorObserver& aObserver)
: CActive(EPriorityHigh), iObserver(aObserver), iRefreshRate(1)
{
User::LeaveIfError(iTimer.CreateLocal());
CActiveScheduler::Add(this);
}
CMemoryMonitor::~CMemoryMonitor()
{
Deque();
iTimer.Close();
}
void CMemoryMonitor::RunL()
{
if(iStatus == KErrNone)
{
HAL::Get(HAL::EMemoryRAMFree, iFreeRAM);
iObserver.FreeMemoryEventL(iFreeRAM >> 10);
iTimer.After(iStatus, iRefreshRate*1000000);
SetActive();
}
else
{ }
}
void CMemoryMonitor::DoCancel()
{
iTimer.Cancel();
}
void CMemoryMonitor::StopL()
{
Cancel();
}
void CMemoryMonitor::StartL()
{
iTimer.After(iStatus, 1000);
SetActive();
}