Simple Module RCBuffer

Package: core4inet.buffer.AS6802
File: src/core4inet/buffer/AS6802/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!

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 ""

Comma seperated list of gates where the frames of the buffer are delivered

maxMessageSize int 1522B

The maximum allowed message size for this buffer. Larger Frames are dropped.

enabled bool true

Switch to enable and disable the buffer

priority int -1

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

ct_id int

Critical traffic ID of the buffer

ct_marker int

Critical traffic marker of the buffer

ct_mask int

Critical traffic mask of the buffer

oscillator string "^.scheduler.oscillator"

Oscillator this buffer is assigned to

timer string "^.scheduler.timer"

Timer this buffer is assigned to

max_dispatch_delay int 0tick

Not used

bag int 0tick

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

jitter int 0tick

Maximum jitter for the bandwidth allocation gap in number of ticks

Properties:

Name Value Description
class AbstractSimpleModule

RCBuffer is implemented by the RCBuffer C++ Class

display i=,orange

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

Signals:

Name Type Unit
rxPk inet::EtherFrame
txPk inet::EtherFrame

Statistics:

Name Title Source Record Unit Interpolation Mode
rxLatency End-to-end latency (received) messageAge(rxPk) stats?, histogram?, vector? s none
rxBytes Received Bytes rxPk sum(packetBytes)?, vector(packetBytes)?, histogram(packetBytes)? B none
rxPk Received Packets rxPk count packets
txBytes Transmitted Bytes txPk sum(packetBytes), vector(packetBytes), histogram(packetBytes)? B none
minPacketSize Minimum Packet Size in Interval rxPk IntervalMinVector(packetBytes)? B linear
bandwidth Bandwidth used over Interval rxPk IntervalSumVector(packetBytes)? B linear
txPk Transmitted Packets txPk count packets
txLatency End-to-end latency (transmitted) messageAge(txPk) stats, histogram?, vector s none
maxPacketSize Maximum Packet Size in Interval rxPk IntervalMaxVector(packetBytes)? B linear

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!
//
// @see RCDoubleBuffer, RCQueueBuffer, Buffer, SchedulerTimerEvent, TTEScheduler
//
// @author Till Steinbach
simple RCBuffer extends CTBuffer like ITimed
{
    parameters:
        //RCBuffer is implemented by the RCBuffer C++ Class
        @class(AbstractSimpleModule);
        @display("i=,orange");

        // Not used
        int max_dispatch_delay @unit(tick) = default(0tick);
        // Bandwidth allocation gap in number of ticks (Changes to this parameter will get active for future frames only)
        int bag @unit(tick) = default(0tick);
        // Maximum jitter for the bandwidth allocation gap in number of ticks
        int jitter @unit(tick) = default(0tick);

    gates:
        //Input gate for the incoming SchedulerTimerEvent messages
        input schedulerIn @directIn;
}