How to start a heartbeat timer

Provides code snippet to show you how to start a heartbeat timer.

A heartbeat timer, CHeartbeat, invokes a function at regular intervals. You must define a class that implements the MBeating interface to define:

  • a function Beat() that is called if the heartbeat timer is in synchronisation with the system clock

  • a function Synchronize() that is called if the heartbeat timer has got out of synchronisation with the system clock

First, we define a class CHeartbeatRunner class that derives from MBeating.

class CHeartbeatRunner: public MBeating
    {
public:
    // Implement MBeating
    void Beat();
    void Synchronize();

    // Start timer
    void StartTimer();
private:
    CHeartbeat* iHeartbeat;
};

Then, we can start the heartbeat timer. We pass the time interval for the beats (allowable intervals are defined in 1/12s of a second by TTimerLockSpec), and the object implementing MBeating.

void CHeartbeatRunner::StartTimer()
    {
    iHeartbeat=CHeartbeat::NewL(0); // neutral priority
    iHeartbeat->Start(ETwelveOClock,this); // 1 second intervals
    }