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