LteHarqProcessTx Class Reference¶
|
Simu5G
|
#include <LteHarqProcessTx.h>
Public Member Functions | |
| LteHarqProcessTx (Binder *binder, unsigned char acid, unsigned int numUnits, unsigned int numProcesses, LteMacBase *macOwner, LteMacBase *dstMac) | |
| virtual void | insertPdu (inet::Packet *pdu, Codeword cw) |
| std::vector< UnitStatus > | getProcessStatus () |
| bool | hasReadyUnits () |
| simtime_t | getOldestUnitTxTime () |
| virtual CwList | readyUnitsIds () |
| virtual CwList | emptyUnitsIds () |
| virtual CwList | selectedUnitsIds () |
| bool | isEmpty () |
| long | getPduId (Codeword cw) |
| virtual bool | isHarqProcessActive () |
Protected Attributes | |
| opp_component_ptr< LteMacBase > | macOwner_ |
| reference to mac module, used to handle errors | |
| UnitVector | units_ |
| contained units vector | |
| unsigned int | numProcesses_ |
| total number of processes in this H-ARQ buffer | |
| unsigned char | numHarqUnits_ |
| number of contained H-ARQ units | |
| unsigned char | acid_ |
| H-ARQ process identifier. | |
| unsigned char | numEmptyUnits_ |
| Number of empty units inside this process. | |
| unsigned int | numSelected_ |
| Number of selected units inside this process. | |
| bool | dropped_ |
Detailed Description
Container of H-ARQ units. An H-ARQ process contains the units with id (acid + totalNumberOfProcesses * cw[i]), for each i.
An H-ARQ buffer is made of H-ARQ processes. An H-ARQ process is atomic for transmission, while H-ARQ units are atomic for H-ARQ feedback.
Constructor & Destructor Documentation
◆ LteHarqProcessTx()
| LteHarqProcessTx | ( | Binder * | binder, |
| unsigned char | acid, | ||
| unsigned int | numUnits, | ||
| unsigned int | numProcesses, | ||
| LteMacBase * | macOwner, | ||
| LteMacBase * | dstMac ) |
Creates a new H-ARQ process, which is a container of H-ARQ units.
- Parameters
-
acid H-ARQ process identifier numUnits number of units contained in this process (MAX_CODEWORDS) numProcesses number of processes contained in the H-ARQ buffer.
- Returns
Member Function Documentation
◆ insertPdu()
|
virtual |
Insert a PDU into an H-ARQ unit contained in this process.
- Parameters
-
pdu PDU to be inserted unitId id of destination unit
◆ getProcessStatus()
| std::vector< UnitStatus > getProcessStatus | ( | ) |
- Returns
◆ hasReadyUnits()
| bool hasReadyUnits | ( | ) |
Checks if this process has one or more H-ARQ units ready for retransmission.
- Returns
- true if there is at least one unit ready for RTX, false if none
◆ getOldestUnitTxTime()
| simtime_t getOldestUnitTxTime | ( | ) |
Returns the TX time of the unit which is not retransmitting for the longest period of time, inside this process (the oldest PDU TX time).
- Returns
- TX time of the oldest unit in this process
◆ readyUnitsIds()
|
virtual |
Returns a list of IDs of ready for retransmission units of this process.
- Returns
- list of unit IDs which are ready for RTX
◆ emptyUnitsIds()
|
virtual |
Returns a list of IDs of empty units inside this process.
- Returns
- empty units IDs list.
◆ selectedUnitsIds()
|
virtual |
Returns a list of IDs of selected units.
- Returns
- selected units IDs list.
◆ isEmpty()
| bool isEmpty | ( | ) |
Tells if the process is empty: all of its units are in EMPTY state.
- Returns
- true if the process is empty, false if it isn't
◆ getPduId()
| long getPduId | ( | Codeword | cw | ) |
This is necessary because when a PDU is in CORRECT state at the corresponding H-ARQ RX process, it may be extracted and potentially deleted, so PDU reference cannot be used to retrieve the PDU ID when feedback is received, because feedback is received 1 TTI after PDU extraction at the RX process!
- Parameters
-
unitId unit ID
- Returns
- PDU ID
References numHarqUnits_.
◆ isHarqProcessActive()
|
virtual |
Check if the process is active
- Returns
- true if at least one unit status is not TXHARQ_PDU_EMPTY
Member Data Documentation
◆ macOwner_
|
protected |
reference to mac module, used to handle errors
◆ units_
|
protected |
contained units vector
◆ numProcesses_
|
protected |
total number of processes in this H-ARQ buffer
◆ numHarqUnits_
|
protected |
number of contained H-ARQ units
Referenced by getPduId().
◆ acid_
|
protected |
H-ARQ process identifier.
◆ numEmptyUnits_
|
protected |
Number of empty units inside this process.
◆ numSelected_
|
protected |
Number of selected units inside this process.
◆ dropped_
|
protected |
Set this flag when a handover or a D2D switch occurs, so that the HARQ process was interrupted. This is useful in case the process receives a feedback after reset.
Generated by