LteCommon.msg

Msg File src/simu5g/common/LteCommon.msg

Name Type Description
MacCellId class (no description)
MacNodeId class (no description)
X2NodeId class

X2 node ID. It is equal to the eNodeB MAC Cell ID

LogicalCid class

Logical Connection Identifier (used in MAC layer)

DrbId class

Data Radio Bearer Identifier (used in PDCP/RLC layers, maps 1:1 to LogicalCid)

Qfi class

QoS Flow Identifier (6-bit, 0-63 per 3GPP TS 24.501)

Lcg class

Logical Channel Group id (LTE: 4 groups, NR: up to 8; TS 36.321 / TS 38.321)

MacCid class

Connection Identifier: <MacNodeId,LogicalCid>

DrbKey class

Node + DRB ID Identifier: <MacNodeId, DrbId> for PDCP/RLC layers

Rank class

Rank Indicator

Cqi class

Channel Quality Indicator

Tbs class

Transport Block Size

Band class

Logical band

RbMap class (no description)
GHz class (no description)

Source code

//
//                  Simu5G
//
// Copyright (C) 2012-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 simu5g.common.LteCommonEnum;

cplusplus {{
#include <inet/common/geometry/Geometry_m.h>
#include "simu5g/common/LteTypes.h"
}}

namespace simu5g;

class MacCellId {
    @existingClass; // typedef MacNodeId MacCellId;
    @descriptor(false);
    @primitive;
    @castFunction(false);
    @fromString(string2int64($));
    @toString(int642string($));
    @defaultValue(0);
    @toValue((omnetpp::intval_t)($));
    @fromValue(omnetpp::checked_int_cast<int64_t>($.intValue()));
};

class MacNodeId {
    @existingClass; // enum class MacNodeId;
    @descriptor(false);
    @primitive;
    @castFunction(false);
    @fromValue(MacNodeId($.intValue()));
    @toValue(num($));
    @fromString(MacNodeId(string2int64($)));
    @toString(int642string(num($)));
}

/// X2 node ID. It is equal to the eNodeB MAC Cell ID
class X2NodeId {
    @existingClass; // typedef MacNodeId X2NodeId;
    @descriptor(false);
    @primitive;
    @castFunction(false);
    @fromString(string2int64($));
    @toString(int642string($));
    @defaultValue(0);
    @toValue((omnetpp::intval_t)($));
    @fromValue(omnetpp::checked_int_cast<int64_t>($.intValue()));
};

/// Logical Connection Identifier (used in MAC layer)
class LogicalCid {
    @existingClass; // enum class LogicalCid : unsigned short;
    @descriptor(false);
    @primitive;
    @castFunction(false);
    @fromString(LogicalCid(string2int64($)));
    @toString(int642string(num($)));
    @defaultValue(LCID_NONE);
    @toValue((omnetpp::intval_t)(num($)));
    @fromValue(LogicalCid($.intValue()));
};

/// Data Radio Bearer Identifier (used in PDCP/RLC layers, maps 1:1 to LogicalCid)
class DrbId {
    @existingClass; // enum class DrbId : unsigned short;
    @descriptor(false);
    @primitive;
    @castFunction(false);
    @fromString(DrbId(string2int64($)));
    @toString(int642string(num($)));
    @defaultValue(DRBID_NONE);
    @toValue((omnetpp::intval_t)(num($)));
    @fromValue(DrbId($.intValue()));
};

/// QoS Flow Identifier (6-bit, 0-63 per 3GPP TS 24.501)
class Qfi {
    @existingClass; // enum class Qfi : uint8_t;
    @descriptor(false);
    @primitive;
    @castFunction(false);
    @fromString(Qfi(string2int64($)));
    @toString(int642string(num($)));
    @defaultValue(QFI_NONE);
    @toValue((omnetpp::intval_t)(num($)));
    @fromValue(Qfi($.intValue()));
};

/// Logical Channel Group id (LTE: 4 groups, NR: up to 8; TS 36.321 / TS 38.321)
class Lcg {
    @existingClass; // enum class Lcg : uint8_t;
    @descriptor(false);
    @primitive;
    @castFunction(false);
    @fromString(Lcg(string2int64($)));
    @toString(int642string(num($)));
    @defaultValue(Lcg(0));
    @toValue((omnetpp::intval_t)(num($)));
    @fromValue(Lcg($.intValue()));
};

/// Connection Identifier: <MacNodeId,LogicalCid>
class MacCid {
    @existingClass; // class MacCid with separate nodeId and lcid fields
    @descriptor(false);
    @opaque;
};

/// Node + DRB ID Identifier: <MacNodeId, DrbId> for PDCP/RLC layers
class DrbKey {
    @existingClass; // class DrbKey with separate nodeId and drbId fields
    @descriptor(false);
    @opaque;
};

/// Rank Indicator
class Rank {
    @existingClass; // typedef unsigned short Rank;
    @descriptor(false);
    @primitive;
    @castFunction(false);
    @fromString(string2int64($));
    @toString(int642string($));
    @defaultValue(0);
    @toValue((omnetpp::intval_t)($));
    @fromValue(omnetpp::checked_int_cast<int64_t>($.intValue()));
};

/// Channel Quality Indicator
class Cqi {
    @existingClass; // typedef unsigned short Cqi;
    @descriptor(false);
    @primitive;
    @castFunction(false);
    @fromString(string2int64($));
    @toString(int642string($));
    @defaultValue(0);
    @toValue((omnetpp::intval_t)($));
    @fromValue(omnetpp::checked_int_cast<int64_t>($.intValue()));
};


/// Transport Block Size
class Tbs {
    @existingClass; // typedef unsigned short Tbs;
    @descriptor(false);
    @primitive;
    @castFunction(false);
    @fromString(string2int64($));
    @toString(int642string($));
    @defaultValue(0);
    @toValue((omnetpp::intval_t)($));
    @fromValue(omnetpp::checked_int_cast<int64_t>($.intValue()));
};

/// Logical band
class Band {
    @existingClass; // typedef unsigned short Band;
    @descriptor(false);
    @primitive;
    @castFunction(false);
    @fromString(string2int64($));
    @toString(int642string($));
    @defaultValue(0);
    @toValue((omnetpp::intval_t)($));
    @fromValue(omnetpp::checked_int_cast<int64_t>($.intValue()));
};

class RbMap
{
    @existingClass;
    @opaque;
};

// GHz type for MSG compiler (actual definition is in inet/common/Units.h, included via LteTypes.h)
namespace inet;

class GHz  { @existingClass; @primitive; @fromString(inet::GHz(string2double($)));   @toString(inet::unit2string($)); @defaultValue(inet::GHz(NaN));   @toValue(cValue($.get(),"GHz"));  @fromValue(inet::GHz($.doubleValueInUnit("GHz"))); }