DREAM::Channel Class Reference

Real-time event Channel . More...

#include <Task.h>

Inheritance diagram for DREAM::Channel:

DREAM::Node List of all members.

Public Member Functions

 Channel (const std::string &id, DREAM::Thread *thread_ptr, uint delay, uint buffersize)
 Constructor.
 Channel (const std::string &id, DREAM::Thread *thread_ptr, uint delay, uint bcdelay, uint buffersize)
 Constructor.
 Channel (const DREAM::Channel &channel)
 Copy constructor for Channels.
virtual ~Channel ()
 Destructor.
virtual void add_dependent (DREAM::Node *node_ptr) throw (DREAM::Exception)
 Adds a dependent Node to the current Channel.
virtual uint bcet () const
 Returns the best case delay.
virtual void branching_point ()
 Sets the new execution time if branching points were found.
virtual DREAM::Context context () const
 Returns whether the Channel uses the best case or worst case delay for the simulation.
virtual void context (DREAM::Context context)
 Sets the Channel to use the specified context (e.g.
virtual void clock_exec_reset ()
 Reset execution clock value - clock_exec_.
virtual void clock_step (double clock_step)
 Models the passing of time.
virtual void consume ()
 Consumes an event received from an event source.
virtual bool idle_dependents () const
 Returns true if all the dependents are idle.
virtual double next_event ()
 Tells when the Channel will generate the next event.
virtual void next_et (double next_et)
 Sets the next execution time when the context is branchingpoint.
virtual void publish ()
 Publishes an event to dependent tasks.
virtual void reset ()
 Resets Timer (when restarting the simulation).
virtual void take_transitions ()
 Takes state transitions.
virtual void visitor_map (DREAM::NODE_MAP *task_map, DREAM::NODE_MAP *channel_map, DREAM::NODE_MAP *timer_map)
 This function fills the IDs (names) of tasks, channels and timers to the parameter lists.
virtual void visitor_uppaal (DREAM::NODE_MAP *task_map, DREAM::NODE_MAP *channel_map, DREAM::NODE_MAP *timer_map, std::ofstream &f_stream)
 This function is part of the Uppaal system description generator.
virtual uint wcet () const
 Returns delay_.

Private Types

enum  State { idle, wait }
 State of the Channel as specified by the DRE Semantic Domain. More...

Private Attributes

uint bcdelay_
 Best case delay.
DREAM::Context context_
 Specifies whether best case, worst case, or a random value is used for the execution time during the simulation.
uint buffer_
 Buffer of the event channel storing events.
uint buffersize_
 Specifies the size of the buffer.
uint delay_
 Worst case delay of the event channel.
double et_
 The execution time.
double next_et_
 The next execution time when the context is branchingpoint.
DREAM::Nodesource_ptr_
 Reference to the event source.
enum DREAM::Channel::State state_
 State of the Channel as specified by the DRE Semantic Domain.

Detailed Description

Real-time event Channel .

This class is the implementation of the Channel in the DRE Semantic Domain.

Definition at line 646 of file Task.h.


Member Enumeration Documentation

enum DREAM::Channel::State [private]

State of the Channel as specified by the DRE Semantic Domain.

Enumerator:
idle 
wait 

Definition at line 850 of file Task.h.


Constructor & Destructor Documentation

DREAM::Channel::Channel ( const std::string &  id,
DREAM::Thread thread_ptr,
uint  delay,
uint  buffersize 
)

Constructor.

Parameters:
id specifies the name of the event channel.
thread_ptr defines the mapping of the Channel to a platform processor.
delay is the delay of the event channel.
buffersize specifies the size of the event channel buffer. Use '0' for no limit.

Definition at line 853 of file Task.cpp.

DREAM::Channel::Channel ( const std::string &  id,
DREAM::Thread thread_ptr,
uint  delay,
uint  bcdelay,
uint  buffersize 
)

Constructor.

Parameters:
id specifies the name of the event channel.
thread_ptr defines the mapping of the Channel to a platform processor.
delay is the worst case delay of the event channel.
bcdelay is the best case delay of the event channel.
buffersize specifies the size of the event channel buffer. Use '0' for no limit.

Definition at line 868 of file Task.cpp.

DREAM::Channel::Channel ( const DREAM::Channel channel  ) 

Copy constructor for Channels.

Parameters:
channel is a pointer to the channel to be copied.

Definition at line 885 of file Task.cpp.

DREAM::Channel::~Channel (  )  [virtual]

Destructor.

Definition at line 900 of file Task.cpp.


Member Function Documentation

void DREAM::Channel::add_dependent ( DREAM::Node node_ptr  )  throw (DREAM::Exception) [virtual]

Adds a dependent Node to the current Channel.

This function also ensures that Channels cannot have more than 1 dependents.

Parameters:
node_ptr is the pointer to the dependent Node to be added.

Reimplemented from DREAM::Node.

Definition at line 904 of file Task.cpp.

uint DREAM::Channel::bcet (  )  const [inline, virtual]

Returns the best case delay.

bcet () name is used to provide a unique interface for DREAM::Node inherited classes.

Reimplemented from DREAM::Node.

Definition at line 917 of file Task.cpp.

void DREAM::Channel::branching_point (  )  [inline, virtual]

Sets the new execution time if branching points were found.

Reimplemented from DREAM::Node.

Definition at line 928 of file Task.cpp.

References DREAM::bestcase, and DREAM::branchingpoint.

DREAM::Context DREAM::Channel::context (  )  const [inline, virtual]

Returns whether the Channel uses the best case or worst case delay for the simulation.

Returns:
the context of the Channel.

Reimplemented from DREAM::Node.

Definition at line 1016 of file Task.cpp.

void DREAM::Channel::context ( DREAM::Context  context  )  [inline, virtual]

Sets the Channel to use the specified context (e.g.

in the simulation).

Parameters:
context is the context assumed.

Reimplemented from DREAM::Node.

Definition at line 1026 of file Task.cpp.

void DREAM::Channel::clock_exec_reset (  )  [inline, virtual]

Reset execution clock value - clock_exec_.

Reimplemented from DREAM::Node.

Definition at line 945 of file Task.cpp.

References bcdelay_, DREAM::bestcase, DREAM::Node::clock_exec_, context_, delay_, et_, DREAM::random(), DREAM::randomcase, and DREAM::worstcase.

Referenced by reset().

void DREAM::Channel::clock_step ( double  clock_step  )  [inline, virtual]

Models the passing of time.

Increments local clock clock_exec_.

Parameters:
clock_step specifies by how much do we have to increment the time.

Reimplemented from DREAM::Node.

Definition at line 958 of file Task.cpp.

References bcdelay_, Option::branching_, DREAM::branchingpoint, buffer_, DREAM::Node::clock_exec_, context_, delay_, DREAM::Node::id_, next_et_, DREAM::System::relevant_event(), DREAM::Node::remote_dep_, DREAM::Thread::scheduler(), DREAM::Scheduler::system(), DREAM::Node::thread_ptr_, DREAM::Thread::trace(), and DREAM::worstcase.

void DREAM::Channel::consume (  )  [inline, virtual]

Consumes an event received from an event source.

This function is called by the publish () function of the event source and triggers state transitions. The take_transitions () function will take the enabled transitions.

Reimplemented from DREAM::Node.

Definition at line 993 of file Task.cpp.

References DREAM::idle.

bool DREAM::Channel::idle_dependents (  )  const [inline, virtual]

Returns true if all the dependents are idle.

Definition at line 1036 of file Task.cpp.

double DREAM::Channel::next_event (  )  [inline, virtual]

Tells when the Channel will generate the next event.

Returns:
Time remaining till the next event generation (when clock_exec_ == delay_ and buffer_ != 0).

Reimplemented from DREAM::Node.

Definition at line 1048 of file Task.cpp.

References buffer_, DREAM::Node::clock_exec_, et_, state_, and wait.

void DREAM::Channel::next_et ( double  next_et  )  [inline, virtual]

Sets the next execution time when the context is branchingpoint.

Reimplemented from DREAM::Node.

Definition at line 1060 of file Task.cpp.

void DREAM::Channel::publish (  )  [inline, virtual]

Publishes an event to dependent tasks.

This function models synchronous event propagation by calling the consume () functions of all the dependent Nodes.

Reimplemented from DREAM::Node.

Definition at line 1071 of file Task.cpp.

References Option::verbose1_.

void DREAM::Channel::reset (  )  [inline, virtual]

Resets Timer (when restarting the simulation).

Reimplemented from DREAM::Node.

Definition at line 1087 of file Task.cpp.

References buffer_, clock_exec_reset(), idle, and state_.

void DREAM::Channel::take_transitions (  )  [inline, virtual]

Takes state transitions.

This function implements the state transitions of a Channel as specified by the DRE Semantic Domain. Transitions can be triggered by events coming from other Tasks, Timers or Schedulers.

Reimplemented from DREAM::Node.

Definition at line 1098 of file Task.cpp.

References DREAM::idle.

void DREAM::Channel::visitor_map ( DREAM::NODE_MAP task_map,
DREAM::NODE_MAP channel_map,
DREAM::NODE_MAP timer_map 
) [virtual]

This function fills the IDs (names) of tasks, channels and timers to the parameter lists.

The function is used to generate output for model checkers.

Parameters:
task_map stores the Task pointers.
channel_map stores the Channel pointers.
timer_map stores the Timer pointers.

Reimplemented from DREAM::Node.

Definition at line 1146 of file Task.cpp.

void DREAM::Channel::visitor_uppaal ( DREAM::NODE_MAP task_map,
DREAM::NODE_MAP channel_map,
DREAM::NODE_MAP timer_map,
std::ofstream &  f_stream 
) [virtual]

This function is part of the Uppaal system description generator.

Parameters:
task_map stores the Task pointers.
channel_map stores the Channel pointers.
timer_map stores the Timer pointers.
f_stream is the output stream to be written to.

Reimplemented from DREAM::Node.

Definition at line 1154 of file Task.cpp.

uint DREAM::Channel::wcet (  )  const [inline, virtual]

Returns delay_.

wcet () name is used to provide a unique interface for DREAM::Node inherited classes.

Reimplemented from DREAM::Node.

Definition at line 1209 of file Task.cpp.


Member Data Documentation

uint DREAM::Channel::bcdelay_ [private]

Best case delay.

This construct can be used to model event channels which have delays within a given interval.

Definition at line 818 of file Task.h.

Referenced by clock_exec_reset(), and clock_step().

DREAM::Context DREAM::Channel::context_ [private]

Specifies whether best case, worst case, or a random value is used for the execution time during the simulation.

Definition at line 821 of file Task.h.

Referenced by clock_exec_reset(), and clock_step().

uint DREAM::Channel::buffer_ [private]

Buffer of the event channel storing events.

Definition at line 824 of file Task.h.

Referenced by clock_step(), next_event(), and reset().

uint DREAM::Channel::buffersize_ [private]

Specifies the size of the buffer.

If the buffer is full new events get lost.

Definition at line 829 of file Task.h.

uint DREAM::Channel::delay_ [private]

Worst case delay of the event channel.

Definition at line 832 of file Task.h.

Referenced by clock_exec_reset(), and clock_step().

double DREAM::Channel::et_ [private]

The execution time.

This value is from the interval [bcet, wcet] and is set according to the context.

Definition at line 837 of file Task.h.

Referenced by clock_exec_reset(), and next_event().

double DREAM::Channel::next_et_ [private]

The next execution time when the context is branchingpoint.

This value is from the interval [bcet, wcet].

Definition at line 843 of file Task.h.

Referenced by clock_step().

DREAM::Node* DREAM::Channel::source_ptr_ [private]

Reference to the event source.

Definition at line 847 of file Task.h.

enum DREAM::Channel::State DREAM::Channel::state_ [private]

State of the Channel as specified by the DRE Semantic Domain.

Referenced by next_event(), and reset().


The documentation for this class was generated from the following files:
Generated on Fri Jul 27 18:30:04 2007 for DREAM by  doxygen 1.5.1