PIP  0.4.0_beta2
Platform-Independent Primitives
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PITimer Class Reference

Timer. More...

+ Inheritance diagram for PITimer:

Public Member Functions

 PITimer (TimerEvent slot=0, void *data=0, bool threaded=true)
 Constructs timer with execution function slot and common data data.
 
void setData (void *data_)
 Set custom data.
 
void setSlot (TimerEvent slot)
 Set timer execution function.
 
double interval () const
 Returns current loop delay.
 
void addDelimiter (int delim, TimerEvent slot=0)
 Add frequency delimiter delim with optional delimiter slot slot.
 
void removeDelimiter (int delim)
 Remove all frequency delimiters delim.
 
void removeDelimiter (TimerEvent slot)
 Remove all frequency delimiters with slot slot.
 
void removeDelimiter (int delim, TimerEvent slot)
 Remove all frequency delimiters delim with slot slot.
 
double elapsed_n ()
 Returns nanoseconds elapsed from last reset() execution or from timer creation.
 
double elapsed_u ()
 Returns microseconds elapsed from last reset() execution or from timer creation.
 
double elapsed_m ()
 Returns milliseconds elapsed from last reset() execution or from timer creation.
 
double elapsed_s ()
 Returns seconds elapsed from last reset() execution or from timer creation.
 
PISystemTime reset_time ()
 Returns time mark of last reset() execution or timer creation.
 
- Public Member Functions inherited from PIObject
 PIObject (const PIString &name=PIString())
 Contructs PIObject with name "name".
 
PIString name () const
 Returns object name.
 
virtual const char * className () const
 Returns object class name.
 
bool debug () const
 Return if debug of this object is active.
 
void setName (const PIString &name)
 Set object name.
 
void setDebug (bool debug)
 Set object debug active.
 
const PIMap< PIString,
PIVariant > & 
properties () const
 Returns properties of the object.
 
int propertiesCount () const
 Returns properties count of the object.
 
PIVariant property (const PIString &name) const
 Returns property with name "name".
 
void setProperty (const PIString &name, const PIVariant &value)
 Set property with name "name" to "value". If there is no such property in object it will be added.
 
bool isPropertyExists (const PIString &name) const
 Returns if property with name "name" exists.
 

Static Public Member Functions

static double elapsed_system_n ()
 Returns nanoseconds representation of current system time.
 
static double elapsed_system_u ()
 Returns microseconds representation of current system time.
 
static double elapsed_system_m ()
 Returns milliseconds representation of current system time.
 
static double elapsed_system_s ()
 Returns seconds representation of current system time.
 
- Static Public Member Functions inherited from PIObject
static void piDisconnect (PIObject *src, const PIString &sig)
 Disconnect object "src" from all connections with event name "sig".
 
static void piDisconnect (PIObject *src)
 Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
 
static PIObjectfindByName (const PIString &name)
 Returns PIObject* with name "name" or 0, if there is no object found.
 

Protected Member Functions

virtual void tick (void *data, int delimiter)
 
- Protected Member Functions inherited from PIObject
PIObjectemitter () const
 Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
 
virtual void propertyChanged (const PIString &name)
 Virtual function executes after property with name "name" has been changed.
 

Handlers

void reset ()
 Set internal time mark to current system time. More...
 
void start (int msecs)
 Start timer with msecs loop delay. More...
 
void start (double msecs)
 Start timer with msecs loop delay. More...
 
void deferredStart (double interval_msecs, double delay_msecs)
 Start timer with interval_msecs loop delay after delay_msecs delay. More...
 
void deferredStart (double interval_msecs, const PIDateTime &start_datetime)
 Start timer with interval_msecs loop delay after start_datetime date and time. More...
 
void stop ()
 Stop timer.
 
void clearDelimiters ()
 Remove all frequency delimiters.
 

Events

void timeout (void *data, int delimiter)
 Raise on timer tick. More...
 

Additional Inherited Members

Detailed Description

Timer.

Synopsis

This class implements timer function. PIP timers supports 3 way to tick notify, frequency delimiters and time measurements.

Notify variants

Notify variants:

Frequency delimiters

Frequency delimiter is an integer number and "slot" function. If "slot" function is null timer main "slot" will be used. Each delimiter numbers tick timer will be execute delimiters or timer main "slot" function with delimiter value = delimiter number. Example:

void tfunc(void * , int delim) {
piCout << "tick with delimiter" << delim;
};
void tfunc4(void * , int delim) {
piCout << "tick4 with delimiter" << delim;
};
int main() {
PITimer timer(tfunc);
timer.addDelimiter(2);
timer.addDelimiter(4, tfunc4);
timer.start(50);
piMSleep(200);
timer.stop();
timer.waitForFinish();
return 0;
};
/* Result:
tick with delimiter 1
tick with delimiter 1
tick with delimiter 2
tick with delimiter 1
tick with delimiter 1
tick with delimiter 2
tick4 with delimiter 4
*/

Time measurements

PITimer can be used as time measurer. Function reset() set time mark to current system time, then functions double elapsed_*() returns time elapsed from this mark. These functions can returns nano-, micro-, milli- and seconds with suffixes "n", "u", "m" and "s"; Example:

int main() {
PITimer timer;
piMSleep(100);
piCout << "elapsed" << timer.elapsed_m() << "ms";
piMSleep(100);
piCout << "elapsed" << timer.elapsed_m() << "ms";
timer.reset();
piMSleep(150);
piCout << "elapsed" << timer.elapsed_s() << "s";
return 0;
};
/* Result:
elapsed 100 ms
elapsed 200 ms
elapsed 0.15 s
*/

Member Function Documentation

void PITimer::reset ( )
inline

Set internal time mark to current system time.

This function used for set start time mark. Later you can find out elapsed time from this time mark to any moment of time with elapsed_s(), elapsed_m(), elapsed_u() or elapsed_n() function.

See Also
elapsed_s(), elapsed_m(), elapsed_u(), elapsed_n()
void PITimer::start ( int  msecs)
inline

Start timer with msecs loop delay.

Start execution of timer functions with frequency = 1 / msecs Hz.

void PITimer::start ( double  msecs)

Start timer with msecs loop delay.

Start execution of timer functions with frequency = 1. / msecs Hz. Instead of start(int msecs) function this variant allow start timer with frequencies more than 1 kHz.

void PITimer::deferredStart ( double  interval_msecs,
double  delay_msecs 
)

Start timer with interval_msecs loop delay after delay_msecs delay.

Timer wait delay_msecs milliseconds and then normally starts with interval_msecs loop delay.

See Also
void start(double msecs), void deferredStart(double interval_msecs, const PIDateTime & start_datetime)
void PITimer::deferredStart ( double  interval_msecs,
const PIDateTime &  start_datetime 
)

Start timer with interval_msecs loop delay after start_datetime date and time.

Timer wait until start_datetime and then normally starts with interval_msecs loop delay.

See Also
void start(double msecs), void deferredStart(double interval_msecs, double delay_msecs)
void PITimer::timeout ( void *  data,
int  delimiter 
)

Raise on timer tick.

Data can be set with function setData(void * data) or from constructor. Delimiter if frequency delimiter, 1 for main loop.

virtual void PITimer::tick ( void *  data,
int  delimiter 
)
inlineprotectedvirtual

Virtual timer execution function, similar to "slot" or event void timeout(void * data, int delimiter). By default is empty.