// $Id$
//
-// Copyright (C) 2007
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
+// Copyright (C) 2007
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
// Stefan Bund <g0dil@berlios.de>
//
// This program is free software; you can redistribute it and/or modify
/** \file
\brief IntervalTimer public header */
-#ifndef HH_IntervalTimer_
-#define HH_IntervalTimer_ 1
+#ifndef HH_SENF_PPI_IntervalTimer_
+#define HH_SENF_PPI_IntervalTimer_ 1
// Custom includes
-#include "Scheduler/ClockService.hh"
+#include "../Scheduler/ClockService.hh"
#include "Events.hh"
//#include "IntervalTimer.mpp"
namespace senf {
namespace ppi {
+ /** \brief IntervalTimer event information
+
+ Information passed to the IntervalTimer event handler
+ */
struct IntervalTimerEventInfo
{
- ClockService::clock_type expected;
- ClockService::clock_type intervalStart;
- unsigned number;
+ ClockService::clock_type expected; ///< Scheduled event time
+ ClockService::clock_type intervalStart; ///< Start of the current time interval
+ unsigned number; ///< Number of the current event within the interval
};
- /** \brief
+ /** \brief High precision regularly signaled event.
+
+ An IntervalTimer signals an event \a eventsPerInterval times each \a interval
+ nanoseconds. The event counter and timer are reset, whenever the event is disabled.
+
+ \see IntervalTimerEventInfo
+
+ \ingroup event_group
*/
class IntervalTimer
: public EventImplementation<IntervalTimerEventInfo>
///\name Structors and default members
///@{
- explicit IntervalTimer(ClockService::clock_type interval,
+ explicit IntervalTimer(ClockService::clock_type interval,
unsigned eventsPerInterval=1);
///@}
ClockService::clock_type interval_;
unsigned eventsPerInterval_;
IntervalTimerEventInfo info_;
- unsigned id_;
+ scheduler::TimerEvent timer_;
};
}}