46 unsigned int amWindowSize_ = 512;
47 unsigned int pollPdu_ = 0;
48 unsigned int pollByte_ = 0;
49 simtime_t tPollRetransmit_;
53 std::list<inet::Packet *> sduQueue_;
54 unsigned int frontOffset_ = 0;
55 unsigned int sduQueueBytes_ = 0;
61 inet::Packet *pdu =
nullptr;
62 uint32_t payloadLength = 0;
64 friend std::ostream& operator<<(std::ostream& os,
const TxPdu& e) {
65 os <<
"pdu=" << (e.pdu ? e.pdu->getName() :
"null") <<
" len=" << e.payloadLength;
69 std::map<uint32_t, TxPdu> txWindow_;
71 uint32_t txNextAck_ = 0;
73 RlcRetransmissionBuffer *rtxBuffer_ =
nullptr;
74 std::list<omnetpp::cPacket *> controlBuffer_;
77 unsigned int pduWithoutPoll_ = 0;
78 unsigned int byteWithoutPoll_ = 0;
80 bool pollPending_ =
false;
81 omnetpp::cMessage *tPollRetransmitTimer_ =
nullptr;
84 simtime_t lastSduSample_;
85 unsigned int sduSampleBytes_ = 0;
90 void enque(inet::Packet *sdu)
override;
91 void sendPdus(
int size)
override;
92 void bufferControlPdu(cPacket *pkt)
override;
93 void handleControlPacket(cPacket *pkt)
override;
94 unsigned int getPendingDataVolume()
const override;
97 void initialize(
int stage)
override;
98 void handleMessage(cMessage *msg)
override;
101 virtual void processControlPacket(inet::Packet *pkt);
102 virtual void bufferControlPduInternal(inet::Packet *pkt);
103 virtual bool sendRetransmission(
int pduSize);
104 virtual void buildAndSendPdu(
int pduSize);
105 virtual bool checkPolling(uint32_t sn);
106 virtual void sendEmptyPdu();
107 virtual void sendPduToMac(inet::Packet *pkt);
108 virtual void sendNewDataNotification(inet::Packet *pkt);
109 virtual void reportBufferStatus();
111 bool windowFull()
const {
return txNext_ - txNextAck_ >= amWindowSize_; }