LteHarqBufferRxD2D Class Reference

Simu5G: LteHarqBufferRxD2D Class Reference
Simu5G
LteHarqBufferRxD2D Class Reference

#include <LteHarqBufferRxD2D.h>

Inheritance diagram for LteHarqBufferRxD2D:
[legend]

Public Member Functions

void insertPdu (Codeword cw, inet::Packet *pdu) override
std::list< inet::Packet * > extractCorrectPdus () override
Public Member Functions inherited from LteHarqBufferRx
virtual unsigned int purgeCorruptedPdus ()
virtual UnitList firstAvailable ()
virtual bool isHarqBufferActive () const

Protected Member Functions

void sendFeedback () override
Protected Member Functions inherited from LteHarqBufferRx
virtual void macUe_emit (simsignal_t signal, double val)
virtual void initMacUe ()

Additional Inherited Members

Protected Attributes inherited from LteHarqBufferRx
opp_component_ptr< Binder > binder_
 binder module reference
opp_component_ptr< LteMacBase > macOwner_
 MAC module reference.
unsigned int numHarqProcesses_
 number of contained H-ARQ processes
MacNodeId srcId_
 ID of the source node for which this buffer has been created.
std::vector< LteHarqProcessRx * > processes_
 processes vector
bool isMulticast_
 flag for multicast flows

Detailed Description

H-ARQ RX buffer for D2D: messages coming from phy are stored in H-ARQ RX buffer. When a new PDU is inserted, it is in EVALUATING state meaning that the hardware is checking its correctness. A feedback is sent after the PDU has been evaluated (HARQ_FB_EVALUATION_INTERVAL), and in case of ACK the PDU moves to CORRECT state, else it is dropped from the process. The operations of checking if a PDU is ready for feedback and if it is in correct state are done in the extractCorrectPdu method which must be called at every TTI (it must be part of the MAC main loop).

Member Function Documentation

◆ sendFeedback()

void sendFeedback ( )
overrideprotectedvirtual

Checks for all processes if the PDU has been evaluated and sends feedback if affirmative.

Reimplemented from LteHarqBufferRx.

◆ insertPdu()

void insertPdu ( Codeword cw,
inet::Packet * pkt )
overridevirtual

Insertion of a new PDU coming from PHY layer into RX H-ARQ buffer.

Parameters
PDUto be inserted

Reimplemented from LteHarqBufferRx.

◆ extractCorrectPdus()

std::list< inet::Packet * > extractCorrectPdus ( )
overridevirtual

Sends feedback for all processes which are older than HARQ_FB_EVALUATION_INTERVAL, then extracts the PDU in correct state (if any)

Returns
uncorrupted PDUs or empty list if none

Reimplemented from LteHarqBufferRx.