LteHarqUnitTxD2D Class Reference

Simu5G: LteHarqUnitTxD2D Class Reference
Simu5G
LteHarqUnitTxD2D Class Reference

#include <LteHarqUnitTxD2D.h>

Inheritance diagram for LteHarqUnitTxD2D:
[legend]

Public Member Functions

 LteHarqUnitTxD2D (Binder *binder, unsigned char acid, Codeword cw, LteMacBase *macOwner, LteMacBase *dstMac)
bool pduFeedback (HarqAcknowledgment fb) override
inet::Packet * extractPdu () override
Public Member Functions inherited from LteHarqUnitTx
 LteHarqUnitTx (Binder *binder, unsigned char acid, Codeword cw, LteMacBase *macOwner, LteMacBase *dstMac)
virtual void insertPdu (Packet *pdu)
virtual void markSelected ()
virtual bool isEmpty ()
virtual bool isReady ()
virtual bool selfNack ()
virtual void dropPdu ()

Additional Inherited Members

Protected Attributes inherited from LteHarqUnitTx
Packet * pdu_ = nullptr
 Carried sub-burst.
long pduId_ = -1
 Omnet ID of the pdu.
int64_t pduLength_
 PDU size in bytes.
Codeword cw_
 H-ARQ codeword identifier.
unsigned char transmissions_ = 0
 Number of (re)transmissions for current pdu (N.B.: values are 1,2,3,4)
simtime_t txTime_
 TTI at which the pdu has been transmitted.

Detailed Description

An LteHarqUnit is an HARQ mac pdu container, a harqBuffer is made of harq processes which are made of harq units.

LteHarqUnit manages transmissions and retransmissions. Contained PDU may be in one of four statuses:

                       IDLE       PDU                    READY

TXHARQ_PDU_BUFFERED: no present locally ready for rtx TXHARQ_PDU_WAITING: no copy present not ready for tx TXHARQ_PDU_EMPTY: yes not present not ready for tx TXHARQ_PDU_SELECTED: no present will be tx

Constructor & Destructor Documentation

◆ LteHarqUnitTxD2D()

LteHarqUnitTxD2D ( Binder * binder,
unsigned char acid,
Codeword cw,
LteMacBase * macOwner,
LteMacBase * dstMac )

Constructor.

Parameters
idunit identifier

Member Function Documentation

◆ pduFeedback()

bool pduFeedback ( HarqAcknowledgment fb)
overridevirtual

Manages ACK/NACK.

Parameters
fbACK or NACK for this H-ARQ unit
Returns
true if the unit has become empty, false if it is still busy

Reimplemented from LteHarqUnitTx.

◆ extractPdu()

inet::Packet * extractPdu ( )
overridevirtual

Returns the macPdu to be sent and increments transmissions_ counter.

The H-ARQ process containing this unit must call this method in order to extract the PDU the Mac layer will send. Before extraction, control info is updated with transmission counter and ndi.

Reimplemented from LteHarqUnitTx.