Coin Logo http://www.sim.no
http://www.coin3d.org

Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
SoTimerQueueSensor Class Reference

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

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)
 
- Public Member Functions inherited from SoSensor
 SoSensor (void)
 
 SoSensor (SoSensorCB *func, void *data)
 
virtual ~SoSensor (void)
 
void setFunction (SoSensorCB *callbackfunction)
 
SoSensorCBPtr getFunction (void) const
 
void setData (void *callbackdata)
 
void * getData (void) const
 
void setNextInQueue (SoSensor *next)
 
SoSensorgetNextInQueue (void) const
 

Protected Member Functions

void setTriggerTime (const SbTime &time)
 

Protected Attributes

SbBool scheduled
 
- Protected Attributes inherited from SoSensor
SoSensorCB * func
 
void * funcData
 

Additional Inherited Members

- Static Public Member Functions inherited from SoSensor
static void initClass (void)
 

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)
{
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->setInterval(1.0f);
timeSensor->schedule();
SoXt::mainLoop();
return 0;
}

Constructor & Destructor Documentation

◆ SoTimerQueueSensor() [1/2]

SoTimerQueueSensor::SoTimerQueueSensor ( void  )

Default constructor.

◆ SoTimerQueueSensor() [2/2]

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::~SoTimerQueueSensor ( void  )
virtual

Destructor.

References isScheduled(), and unschedule().

Member Function Documentation

◆ getTriggerTime()

const SbTime & SoTimerQueueSensor::getTriggerTime ( void  ) const

Returns the time at which the sensor will trigger.

See also
setTriggerTime()

Referenced by SoSensorManager::insertTimerSensor().

◆ schedule()

void SoTimerQueueSensor::schedule ( void  )
virtual

◆ unschedule()

void SoTimerQueueSensor::unschedule ( void  )
virtual

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

See also
schedule(), isScheduled()

Implements SoSensor.

Reimplemented in SoTimerSensor.

References SoDB::getSensorManager(), isScheduled(), SoDebugError::postWarning(), SoSensorManager::removeTimerSensor(), and scheduled.

Referenced by SoTimerSensor::unschedule(), and ~SoTimerQueueSensor().

◆ isScheduled()

SbBool SoTimerQueueSensor::isScheduled ( void  ) const
virtual

◆ trigger()

void SoTimerQueueSensor::trigger ( void  )
virtual

Trigger the sensor's callback function.

Reimplemented from SoSensor.

References scheduled, and SoSensor::trigger().

◆ setTriggerTime()

void SoTimerQueueSensor::setTriggerTime ( const SbTime time)
protected

Member Data Documentation

◆ scheduled

SbBool SoTimerQueueSensor::scheduled
protected

The documentation for this class was generated from the following files:
SoSensor
The SoSensor class is the abstract base class for all sensors.
Definition: SoSensor.h:34
SoTimerSensor::setBaseTime
void setBaseTime(const SbTime &base)
Definition: SoTimerSensor.cpp:94
SoSensor::setFunction
void setFunction(SoSensorCB *callbackfunction)
Definition: SoSensor.cpp:138
SbString
The SbString class is a string class with convenience functions for string operations.
Definition: SbString.h:42
SoTimerSensor::setInterval
void setInterval(const SbTime &interval)
Definition: SoTimerSensor.cpp:117
SbTime::format
SbString format(const char *const fmt="%S.%i") const
Definition: SbTime.cpp:381
SoTimerSensor
The SoTimerSensor class is a sensor which will trigger at given intervals.
Definition: SoTimerSensor.h:29
SbTime
The SbTime class instances represents time values.
Definition: SbTime.h:41
SbTime::getTimeOfDay
static SbTime getTimeOfDay(void)
Definition: SbTime.cpp:139
SoTimerSensor::schedule
virtual void schedule(void)
Definition: SoTimerSensor.cpp:180

Copyright © 1998-2007 by Systems in Motion AS. All rights reserved.

Generated on Mon Jul 27 2020 for Coin by Doxygen. 1.8.18