Main Page | Modules | Class Hierarchy | Alphabetical List | Class List | File List | Class Members

SoTimerQueueSensor Class Reference
[Sensor classes]

The SoTimerQueueSensor class is the abstract base class for sensors triggering on certain timer events. More...

#include <Inventor/sensors/SoTimerQueueSensor.h>

Inheritance diagram for SoTimerQueueSensor:

SoSensor SoAlarmSensor SoTimerSensor List of all members.

Public Member Functions

 SoTimerQueueSensor (void)
 SoTimerQueueSensor (SoSensorCB *func, void *data)
virtual ~SoTimerQueueSensor (void)
const SbTimegetTriggerTime (void) const
virtual void schedule (void)
virtual void unschedule (void)
virtual SbBool isScheduled (void) const
virtual void trigger (void)

Protected Member Functions

void setTriggerTime (const SbTime &time)

Protected Attributes

SbBool scheduled

Detailed Description

The SoTimerQueueSensor class is the abstract base class for sensors triggering on certain timer events.

Timer sensors triggers upon specific points in time.

This class is an abstract superclass which collects the common interface of the various non-abstract timer sensor classes. See the documentation of the subclasses for information on what ways there are to specify base times, intervals, alarm-style single triggering, repeated triggers, etc.

Note that Coin timer sensors should in no way be considered "hard real-time". That is, you can not expect a timer to always trigger at the exact moment it was set up for. Delays in triggering could be due to other activities in Coin, a task suspended, or heavy load from other applications on the system. These situations could all cause the processing of sensor queues (from SoQt / SoWin / SoXt / whatever) to be slightly delayed, thereby causing delays in timer sensor triggering.

On modern systems, a timer will usually trigger within a few milliseconds of it's designated time, though.

If a timer sensor can not trigger at the exact moment it has been scheduled, it will be triggered at the first opportunity after the scheduled time has passed.

Here's a simple usage example. It's a stand-alone example, which only demonstrates how to set up a repeating timer sensor with a callback:

#include <Inventor/Xt/SoXt.h> #include <Inventor/sensors/SoTimerSensor.h> #include <stdio.h> static void timeSensorCallback(void * data, SoSensor * sensor) { SbTime time = SbTime::getTimeOfDay(); SbString string = time.format("%S.%i"); (void)printf("%s\n", string.getString()); } int main(int argc, char ** argv) { SoXt::init("test"); SoTimerSensor * timeSensor = new SoTimerSensor; timeSensor->setFunction(timeSensorCallback); timeSensor->setBaseTime(SbTime::getTimeOfDay()); timeSensor->setInterval(1.0f); timeSensor->schedule(); SoXt::mainLoop(); return 0; }


Constructor & Destructor Documentation

SoTimerQueueSensor::SoTimerQueueSensor void   ) 
 

Default constructor.

SoTimerQueueSensor::SoTimerQueueSensor SoSensorCB *  func,
void *  data
 

Constructor taking as arguments the sensor callback function and the userdata which will be passed the callback.

See also:
setFunction(), setData()

SoTimerQueueSensor::~SoTimerQueueSensor void   )  [virtual]
 

Destructor.


Member Function Documentation

const SbTime & SoTimerQueueSensor::getTriggerTime void   )  const
 

Returns the time at which the sensor will trigger.

See also:
setTriggerTime()

void SoTimerQueueSensor::schedule void   )  [virtual]
 

Put the sensor in the global timer queue.

See also:
unschedule(), isScheduled()

Implements SoSensor.

Reimplemented in SoAlarmSensor, and SoTimerSensor.

void SoTimerQueueSensor::unschedule void   )  [virtual]
 

Remove sensor from the timer queue, without triggering it first.

See also:
schedule(), isScheduled()

Implements SoSensor.

Reimplemented in SoTimerSensor.

SbBool SoTimerQueueSensor::isScheduled void   )  const [virtual]
 

Check if this sensor is scheduled for triggering.

See also:
schedule(), unschedule()

Implements SoSensor.

void SoTimerQueueSensor::trigger void   )  [virtual]
 

Trigger the sensor's callback function.

Reimplemented from SoSensor.

void SoTimerQueueSensor::setTriggerTime const SbTime time  )  [protected]
 

Set absolute time at which to trigger sensor.

See also:
getTriggerTime()


Member Data Documentation

SbBool SoTimerQueueSensor::scheduled [protected]
 

TRUE if the sensor is currently scheduled.


The documentation for this class was generated from the following files:
Generated on Tue Jul 27 23:53:08 2004 for Coin by doxygen 1.3.7