Simple Module RCBuffer

Package: ttethernet.buffer
File: src/buffer/RCBuffer.ned

C++ definition

Represents an abstract Buffer for rate-constrained traffic. Messages are sent using the configured bandwidth allocation gap.

The RCBuffer registers a timer (SchedulerTimerEvent) at the scheduler module (TTEScheduler) to send its Message in conformance with the BAG account.

WARNING: Do not instantiate the module. Use RCDoubleBuffer or RCQueueBuffer instead! Only the bag parameter is currently used!

TODO: The RCBuffer module should be converted to an interface since it should not be used directly in simulation.

See also: RCDoubleBuffer, RCQueueBuffer, Buffer, SchedulerTimerEvent, TTEScheduler

Author: Till Steinbach

RCBuffer

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram. Click here to see the full picture.

Inheritance diagram:

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram. Click here to see the full picture.

Extends:

Name Type Description
CTBuffer simple module

Abstract base Buffer used for critical traffic Buffers of TTEthernet. Since this is an abstract module please do not instantiate it

Known subclasses:

Name Type Description
RCDoubleBuffer simple module

Represents a double buffer for rate-constrained traffic. Messages are sent using the configured gandwidth alocation gap.

RCQueueBuffer simple module

Represents a queue buffer for rate-constrained traffic. Messages are sent using the configured gandwidth alocation gap.

Parameters:

Name Type Default value Description
destination_gates string ""

Priority of the buffer (currently only used for rate-constrained traffic) int priority=default(-1); Critical traffic ID of the buffer int ct_id=default(0); Critical traffic marker of the buffer int ct_marker=default(0); Critical traffic mask of the buffer int ct_mask=default(0); Comma seperated list of gates where the frames of the buffer are delivered

priority int -1

Priority of the buffer (currently only used for rate-constrained traffic)

ct_id int 0

Critical traffic ID of the buffer

ct_marker int 0

Critical traffic marker of the buffer

ct_mask int 0

Critical traffic mask of the buffer

max_dispatch_delay int 0

Not used

bag int 0

Bandwidth allocation gap in number of ticks (Changes to this parameter will get active for future frames only)

jitter int 0

Not used

Properties:

Name Value Description
display i=,orange
class RCBuffer

RCBuffer is implemented by the RCBuffer C++ Class

Gates:

Name Direction Size Description
in input

The buffers Input

out output

The buffers Output

WARNING: CURRENTLY NOT USED!

schedulerIn input

Input gate for the incoming SchedulerTimerEvent messages

Statistics:

Name Title Source Record Unit Interpolation Mode
txPk TX Packets count, vector
latency End-to-end latency stats, histogram, vector s

Source code:

//
// Represents an abstract Buffer for rate-constrained traffic. Messages are sent using the configured
// bandwidth allocation gap.
//
// The RCBuffer registers a timer (SchedulerTimerEvent) at the scheduler module (TTEScheduler) to send its
// Message in conformance with the BAG account.
//
// @warning Do not instantiate the module. Use RCDoubleBuffer or RCQueueBuffer instead! 
// Only the bag parameter is currently used!
//
// @todo The RCBuffer module should be converted to an interface since it should
// not be used directly in simulation.
//
// @see RCDoubleBuffer, RCQueueBuffer, Buffer, SchedulerTimerEvent, TTEScheduler
//
// @author Till Steinbach
simple RCBuffer extends CTBuffer
{
    parameters:
        //RCBuffer is implemented by the RCBuffer C++ Class
        @class(RCBuffer);
        @display("i=,orange");
        // Not used
        int max_dispatch_delay = default(0);
        // Bandwidth allocation gap in number of ticks (Changes to this parameter will get active for future frames only)
        int bag = default(0);
        // Not used
        int jitter = default(0);
    gates:
        //Input gate for the incoming SchedulerTimerEvent messages
        input schedulerIn @directIn;
}