×
Namespaces

Variants
Actions

How to use CPeriodic for a steady stream of ticks

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata
Article
Created: vin2ktalks (30 Mar 2007)
Last edited: hamishwillee (26 Jul 2012)

In the header file

// IMPLEMENTATION SPECIFIC CONSTANTS
const TInt KPeriodicTimerInterval5Sec(5000000);
 
class CMyClass : public CBase
{
 
// ...
 
private: // New functions
 
/**
* The call back function.
* \param aAny A pointer to this class.
*/

static TInt PeriodicTimerCallBack(TAny* aAny);
 
/**
* Notice that this is a sample fuction.
*
*/

void SomeFunction();
 
private: // Member data
 
/**
* The periodic timer.
* Owned by CMyClass
*/

CPeriodic* iPeriodicTimer;
};


In the cpp file

// ----------------------------------------------------------------------------
// CMyClass::~CMyClass()
// Destructor.
// ----------------------------------------------------------------------------
//
CMyClass::~CMyClass()
{
// ...
 
if(iPeriodicTimer)
{
// Calling Cancel without checking if the timer is active is safe
iPeriodicTimer->Cancel();
}
delete iPeriodicTimer;
 
// ...
}
 
// ----------------------------------------------------------------------------
// CMyClass::ConstructL()
// Perform second phase construction of this object.
// ----------------------------------------------------------------------------
//
void CMyClass::ConstructL()
{
// ...
 
// Initialize the periodic timer.
iPeriodicTimer = CPeriodic::NewL(CActive::EPriorityIdle);
// Start the periodic timer, when ever the time elapsed
// the PeriodicTimerCallBack() will get called.
// Notice: The timer will periodically hit the PeriodicTimerCallBack
// until you cancel the timer by calling iPeriodicTimer->Cancel().
iPeriodicTimer->Start(
KPeriodicTimerInterval5Sec, KPeriodicTimerInterval5Sec,
TCallBack(PeriodicTimerCallBack, this));
 
// ...
}
 
// ----------------------------------------------------------------------------
// CMyClass::PeriodicTimerCallBack(TAny* aAny)
// The call back function.
// ----------------------------------------------------------------------------
//
TInt CMyClass::PeriodicTimerCallBack(TAny* aAny)
{
CMyClass* self = static_cast<CMyClass*>( aAny );
 
// TODO: The below call is a sample function,
// you may change it to your requirement.
self->SomeFunction();
 
// Cancel the timer when the callback should not be called again.
// Call: self->iPeriodicTimer->Cancel();
 
return KErrNone; // Return value ignored by CPeriodic
}
 
// ----------------------------------------------------------------------------
// CMyClass::SomeFunction(TAny* aAny)
// Notice that this is a sample fuction.
// ----------------------------------------------------------------------------
//
void CMyClass::SomeFunction()
{
// TODO: Your code!
}
This page was last modified on 26 July 2012, at 02:38.
23 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×