LteHarqUnitTx.h Source File

Simu5G: LteHarqUnitTx.h Source File
Simu5G
LteHarqUnitTx.h
1//
2// Simu5G
3//
4// Copyright (C) 2012-2021 Giovanni Nardini, Giovanni Stea, Antonio Virdis et al. (University of Pisa)
5// Copyright (C) 2022-2026 Giovanni Nardini, Giovanni Stea et al. (University of Pisa)
6//
7// This file is part of a software released under the license included in file
8// "license.pdf". Please read LICENSE and README files before using it.
9// The above files and the present reference are part of the software itself,
10// and cannot be removed from it.
11//
12
13#ifndef _LTE_LTEHARQUNITTX_H_
14#define _LTE_LTEHARQUNITTX_H_
15
16#include "simu5g/stack/mac/packet/LteMacPdu.h"
17#include "simu5g/common/LteControlInfo.h"
18#include "simu5g/common/LteCommon.h"
19#include "simu5g/stack/mac/LteMacBase.h"
20
21namespace simu5g {
22
23using namespace omnetpp;
24using namespace inet;
25
26class LteMacBase;
27
41class LteHarqUnitTx : noncopyable
42{
43 protected:
44
46 Packet *pdu_ = nullptr;
47
49 long pduId_ = -1;
50
52 int64_t pduLength_;
53
54 // H-ARQ process identifier
55 unsigned char acid_;
56
59
61 unsigned char transmissions_ = 0;
62
63 TxHarqPduStatus status_ = TXHARQ_PDU_EMPTY;
64
66 simtime_t txTime_;
67
68 // reference to the eNB module
69 opp_component_ptr<cModule> nodeB_;
70
71 opp_component_ptr<LteMacBase> macOwner_;
72 //used for statistics
73 opp_component_ptr<LteMacBase> dstMac_;
74 //Maximum number of H-ARQ retransmissions
75 unsigned int maxHarqRtx_;
76
77 // Statistics
78
79 Direction dir_ = UNKNOWN_DIRECTION;
80
81 static simsignal_t macCellPacketLossSignal_[2];
82 static simsignal_t macPacketLossSignal_[2];
83 static simsignal_t harqErrorRateSignal_[2];
84 static simsignal_t harqErrorRate_1Signal_[2];
85 static simsignal_t harqErrorRate_2Signal_[2];
86 static simsignal_t harqErrorRate_3Signal_[2];
87 static simsignal_t harqErrorRate_4Signal_[2];
88 static simsignal_t harqTxAttemptsSignal_[2];
89
90 public:
96 LteHarqUnitTx(Binder *binder, unsigned char acid, Codeword cw, LteMacBase *macOwner, LteMacBase *dstMac);
97
106 virtual void insertPdu(Packet *pdu);
107
112 virtual void markSelected();
113
121 virtual Packet *extractPdu();
122
129 virtual bool pduFeedback(HarqAcknowledgment fb);
130
134 virtual bool isEmpty();
135
139 virtual bool isReady();
140
151 virtual bool selfNack();
152
157 virtual void dropPdu();
158
159 virtual void forceDropUnit();
160
161 virtual Packet *getPdu();
162
163 virtual unsigned char getAcid()
164 {
165 return acid_;
166 }
167
168 virtual Codeword getCodeword()
169 {
170 return cw_;
171 }
172
173 virtual unsigned char getTransmissions()
174 {
175 return transmissions_;
176 }
177
178 virtual int64_t getPduLength()
179 {
180 return pduLength_;
181 }
182
183 virtual simtime_t getTxTime()
184 {
185 return txTime_;
186 }
187
188 virtual bool isMarked()
189 {
190 return status_ == TXHARQ_PDU_SELECTED;
191 }
192
193 virtual long getMacPduId()
194 {
195 return pduId_;
196 }
197
198 virtual TxHarqPduStatus getStatus()
199 {
200 return status_;
201 }
202
203 virtual ~LteHarqUnitTx();
204
205 protected:
206
207 virtual void resetUnit();
208};
209
210} //namespace
211
212#endif
213
Definition Binder.h:48
virtual bool isReady()
virtual Packet * extractPdu()
virtual void insertPdu(Packet *pdu)
long pduId_
Omnet ID of the pdu.
Definition LteHarqUnitTx.h:49
virtual bool pduFeedback(HarqAcknowledgment fb)
Codeword cw_
H-ARQ codeword identifier.
Definition LteHarqUnitTx.h:58
virtual bool isEmpty()
simtime_t txTime_
TTI at which the pdu has been transmitted.
Definition LteHarqUnitTx.h:66
int64_t pduLength_
PDU size in bytes.
Definition LteHarqUnitTx.h:52
virtual void dropPdu()
virtual bool selfNack()
Packet * pdu_
Carried sub-burst.
Definition LteHarqUnitTx.h:46
unsigned char transmissions_
Number of (re)transmissions for current pdu (N.B.: values are 1,2,3,4)
Definition LteHarqUnitTx.h:61
virtual void markSelected()
LteHarqUnitTx(Binder *binder, unsigned char acid, Codeword cw, LteMacBase *macOwner, LteMacBase *dstMac)
MAC Layer.
Definition LteMacBase.h:80
Definition AlertReceiver.h:24
unsigned short Codeword
Codeword.
Definition LteCommon.h:202