MSG File src/simu5g/common/LteControlInfoTags.msg

Name

Type

Description

NodeIdentificationInd

class

Indication tag containing source and destination node identifiers used throughout the protocol stack. Normally exchanged by the PHY and MAC layers.

LogicalConnectionInd

class

Identifies the logical connection and D2D groupcast destination for the packet. Usually sent by PDCP to RLC and MAC layers.

RlcConfigurationTagBase

class

Common base for RLC mode request and indication tags. Usually exchanged between PDCP and RLC layers.

RlcConfigurationReq

class

Request tag that specifies the RLC mode (TM/UM/AM) for the connection. Usually sent by PDCP to RLC layer.

RlcConfigurationInd

class

Indication tag containing the RLC mode (TM/UM/AM) for the connection. Usually sent by PDCP to RLC and MAC layers.

CarrierConfigurationInd

class

Indication tag containing carrier and technology configuration Normally exchanged by the PHY and MAC layers.

HarqInfoInd

class

Indication tag containing HARQ process information Normally exchanged by the PHY and MAC layers.

PhyTransmissionInd

class

Indication tag containing PHY layer transmission parameters Normally exchanged by the PHY and MAC layers.

SequenceNumberInd

class

Indication tag containing PDCP sequence number for packet ordering Usually sent by PDCP to RLC layer.

UserTransmissionParametersInd

class

Indication tag containing user transmission parameters Normally exchanged by the PHY and MAC layers.

PhyReceptionInd

class

Indication tag containing PHY layer reception and quality information Usually sent by PHY to MAC layer.

X2TargetReq

class

Request tag containing the target node identifier for X2 data forwarding. Used for both handover and dual connectivity operations to pass the target node parameter when forwarding data packets via X2 interface through gates instead of direct method calls.

X2SourceNodeInd

class

Indication tag containing the source node identifier for X2 data reception. Used to pass the source node parameter when receiving data from X2 interface through gates instead of direct method calls.

Source code

//
//                  Simu5G
//
// Copyright (C) 2019-2021 Giovanni Nardini, Giovanni Stea, Antonio Virdis et al. (University of Pisa)
// Copyright (C) 2022-2026 Giovanni Nardini, Giovanni Stea et al. (University of Pisa)
//
// This file is part of a software released under the license included in file
// "license.pdf". Please read LICENSE and README files before using it.
// The above files and the present reference are part of the software itself,
// and cannot be removed from it.
//

import inet.common.INETDefs;
import inet.common.TagBase;
import inet.common.geometry.Geometry; // for Coord
import inet.networklayer.contract.ipv4.Ipv4Address;
import simu5g.common.LteCommon;
import simu5g.common.LteControlInfo;
import simu5g.stack.mac.amc.UserTxParams;

namespace simu5g;

//
// Indication tag containing source and destination node identifiers
// used throughout the protocol stack.
// Normally exchanged by the PHY and MAC layers.
//
class NodeIdentificationInd extends inet::TagBase {
    MacNodeId sourceId = NODEID_NONE;     // Source MAC Node ID
    MacNodeId destId = NODEID_NONE;       // Destination MAC Node ID
}

//
// Identifies the logical connection and D2D groupcast destination for the packet.
// Usually sent by PDCP to RLC and MAC layers.
//
class LogicalConnectionInd extends inet::TagBase {
    LogicalCid lcid;                    // Logical Connection Identifier
    int32 d2dGroupId = -1;              // D2D groupcast id (-1 = not a groupcast flow)
}

//
// Common base for RLC mode request and indication tags.
// Usually exchanged between PDCP and RLC layers.
//
class RlcConfigurationTagBase extends inet::TagBase {
    unsigned short rlcMode enum(RlcMode) = 0;  // RLC mode (TM, UM, AM)
}

//
// Request tag that specifies the RLC mode (TM/UM/AM) for the connection.
// Usually sent by PDCP to RLC layer.
//
class RlcConfigurationReq extends RlcConfigurationTagBase {
}

//
// Indication tag containing the RLC mode (TM/UM/AM) for the connection.
// Usually sent by PDCP to RLC and MAC layers.
//
class RlcConfigurationInd extends RlcConfigurationTagBase {
}

//
// Indication tag containing carrier and technology configuration
// Normally exchanged by the PHY and MAC layers.
//
class CarrierConfigurationInd extends inet::TagBase {
    bool isNr = false;                  // Packet is for NR processing
    double carrierFrequency = NaN;      // Carrier frequency for transmission
}

//
// Indication tag containing HARQ process information
// Normally exchanged by the PHY and MAC layers.
//
class HarqInfoInd extends inet::TagBase {
    unsigned char acid = 0;             // HARQ process identifier
    unsigned char cw = 0;               // Codeword identifier
    unsigned char txNumber = 0;         // Number of (re)transmissions
    bool ndi = true;                    // New Data Indicator
}

//
// Indication tag containing PHY layer transmission parameters
// Normally exchanged by the PHY and MAC layers.
//
class PhyTransmissionInd extends inet::TagBase {
    unsigned short txMode = 0 enum(TxMode);             // Transmission mode
    unsigned int frameType = 0 enum(LtePhyFrameType);   // Frame type
    double txPower = NaN;                               // Transmission power
    double d2dTxPower = NaN;                            // D2D transmission power
    unsigned int totalGrantedBlocks = 0;                // Total granted resource blocks
    unsigned int grantId = 0;                           // Grant identifier
    inet::Coord coord;                                  // Playground position of the sending host
    RbMap grantedBlocks;                                // Resource blocks granted on all Remotes, all Bands
    FeedbackRequest feedbackReq;                        // Feedback request information
}

//
// Indication tag containing PDCP sequence number for packet ordering
// Usually sent by PDCP to RLC layer.
//
class SequenceNumberInd extends inet::TagBase {
    unsigned int sequenceNumber = 0;    // Packet PDCP sequence number
}

//
// Indication tag containing user transmission parameters
// Normally exchanged by the PHY and MAC layers.
//
class UserTransmissionParametersInd extends inet::TagBase {
    UserTxParams *userTxParams @owned;  // User transmission parameters
}

//
// Indication tag containing PHY layer reception and quality information
// Usually sent by PHY to MAC layer.
//
class PhyReceptionInd extends inet::TagBase {
    bool deciderResult = false;         // Decoding result
}

//
// Request tag containing the target node identifier for X2 data forwarding.
// Used for both handover and dual connectivity operations to pass the target node parameter
// when forwarding data packets via X2 interface through gates instead of direct method calls.
//
class X2TargetReq extends inet::TagBase {
    MacNodeId targetNode = NODEID_NONE;  // Target node MAC ID for X2 forwarding
}

//
// Indication tag containing the source node identifier for X2 data reception.
// Used to pass the source node parameter when receiving data from X2 interface
// through gates instead of direct method calls.
//
class X2SourceNodeInd extends inet::TagBase {
    MacNodeId sourceNode = NODEID_NONE;  // Source node MAC ID from X2
}

cplusplus (UserTransmissionParametersInd::setUserTxParams) {{
    // Code inserted at top of setUserTxParams(); allows silent overwrite of earlier object.
    delete this->userTxParams;
    this->userTxParams = nullptr;
}}