21 #ifndef SATELLITE_RETURN_LINK_ENCAPSULATOR_ARQ
22 #define SATELLITE_RETURN_LINK_ENCAPSULATOR_ARQ
29 #include <ns3/event-id.h>
30 #include <ns3/mac48-address.h>
72 Mac48Address decapAddress,
73 Mac48Address sourceE2EAddress,
74 Mac48Address destE2EAddress,
76 uint32_t additionalHeaderSize = 0);
104 uint32_t& nextMinTxO);
118 virtual void ReceiveAck(Ptr<SatArqAckMessage> ack);
138 void CleanUp(uint8_t sequenceNumber);
163 void SendAck(uint8_t seqNo)
const;
SatReturnLinkEncapsulatorArq class is inherited from the SatReturnLinkEncapsulator class,...
virtual uint32_t GetTxBufferSizeInBytes() const
Get the buffered packets for this encapsulator.
void ReassembleAndReceive()
Reassemble and receive the received PDUs if possible.
uint32_t m_arqWindowSize
ARQ window size, i.e.
virtual Ptr< Packet > NotifyTxOpportunity(uint32_t bytes, uint32_t &bytesLeft, uint32_t &nextMinTxO)
Notify a Tx opportunity to this encapsulator.
uint32_t m_txedBufferSize
Time m_retransmissionTimer
Retransmission timer, i.e.
Time m_rxWaitingTimer
Waiting time for waiting a certain SN to be received.
SatReturnLinkEncapsulatorArq()
Default constructor, not used.
uint32_t m_maxNoOfRetransmissions
Maximum number of retransmissions.
static TypeId GetTypeId(void)
Get the type ID.
virtual void ReceiveAck(Ptr< SatArqAckMessage > ack)
Receive a control message (ARQ ACK)
uint32_t m_nextExpectedSeqNo
Next expected sequence number at the packet reception.
void SendAck(uint8_t seqNo) const
Send ACK for a given sequence number.
std::map< uint8_t, Ptr< SatArqBufferContext > > m_txedBuffer
Transmitted and retransmission context buffer.
std::map< uint8_t, Ptr< SatArqBufferContext > > m_retxBuffer
uint32_t m_maxRtnArqSegmentSize
Max RTN link ARQ segment size.
void ArqReTxTimerExpired(uint8_t seqNo)
ARQ Tx timer has expired.
virtual void DoDispose()
Dispose of this class instance.
Ptr< SatArqSequenceNumber > m_seqNo
Sequence number handler.
uint32_t m_arqHeaderSize
ARQ header size in Bytes.
void CleanUp(uint8_t sequenceNumber)
Clean-up a certain sequence number.
virtual ~SatReturnLinkEncapsulatorArq()
Destructor for SatReturnLinkEncapsulatorArq.
void RxWaitingTimerExpired(uint32_t sn)
Rx waiting timer for a PDU has expired.
uint32_t ConvertSeqNo(uint8_t seqNo) const
Convert the 8-bit sequence number value from ARQ header into 32-bit continuous sequence number stream...
virtual void ReceivePdu(Ptr< Packet > p)
Receive a packet, thus decapsulate and defragment/deconcatenate if needed.
uint32_t m_retxBufferSize
std::map< uint32_t, Ptr< SatArqBufferContext > > m_reorderingBuffer
key = sequence number value = RLE packet
TypeId GetInstanceTypeId(void) const
SatReturnLinkEncapsulator class is used in the RTN link for RLE encapsulation and fragmentation of hi...
SatArqSequenceNumber is handling the sequence numbers for the ARQ process.