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"
75typedef pair<macAddress, pktSeqNum>
usrPair;
106 virtual int command(
int argc,
const char *
const *argv);
412 virtual void expire(Event *e);
442 virtual void expire(Event *e);
472 virtual void expire(Event *e);
502 virtual void expire(Event *e);
593 virtual void txAck(
int dest_addr);
775 return (up_data_pkts_rx -
mapPacket.size());
795 hdr_cmn *ch = hdr_cmn::access(p);
808 hdr_mac *mach = HDR_MAC(p);
809 return mach->macDA();
843 map<usrPair, txRounds>::iterator it_t;
844 it_t =
mapTxRounds.find(make_pair(mac_addr, seq_num));
857 map<usrPair, txRounds>::iterator it_t;
858 it_t =
mapTxRounds.find(make_pair(mac_addr, seq_num));
859 return ((*it_t).second);
871 map<usrPair, txRounds>::iterator it_t;
872 it_t =
mapTxRounds.find(make_pair(mac_addr, seq_num));
895 map<usrPair, Packet *>::iterator it_p;
896 it_p =
mapPacket.find(make_pair(mac_addr, seq_num));
897 Packet::free((*it_p).second);
923 map<usrPair, AckTimer>::iterator it_a;
924 it_a =
mapAckTimer.find(make_pair(mac_addr, seq_num));
949 map<usrPair, txStartTime>::iterator it_ca;
950 it_ca =
mapCalcAck.find(make_pair(mac_addr, seq_num));
993 virtual void putRTTInMap(
int mac_addr,
double rtt);
1003 map<macAddress, rttPair>::iterator it_d;
1004 it_d =
mapRTT.find(mac_addr);
1005 return (it_d->second).first;
1239 static map<UWSR_STATUS, string>
1242 static map<UWSR_REASON_STATUS, string>
1245 static map<UWSR_PKT_TYPE, string>
1249 map<usrPair, Packet *>
1261 map<macAddress, txStatusPair>
AckTimer(MMacUWSR *m)
Definition uwsr.h:425
virtual ~AckTimer()
Definition uwsr.h:433
virtual void expire(Event *e)
Definition uwsr.cpp:70
virtual void expire(Event *e)
Definition uwsr.cpp:97
virtual ~BackOffTimer()
Definition uwsr.h:403
BackOffTimer(MMacUWSR *m)
Definition uwsr.h:395
ListenTimer(MMacUWSR *m)
Definition uwsr.h:455
virtual void expire(Event *e)
Definition uwsr.cpp:120
virtual ~ListenTimer()
Definition uwsr.h:463
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
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