LteSchedulingGrant.msg

Msg File src/simu5g/stack/mac/packet/LteSchedulingGrant.msg

Name Type Description
LteSchedulingGrant class

TODO generated message class

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 inet.common.INETDefs;
import inet.common.packet.chunk.Chunk;

import simu5g.common.LteCommonEnum;
import simu5g.common.LteCommon;
import simu5g.stack.mac.amc.UserTxParams;

namespace simu5g;

//
// TODO generated message class
//
class LteSchedulingGrant extends inet::FieldsChunk
{
    chunkLength = inet::B(1); // TODO: size 0
    bool periodic;
    unsigned int period;
    unsigned int expiration;
    unsigned int totalGrantedBlocks;    // blocks granted on all Remotes, all Bands
    unsigned int codewords;    // number of codewords
    unsigned int grantedCwBytes[MAX_CODEWORDS];    // granted bytes per codeword
    const UserTxParams *userTxParams = nullptr @owned @allowReplace;
    Direction direction;    // Traffic Direction
    unsigned int grantId = getChunkId();         // Grant identifier
}

cplusplus(LteSchedulingGrant) {{
  protected:
    RbMap grantedBlocks;

  public:
    const unsigned int getBlocks(Remote antenna, Band b) const { return grantedBlocks.at(antenna).at(b); }
    void setBlocks(Remote antenna, Band b, unsigned int blocks) { grantedBlocks[antenna][b] = blocks; }
    const RbMap& getGrantedBlocks() const { return grantedBlocks; }
    void setGrantedBlocks(const RbMap& rbMap) { handleChange(); grantedBlocks = rbMap; }
}}

cplusplus(LteSchedulingGrant::copy) {{
    grantedBlocks = other.grantedBlocks;
}}

cplusplus(LteSchedulingGrant::parsimPack) {{
    doParsimPacking(b, this->grantedBlocks);
}}

cplusplus(LteSchedulingGrant::parsimUnpack) {{
    doParsimUnpacking(b, this->grantedBlocks);
}}