DESERT 4.0.0
uwsr.h
Go to the documentation of this file.
1//
2// Copyright (c) 2017 Regents of the SIGNET lab, University of Padova.
3// All rights reserved.
4//
5// Redistribution and use in source and binary forms, with or without
6// modification, are permitted provided that the following conditions
7// are met:
8// 1. Redistributions of source code must retain the above copyright
9// notice, this list of conditions and the following disclaimer.
10// 2. Redistributions in binary form must reproduce the above copyright
11// notice, this list of conditions and the following disclaimer in the
12// documentation and/or other materials provided with the distribution.
13// 3. Neither the name of the University of Padova (SIGNET lab) nor the
14// names of its contributors may be used to endorse or promote products
15// derived from this software without specific prior written permission.
16//
17// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
21// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28//
29
49#ifndef UWSR_H
50#define UWSR_H
51
52#include <fstream>
53#include <iostream>
54#include <mac.h>
55#include <map>
56#include <mmac.h>
57#include <set>
58#include <string>
59#include <utility>
60
61#include <mphy.h>
62
63#define UWSR_DROP_REASON_WRONG_STATE "WST"
64#define UWSR_DROP_REASON_WRONG_RECEIVER "WRCV"
65#define UWSR_DROP_REASON_UNKNOWN_TYPE "UPT"
66#define UWSR_DROP_REASON_BUFFER_FULL "DBF"
67#define UWSR_DROP_REASON_ERROR "ERR"
68
69extern packet_t PT_MMAC_ACK;
70
71typedef int pktSeqNum;
72typedef double txStartTime;
73typedef int macAddress;
74typedef int txRounds;
75typedef pair<macAddress, pktSeqNum> usrPair;
76typedef pair<double, double> rttPair;
77typedef pair<int, int> txStatusPair;
78
84class MMacUWSR : public MMac
85{
86
87public:
91 MMacUWSR();
92
96 virtual ~MMacUWSR();
97
106 virtual int command(int argc, const char *const *argv);
107
108protected:
137
165
171
183
189
194 class UWSRTimer : public TimerHandler
195 {
196
197 public:
202 : TimerHandler()
203 , start_time(0.0)
204 , left_duration(0.0)
205 , counter(0)
206 , module(m)
208 {
209 assert(m != NULL);
210 }
211
215 virtual ~UWSRTimer()
216 {
217 }
218
225 virtual void
227 {
228 assert(timer_status == UWSR_RUNNING);
229 left_duration -= (NOW - start_time);
230 if (left_duration <= 0.0)
231 left_duration = module->mac2phy_delay_;
232 force_cancel();
234 }
235
240 virtual void
242 {
243 assert(timer_status == UWSR_FROZEN);
244 start_time = NOW;
245 assert(left_duration > 0);
246 sched(left_duration);
248 }
249
253 virtual void
255 {
257 force_cancel();
258 }
259
264 virtual void
265 schedule(double val)
266 {
267 start_time = NOW;
268 left_duration = val;
270 resched(val);
271 }
272
277 bool
279 {
280 return (timer_status == UWSR_IDLE);
281 }
282
287 bool
289 {
290 return (timer_status == UWSR_RUNNING);
291 }
292
297 bool
299 {
300 return (timer_status == UWSR_EXPIRED);
301 }
302
307 bool
309 {
310 return (timer_status == UWSR_FROZEN);
311 }
312
317 bool
319 {
320 return (timer_status == UWSR_FROZEN ||
322 }
323
327 void
329 {
330 counter = 0;
331 }
332
337 void
339 {
340 ++counter;
341 }
342
347 int
349 {
350 return counter;
351 }
352
357 double
359 {
360 return left_duration;
361 }
362
367 double
369 {
370 return NOW - start_time;
371 }
372
373 protected:
374 double start_time;
380 MMacUWSR *module;
383 };
384
388 class BackOffTimer : public UWSRTimer
389 {
390
391 public:
396 : UWSRTimer(m)
397 {
398 }
399
404 {
405 }
406
407 protected:
412 virtual void expire(Event *e);
413 };
414
418 class AckTimer : public UWSRTimer
419 {
420
421 public:
426 : UWSRTimer(m)
427 {
428 }
429
433 virtual ~AckTimer()
434 {
435 }
436
437 protected:
442 virtual void expire(Event *e);
443 };
444
448 class ListenTimer : public UWSRTimer
449 {
450
451 public:
456 : UWSRTimer(m)
457 {
458 }
459
463 virtual ~ListenTimer()
464 {
465 }
466
467 protected:
472 virtual void expire(Event *e);
473 };
474
478 class WaitTxTimer : public UWSRTimer
479 {
480
481 public:
486 : UWSRTimer(m)
487 {
488 }
489
493 virtual ~WaitTxTimer()
494 {
495 }
496
497 protected:
502 virtual void expire(Event *e);
503 };
504
510 virtual void recvFromUpperLayers(Packet *p);
511
516 virtual void Mac2PhyStartTx(Packet *p);
517
522 virtual void Phy2MacEndTx(const Packet *p);
523
528 virtual void Phy2MacStartRx(const Packet *p);
529
534 virtual void Phy2MacEndRx(Packet *p);
535
542 virtual double computeTxTime(UWSR_PKT_TYPE type);
543
554 virtual void initPkt(Packet *p, UWSR_PKT_TYPE pkt_type, int dest_addr = 0);
555
561 virtual double getBackoffTime();
562
566 inline void
568 {
570 }
571
577 inline int
579 {
580 return backoff_count;
581 }
582
587 virtual void statePreTxData();
588
593 virtual void txAck(int dest_addr);
594
599 virtual void stateIdle();
600
604 virtual void stateRxIdle();
605
610 virtual void stateTxData();
611
615 virtual void stateTxAck(int dest_addr);
616
621 virtual void stateBackoff();
622
628 virtual void stateRxBackoff();
629
634 virtual void stateWaitAck();
635
640 virtual void stateRxinPreTxData();
641
648 virtual void stateRxWaitAck();
649
653 virtual void stateListen();
654
658 virtual void stateRxListen();
659
664 virtual void stateCheckListenExpired();
665
670 virtual void stateCheckAckExpired();
671
676 virtual void stateCheckBackoffExpired();
677
682 virtual void stateCheckWaitTxExpired();
683
689 virtual void stateRxData(Packet *p);
690
696 virtual void stateRxAck(Packet *p);
697
703 virtual void stateRxPacketNotForMe(Packet *p);
704
709 virtual void printStateInfo(double delay = 0);
710
714 virtual void initInfo();
715
722 virtual void
729
734 virtual void
736 {
737 last_reason = reason;
738 }
739
743 virtual void exitBackoff();
744
749 virtual double
751 {
752 return (rttsamples > 0) ? sumrtt / rttsamples : 0;
753 }
754
759 virtual void
761 {
762 last_data_id_rx = id;
763 }
764 virtual void waitForUser();
765
766 // stats functions
772 virtual int
774 {
775 return (up_data_pkts_rx - mapPacket.size());
776 }
777
781 virtual void
783 {
784 up_data_pkts_rx++;
785 }
786
792 virtual int
793 getPktSeqNum(Packet *p)
794 {
795 hdr_cmn *ch = hdr_cmn::access(p);
796 return ch->uid();
797 }
798
805 virtual int
806 getMacAddress(Packet *p)
807 {
808 hdr_mac *mach = HDR_MAC(p);
809 return mach->macDA();
810 }
811
813
820 inline bool chkItemInmapTxRounds(int mac_addr, int seq_num);
821
827 inline void
828 setCurrTxRounds(int mac_addr, int seq_num)
829 {
830 curr_tx_rounds = 1;
831 mapTxRounds.insert(
832 make_pair(make_pair(mac_addr, seq_num), curr_tx_rounds));
833 }
834
840 inline void
841 incrCurrTxRounds(int mac_addr, int seq_num)
842 {
843 map<usrPair, txRounds>::iterator it_t;
844 it_t = mapTxRounds.find(make_pair(mac_addr, seq_num));
845 (*it_t).second += 1;
846 }
847
854 inline int
855 getCurrTxRounds(int mac_addr, int seq_num)
856 {
857 map<usrPair, txRounds>::iterator it_t;
858 it_t = mapTxRounds.find(make_pair(mac_addr, seq_num));
859 return ((*it_t).second);
860 }
861
868 inline void
869 eraseItemFromTxRounds(int mac_addr, int seq_num)
870 {
871 map<usrPair, txRounds>::iterator it_t;
872 it_t = mapTxRounds.find(make_pair(mac_addr, seq_num));
873 mapTxRounds.erase((*it_t).first);
874 }
875
877
881 inline void
882 putPktInQueue(Packet *p)
883 {
884 mapPacket.insert(
885 make_pair(make_pair(getMacAddress(p), getPktSeqNum(p)), p));
886 }
887
892 inline void
893 eraseItemFromPktQueue(int mac_addr, int seq_num)
894 {
895 map<usrPair, Packet *>::iterator it_p;
896 it_p = mapPacket.find(make_pair(mac_addr, seq_num));
897 Packet::free((*it_p).second);
898 mapPacket.erase((*it_p).first);
899 }
900
902
908 inline void
909 putAckTimerInMap(int mac_addr, int seq_num)
910 {
911 mapAckTimer.insert(make_pair(make_pair(mac_addr, seq_num), ack_timer));
912 }
913
920 inline void
921 eraseItemFrommapAckTimer(int mac_addr, int seq_num)
922 {
923 map<usrPair, AckTimer>::iterator it_a;
924 it_a = mapAckTimer.find(make_pair(mac_addr, seq_num));
925 mapAckTimer.erase((*it_a).first);
926 }
927
933 inline void
934 putStartTxTimeInMap(int mac_addr, int seq_num, double start_tx_time)
935 {
936 mapCalcAck.insert(
937 make_pair(make_pair(mac_addr, seq_num), start_tx_time));
938 }
939
946 inline void
947 eraseItemFrommapCalcAck(int mac_addr, int seq_num)
948 {
949 map<usrPair, txStartTime>::iterator it_ca;
950 it_ca = mapCalcAck.find(make_pair(mac_addr, seq_num));
951 mapCalcAck.erase((*it_ca).first);
952 }
953
961 virtual int checkAckTimer(CHECK_ACK_TIMER type);
962
968
976 virtual bool checkMultipleTx(int rcv_mac_addr);
977
984 virtual int getPktsCanSendIn1RTT(int mac_addr);
985
993 virtual void putRTTInMap(int mac_addr, double rtt);
994
1000 inline double
1001 getRTTInMap(int mac_addr)
1002 {
1003 map<macAddress, rttPair>::iterator it_d;
1004 it_d = mapRTT.find(mac_addr);
1005 return (it_d->second).first;
1006 }
1007
1011 inline void
1013 {
1015 }
1016
1020 inline void
1022 {
1023 pkts_sent_1RTT = 0;
1024 }
1025
1030 inline int
1032 {
1033 return pkts_sent_1RTT;
1034 }
1035
1040 inline void
1042 {
1043 acks_rcv_1RTT++;
1044 }
1045
1049 inline void
1051 {
1052 acks_rcv_1RTT = 0;
1053 }
1054
1059 inline int
1061 {
1062 return acks_rcv_1RTT;
1063 }
1064
1068 inline void
1070 {
1072 }
1073
1077 inline void
1079 {
1081 }
1082
1087 inline int
1089 {
1090 return pkts_lost_counter;
1091 }
1092
1103 virtual bool prepBeforeTx(int mac_addr, int seq_num);
1104
1111 virtual double calcWaitTxTime(int mac_addr);
1112
1120 inline void updateTxStatus(macAddress mac_addr, int rcv_acks);
1121
1128 virtual int calWindowSize(macAddress mac_addr);
1129
1133 inline void
1139
1143 inline double
1145 {
1146 double x = (double) total_pkts_tx / (double) hit_count;
1147 return x;
1148 }
1149
1160 double alpha_;
1165 double guard_time;
1167 double node_speed;
1168 double var_k;
1171
1172 static bool initialized;
1176 static const double prop_speed;
1184 double srtt;
1185 double sumrtt;
1186 double sumrtt2;
1203 double sumwtt;
1213 int txsn;
1239 static map<UWSR_STATUS, string>
1242 static map<UWSR_REASON_STATUS, string>
1245 static map<UWSR_PKT_TYPE, string>
1249 map<usrPair, Packet *>
1251 map<usrPair, txRounds> mapTxRounds;
1254 map<usrPair, AckTimer> mapAckTimer;
1256 map<usrPair, txStartTime> mapCalcAck;
1259 map<macAddress, rttPair> mapRTT;
1261 map<macAddress, txStatusPair>
1267 ofstream fout;
1268};
1269
1270#endif /* UWSR_H */
Definition uwsr.h:419
AckTimer(MMacUWSR *m)
Definition uwsr.h:425
virtual ~AckTimer()
Definition uwsr.h:433
virtual void expire(Event *e)
Definition uwsr.cpp:70
Definition uwsr.h:389
virtual void expire(Event *e)
Definition uwsr.cpp:97
virtual ~BackOffTimer()
Definition uwsr.h:403
BackOffTimer(MMacUWSR *m)
Definition uwsr.h:395
Definition uwsr.h:449
ListenTimer(MMacUWSR *m)
Definition uwsr.h:455
virtual void expire(Event *e)
Definition uwsr.cpp:120
virtual ~ListenTimer()
Definition uwsr.h:463
Definition uwsr.h:195
int counter
Definition uwsr.h:378
UWSRTimer(MMacUWSR *m)
Definition uwsr.h:201
virtual void stop()
Definition uwsr.h:254
MMacUWSR *UWSR_TIMER_STATUS timer_status
Definition uwsr.h:382
void resetCounter()
Definition uwsr.h:328
bool isIdle()
Definition uwsr.h:278
bool isRunning()
Definition uwsr.h:288
double leftDuration()
Definition uwsr.h:368
virtual ~UWSRTimer()
Definition uwsr.h:215
virtual void unFreeze()
Definition uwsr.h:241
bool isFrozen()
Definition uwsr.h:308
double start_time
Definition uwsr.h:374
void incrCounter()
Definition uwsr.h:338
virtual void schedule(double val)
Definition uwsr.h:265
virtual void freeze()
Definition uwsr.h:226
double left_duration
Definition uwsr.h:376
double getDuration()
Definition uwsr.h:358
int getCounter()
Definition uwsr.h:348
bool isActive()
Definition uwsr.h:318
bool isExpired()
Definition uwsr.h:298
Definition uwsr.h:479
virtual ~WaitTxTimer()
Definition uwsr.h:493
virtual void expire(Event *e)
Definition uwsr.cpp:143
WaitTxTimer(MMacUWSR *m)
Definition uwsr.h:485
This is the base class of MMacUWSR protocol, which is a derived class of MMac.
Definition uwsr.h:85
static bool initialized
Definition uwsr.h:1172
virtual void refreshState(UWSR_STATUS state)
Definition uwsr.h:723
void eraseItemFromPktQueue(int mac_addr, int seq_num)
Definition uwsr.h:893
int rttsamples
Definition uwsr.h:1187
double wait_constant
Definition uwsr.h:1153
double ACK_timeout
Definition uwsr.h:1158
virtual void printStateInfo(double delay=0)
Definition uwsr.cpp:1584
virtual void stateCheckWaitTxExpired()
Definition uwsr.cpp:1161
void setBackoffCount()
Definition uwsr.h:567
AckTimer ack_timer
Definition uwsr.h:1223
double var_k
Definition uwsr.h:1168
int ACK_size
Definition uwsr.h:1157
void putPktInQueue(Packet *p)
handling packets
Definition uwsr.h:882
UWSR_TIMER_STATUS
Definition uwsr.h:177
@ UWSR_FROZEN
Definition uwsr.h:180
@ UWSR_EXPIRED
Definition uwsr.h:181
@ UWSR_IDLE
Definition uwsr.h:178
@ UWSR_RUNNING
Definition uwsr.h:179
int getBackoffCount()
Definition uwsr.h:578
double sumwtt
Definition uwsr.h:1203
virtual void updateLastDataIdRx(int id)
Definition uwsr.h:760
void updateTxStatus(macAddress mac_addr, int rcv_acks)
Definition uwsr.cpp:344
virtual bool checkMultipleTx(int rcv_mac_addr)
Definition uwsr.cpp:495
bool print_transitions
Definition uwsr.h:1179
map< macAddress, txStatusPair > mapTxStatus
Definition uwsr.h:1262
virtual void stateTxData()
Definition uwsr.cpp:997
void putAckTimerInMap(int mac_addr, int seq_num)
managing ack
Definition uwsr.h:909
virtual void stateListen()
Definition uwsr.cpp:1257
int total_pkts_tx
Definition uwsr.h:1221
void putStartTxTimeInMap(int mac_addr, int seq_num, double start_tx_time)
Definition uwsr.h:934
virtual void waitForUser()
Definition uwsr.cpp:1609
int pkts_sent_1RTT
Definition uwsr.h:1206
UWSR_STATUS prev_prev_state
Definition uwsr.h:1236
int hit_count
Definition uwsr.h:1219
UWSR_STATUS curr_state
Definition uwsr.h:1231
ListenTimer listen_timer
Definition uwsr.h:1225
void incrPktsLostCount()
Definition uwsr.h:1069
virtual int checkAckTimer(CHECK_ACK_TIMER type)
Definition uwsr.cpp:541
void incrPktsSentIn1RTT()
Definition uwsr.h:1012
map< macAddress, rttPair > mapRTT
Definition uwsr.h:1259
int txsn
Definition uwsr.h:1213
virtual void eraseExpiredItemsFrommapAckandCalc()
Definition uwsr.cpp:606
virtual void initPkt(Packet *p, UWSR_PKT_TYPE pkt_type, int dest_addr=0)
Definition uwsr.cpp:713
WaitTxTimer wait_tx_timer
Definition uwsr.h:1226
int backoff_count
Definition uwsr.h:1194
int getCurrTxRounds(int mac_addr, int seq_num)
Definition uwsr.h:855
virtual double calcWaitTxTime(int mac_addr)
Definition uwsr.cpp:459
MMacUWSR()
Definition uwsr.cpp:173
virtual void incrUpperDataRx()
Definition uwsr.h:782
map< usrPair, txRounds > mapTxRounds
Definition uwsr.h:1251
CHECK_ACK_TIMER
Definition uwsr.h:188
@ CHECK_IDLE
Definition uwsr.h:188
@ CHECK_ACTIVE
Definition uwsr.h:188
@ CHECK_EXPIRED
Definition uwsr.h:188
int uwsr_debug
Definition uwsr.h:1169
virtual void Mac2PhyStartTx(Packet *p)
Definition uwsr.cpp:738
double node_speed
Definition uwsr.h:1167
virtual int getPktSeqNum(Packet *p)
Definition uwsr.h:793
bool chkItemInmapTxRounds(int mac_addr, int seq_num)
handling transmission round
Definition uwsr.cpp:445
int prv_mac_addr
Definition uwsr.h:1217
void incrAcksRcvIn1RTT()
Definition uwsr.h:1041
virtual void stateRxPacketNotForMe(Packet *p)
Definition uwsr.cpp:1030
virtual int getPktsCanSendIn1RTT(int mac_addr)
Definition uwsr.cpp:406
virtual void stateTxAck(int dest_addr)
Definition uwsr.cpp:1478
double srtt
Definition uwsr.h:1184
virtual int getRemainingPkts()
Definition uwsr.h:773
virtual bool prepBeforeTx(int mac_addr, int seq_num)
Definition uwsr.cpp:1323
double guard_time
Definition uwsr.h:1165
virtual void recvFromUpperLayers(Packet *p)
Definition uwsr.cpp:693
void calTotalPktsTx()
Definition uwsr.h:1134
double max_backoff_counter
Definition uwsr.h:1161
int last_data_id_rx
Definition uwsr.h:1191
map< usrPair, txStartTime > mapCalcAck
Definition uwsr.h:1256
virtual void stateIdle()
Definition uwsr.cpp:1222
double latest_ack_timeout
Definition uwsr.h:1215
double getAvgPktsTxIn1RTT()
Definition uwsr.h:1144
virtual void initInfo()
Definition uwsr.cpp:282
void rstPktsSentIn1RTT()
Definition uwsr.h:1021
int curr_tx_rounds
Definition uwsr.h:1189
virtual double getRTT()
Definition uwsr.h:750
UWSR_PKT_TYPE
Definition uwsr.h:170
@ UWSR_DATAMAX_PKT
Definition uwsr.h:170
@ UWSR_ACK_PKT
Definition uwsr.h:170
@ UWSR_DATA_PKT
Definition uwsr.h:170
ofstream fout
Definition uwsr.h:1267
virtual void stateRxIdle()
Definition uwsr.cpp:1248
virtual int calWindowSize(macAddress mac_addr)
Definition uwsr.cpp:361
virtual double computeTxTime(UWSR_PKT_TYPE type)
Definition uwsr.cpp:634
virtual void stateCheckAckExpired()
Definition uwsr.cpp:1106
static const double prop_speed
Definition uwsr.h:1176
virtual void Phy2MacStartRx(const Packet *p)
Definition uwsr.cpp:896
void eraseItemFrommapAckTimer(int mac_addr, int seq_num)
Definition uwsr.h:921
UWSR_REASON_STATUS
Definition uwsr.h:142
@ UWSR_REASON_ACK_RX
Definition uwsr.h:147
@ UWSR_REASON_DATA_PENDING
Definition uwsr.h:143
@ UWSR_REASON_WAIT_TX
Definition uwsr.h:161
@ UWSR_REASON_LISTEN_TIMEOUT
Definition uwsr.h:155
@ UWSR_REASON_DATA_TX
Definition uwsr.h:145
@ UWSR_REASON_DATA_RX
Definition uwsr.h:144
@ UWSR_REASON_ACK_TIMEOUT
Definition uwsr.h:149
@ UWSR_REASON_ACK_TX
Definition uwsr.h:146
@ UWSR_REASON_BACKOFF_PENDING
Definition uwsr.h:153
@ UWSR_REASON_DATA_EMPTY
Definition uwsr.h:150
@ UWSR_REASON_WAIT_ACK_PENDING
Definition uwsr.h:159
@ UWSR_REASON_LISTEN_PENDING
Definition uwsr.h:156
@ UWSR_REASON_BACKOFF_TIMEOUT
Definition uwsr.h:148
@ UWSR_REASON_MAX_TX_TRIES
Definition uwsr.h:152
@ UWSR_REASON_LISTEN
Definition uwsr.h:154
@ UWSR_REASON_WAIT_TX_TIMEOUT
Definition uwsr.h:163
@ UWSR_REASON_PKT_ERROR
Definition uwsr.h:160
@ UWSR_REASON_NOT_SET
Definition uwsr.h:151
@ UWSR_REASON_PKT_NOT_FOR_ME
Definition uwsr.h:158
@ UWSR_REASON_START_RX
Definition uwsr.h:157
@ UWSR_REASON_WAIT_TX_PENDING
Definition uwsr.h:162
void rstPktsLostCount()
Definition uwsr.h:1078
double backoff_tuner
Definition uwsr.h:1152
virtual ~MMacUWSR()
Definition uwsr.cpp:239
int max_tx_tries
Definition uwsr.h:1151
virtual int command(int argc, const char *const *argv)
Definition uwsr.cpp:245
virtual void stateRxinPreTxData()
Definition uwsr.cpp:1469
UWSR_STATUS
Definition uwsr.h:112
@ UWSR_STATE_RX_BACKOFF
Definition uwsr.h:127
@ UWSR_STATE_NOT_SET
Definition uwsr.h:120
@ UWSR_STATE_CHK_LISTEN_TIMEOUT
Definition uwsr.h:123
@ UWSR_STATE_IDLE
Definition uwsr.h:113
@ UWSR_STATE_TX_DATA
Definition uwsr.h:115
@ UWSR_STATE_CHK_WAIT_TX_TIMEOUT
Definition uwsr.h:131
@ UWSR_STATE_ACK_RX
Definition uwsr.h:119
@ UWSR_STATE_RX_IN_PRE_TX_DATA
Definition uwsr.h:135
@ UWSR_STATE_TX_ACK
Definition uwsr.h:116
@ UWSR_STATE_PRE_TX_DATA
Definition uwsr.h:134
@ UWSR_STATE_RX_IDLE
Definition uwsr.h:125
@ UWSR_STATE_CHK_ACK_TIMEOUT
Definition uwsr.h:122
@ UWSR_STATE_RX_DATA_TX_DATA
Definition uwsr.h:133
@ UWSR_STATE_CHK_BACKOFF_TIMEOUT
Definition uwsr.h:124
@ UWSR_STATE_RX_LISTEN
Definition uwsr.h:126
@ UWSR_STATE_LISTEN
Definition uwsr.h:121
@ UWSR_STATE_DATA_RX
Definition uwsr.h:118
@ UWSR_STATE_WRONG_PKT_RX
Definition uwsr.h:129
@ UWSR_STATE_WAIT_TX
Definition uwsr.h:130
@ UWSR_STATE_WAIT_ACK_WAIT_TX
Definition uwsr.h:132
@ UWSR_STATE_BACKOFF
Definition uwsr.h:114
@ UWSR_STATE_RX_WAIT_ACK
Definition uwsr.h:128
@ UWSR_STATE_WAIT_ACK
Definition uwsr.h:117
int max_payload
Definition uwsr.h:1155
virtual void stateRxListen()
Definition uwsr.cpp:1278
double wait_tx_time
Definition uwsr.h:1201
virtual void stateBackoff()
Definition uwsr.cpp:1287
int getAcksRcvIn1RTT()
Definition uwsr.h:1060
virtual void stateRxData(Packet *p)
Definition uwsr.cpp:1493
void eraseItemFrommapCalcAck(int mac_addr, int seq_num)
Definition uwsr.h:947
int pkt_tx_count
Definition uwsr.h:1196
int getPktsSentIn1RTT()
Definition uwsr.h:1031
static map< UWSR_STATUS, string > status_info
Definition uwsr.h:1240
UWSR_REASON_STATUS last_reason
Definition uwsr.h:1228
virtual double getBackoffTime()
Definition uwsr.cpp:669
double start_tx_time
Definition uwsr.h:1183
void eraseItemFromTxRounds(int mac_addr, int seq_num)
Definition uwsr.h:869
static map< UWSR_PKT_TYPE, string > pkt_type_info
Definition uwsr.h:1246
double getRTTInMap(int mac_addr)
Definition uwsr.h:1001
double round_trip_time
Definition uwsr.h:1200
virtual void Phy2MacEndTx(const Packet *p)
Definition uwsr.cpp:749
virtual void stateRxBackoff()
Definition uwsr.cpp:1313
int recv_data_id
Definition uwsr.h:1192
int last_sent_data_id
Definition uwsr.h:1177
int getPktsLostCount()
Definition uwsr.h:1088
UWSR_STATUS prev_state
Definition uwsr.h:1234
Packet * curr_data_pkt
Definition uwsr.h:1198
double listen_time
Definition uwsr.h:1164
virtual void txAck(int dest_addr)
Definition uwsr.cpp:1020
int pkts_lost_counter
Definition uwsr.h:1209
virtual int getMacAddress(Packet *p)
Definition uwsr.h:806
void rstAcksRcvIn1RTT()
Definition uwsr.h:1050
virtual void statePreTxData()
Definition uwsr.cpp:1361
void incrCurrTxRounds(int mac_addr, int seq_num)
Definition uwsr.h:841
int HDR_size
Definition uwsr.h:1156
int buffer_pkts
Definition uwsr.h:1159
int wttsamples
Definition uwsr.h:1204
double alpha_
Definition uwsr.h:1160
static map< UWSR_REASON_STATUS, string > reason_info
Definition uwsr.h:1243
map< usrPair, Packet * > mapPacket
Definition uwsr.h:1250
int window_size
Definition uwsr.h:1210
virtual void Phy2MacEndRx(Packet *p)
Definition uwsr.cpp:935
int acks_rcv_1RTT
Definition uwsr.h:1207
virtual void exitBackoff()
Definition uwsr.cpp:663
BackOffTimer backoff_timer
Definition uwsr.h:1224
virtual void stateCheckListenExpired()
Definition uwsr.cpp:1075
bool has_buffer_queue
Definition uwsr.h:1180
virtual void stateCheckBackoffExpired()
Definition uwsr.cpp:1135
virtual void stateRxAck(Packet *p)
Definition uwsr.cpp:1513
void setCurrTxRounds(int mac_addr, int seq_num)
Definition uwsr.h:828
double sumrtt2
Definition uwsr.h:1186
double sumrtt
Definition uwsr.h:1185
virtual void putRTTInMap(int mac_addr, double rtt)
Definition uwsr.cpp:381
virtual void stateRxWaitAck()
Definition uwsr.cpp:1460
virtual void stateWaitAck()
Definition uwsr.cpp:1448
map< usrPair, AckTimer > mapAckTimer
Definition uwsr.h:1254
virtual void refreshReason(UWSR_REASON_STATUS reason)
Definition uwsr.h:735
std::pair< int, int > counter
Definition uwinterference.h:53
int pktSeqNum
Definition uwsr.h:71
pair< double, double > rttPair
Definition uwsr.h:76
pair< int, int > txStatusPair
Definition uwsr.h:77
int txRounds
Definition uwsr.h:74
pair< macAddress, pktSeqNum > usrPair
Definition uwsr.h:75
packet_t PT_MMAC_ACK
Definition initlib.cpp:44
double txStartTime
Definition uwsr.h:72
int macAddress
Definition uwsr.h:73