39#ifndef MMAC_UW_TLOHI_H
40#define MMAC_UW_TLOHI_H
54#define HDR_TLOHI(P) (hdr_tlohi::access(P))
56#define TLOHI_DROP_REASON_WRONG_STATE "WST"
57#define TLOHI_DROP_REASON_WRONG_RECEIVER "WRCV"
58#define TLOHI_DROP_REASON_UNKNOWN_TYPE "UPT"
59#define TLOHI_DROP_REASON_BUFFER_FULL "DBF"
63static const int prop_speed =
204 virtual void expire(Event *e);
230 virtual void expire(Event *e);
268 virtual int command(
int argc,
const char *
const *argv);
353 virtual void txAck();
358 virtual void rxTone(Packet *p);
363 virtual void rxAck(Packet *p);
368 virtual void rxElse(Packet *p);
512 Packet::free(
Q.front());
556 return MMac::resetStats();
566 return (up_data_pkts_rx -
Q.size());
590 return up_data_pkts_rx;
677 static map<TLOHI_STATUS, string>
680 static map<TLOHI_REASON_STATUS, string>
Definition uw-mac-TLohi.h:214
virtual void expire(Event *e)
Definition uw-mac-TLohi.cpp:205
DataTimer(MMacTLOHI *m)
Definition uw-mac-TLohi.h:219
Definition uw-mac-TLohi.h:239
virtual double getCRduration()
Definition uw-mac-TLohi.h:326
virtual void initMphyIds()
Definition uw-mac-TLohi.cpp:504
virtual int command(int argc, const char *const *argv)
Definition uw-mac-TLohi.cpp:285
double tone_data_delay
Definition uw-mac-TLohi.h:615
virtual void stateWaitXAck()
Definition uw-mac-TLohi.cpp:1286
int curr_dest_addr
Definition uw-mac-TLohi.h:643
ofstream fout
Definition uw-mac-TLohi.h:688
virtual void exitBackoff()
Definition uw-mac-TLohi.cpp:600
static map< TLOHI_STATUS, string > status_info
Definition uw-mac-TLohi.h:678
int buffer_pkts
Definition uw-mac-TLohi.h:616
virtual int getTonePktsRx()
Definition uw-mac-TLohi.h:582
virtual void stateDataReceived(Packet *data_pkt)
Definition uw-mac-TLohi.cpp:1339
virtual void resetStats()
Definition uw-mac-TLohi.h:552
queue< Packet * > Q
Definition uw-mac-TLohi.h:618
int u_data_id
Definition uw-mac-TLohi.h:666
virtual void stateSleep()
Definition uw-mac-TLohi.cpp:1249
virtual void Phy2MacEndRx(Packet *p)
Definition uw-mac-TLohi.cpp:840
int last_data_id_rx
Definition uw-mac-TLohi.h:645
virtual void stateWaitEndContention()
Definition uw-mac-TLohi.cpp:1204
virtual void setSessionDistance(double distance)
Definition uw-mac-TLohi.h:484
double backoff_start_time
Definition uw-mac-TLohi.h:660
virtual void recvFromUpperLayers(Packet *p)
Definition uw-mac-TLohi.cpp:632
bool mphy_ids_initialized
Definition uw-mac-TLohi.h:631
virtual int getRemainingPkts()
Definition uw-mac-TLohi.h:564
double wait_costant
Definition uw-mac-TLohi.h:606
Timer timer
Definition uw-mac-TLohi.h:671
virtual void incrTonePktsTx()
Definition uw-mac-TLohi.h:528
virtual void incrCurrTxRounds()
Definition uw-mac-TLohi.h:496
virtual void stateTxAck()
Definition uw-mac-TLohi.cpp:1300
virtual void rxAck(Packet *p)
Definition uw-mac-TLohi.cpp:1068
virtual int getUpLayersDataPktsRx()
Definition uw-mac-TLohi.h:588
TLOHI_MODE op_mode
Definition uw-mac-TLohi.h:637
virtual void refreshReason(TLOHI_REASON_STATUS reason)
Definition uw-mac-TLohi.h:464
virtual void incrTonePktsRx()
Definition uw-mac-TLohi.h:536
virtual void waitForUser()
Definition uw-mac-TLohi.cpp:1389
static map< TLOHI_PKT_TYPE, string > pkt_type_info
Definition uw-mac-TLohi.h:683
static map< TLOHI_REASON_STATUS, string > reason_info
Definition uw-mac-TLohi.h:681
virtual int countContenders(double time)
Definition uw-mac-TLohi.cpp:710
virtual void rxTone(Packet *p)
Definition uw-mac-TLohi.cpp:983
virtual int getTonePktsTx()
Definition uw-mac-TLohi.h:573
bool TxActive
Definition uw-mac-TLohi.h:620
int tone_pkts_rx
Definition uw-mac-TLohi.h:595
virtual void txTone()
Definition uw-mac-TLohi.cpp:1078
virtual void stateIdle()
Definition uw-mac-TLohi.cpp:1129
virtual void initData()
Definition uw-mac-TLohi.cpp:416
double backoff_tuner
Definition uw-mac-TLohi.h:604
int ACK_size
Definition uw-mac-TLohi.h:609
int txsn
Definition uw-mac-TLohi.h:667
bool print_transitions
Definition uw-mac-TLohi.h:626
static bool initialized
Definition uw-mac-TLohi.h:629
bool has_buffer_queue
Definition uw-mac-TLohi.h:633
virtual void queuePop(bool flag)
Definition uw-mac-TLohi.h:510
int curr_contenders
Definition uw-mac-TLohi.h:647
virtual void Phy2MacEndTx(const Packet *p)
Definition uw-mac-TLohi.cpp:737
int tone_pkts_tx
Definition uw-mac-TLohi.h:594
TLOHI_ACK_MODE ack_mode
Definition uw-mac-TLohi.h:636
double DATA_listen_timeout
Definition uw-mac-TLohi.h:611
virtual double computeTxTime(TLOHI_PKT_TYPE type)
Definition uw-mac-TLohi.cpp:565
virtual void stateStartContention()
Definition uw-mac-TLohi.cpp:1167
virtual void printStateInfo(double delay=0)
Definition uw-mac-TLohi.cpp:1364
double session_distance
Definition uw-mac-TLohi.h:657
static int u_pkt_id
Definition uw-mac-TLohi.h:665
double CR_duration
Definition uw-mac-TLohi.h:641
virtual void initPkt(Packet *p, TLOHI_PKT_TYPE pkt_type)
Definition uw-mac-TLohi.cpp:665
virtual void checkPhyInit()
Definition uw-mac-TLohi.cpp:405
virtual int crLayCommand(ClMessage *m)
Definition uw-mac-TLohi.cpp:391
virtual void txData()
Definition uw-mac-TLohi.cpp:1090
virtual void stateTxData()
Definition uw-mac-TLohi.cpp:1259
virtual void checkDataPhy()
Definition uw-mac-TLohi.cpp:1121
TLOHI_REASON_STATUS last_reason
Definition uw-mac-TLohi.h:652
double max_prop_delay
Definition uw-mac-TLohi.h:601
virtual void stateWaitCR()
Definition uw-mac-TLohi.cpp:1238
int max_tx_rounds
Definition uw-mac-TLohi.h:602
bool backoff_pending
Definition uw-mac-TLohi.h:622
TLOHI_STATUS prev_state
Definition uw-mac-TLohi.h:655
virtual void stateBackoff()
Definition uw-mac-TLohi.cpp:1187
virtual void incrCurrTxTries()
Definition uw-mac-TLohi.h:544
virtual void stateWaitAck()
Definition uw-mac-TLohi.cpp:1273
TLOHI_STATUS curr_state
Definition uw-mac-TLohi.h:654
int data_phy_id
Definition uw-mac-TLohi.h:640
virtual void refreshState(TLOHI_STATUS state)
Definition uw-mac-TLohi.h:455
int curr_tx_rounds
Definition uw-mac-TLohi.h:649
string tcl_modulation
Definition uw-mac-TLohi.h:669
Packet * curr_data_pkt
Definition uw-mac-TLohi.h:646
int max_payload
Definition uw-mac-TLohi.h:607
int tone_phy_id
Definition uw-mac-TLohi.h:639
MMacTLOHI()
Definition uw-mac-TLohi.cpp:224
virtual void initInfo()
Definition uw-mac-TLohi.cpp:449
double sleep_timeout
Definition uw-mac-TLohi.h:610
double recontend_time
Definition uw-mac-TLohi.h:614
int HDR_size
Definition uw-mac-TLohi.h:608
virtual void rxElse(Packet *p)
Definition uw-mac-TLohi.cpp:1073
virtual void txAck()
Definition uw-mac-TLohi.cpp:1108
DataTimer data_phy_timer
Definition uw-mac-TLohi.h:672
virtual void stateRecontendWindow()
Definition uw-mac-TLohi.cpp:1315
double backoff_duration
Definition uw-mac-TLohi.h:661
int curr_tx_tries
Definition uw-mac-TLohi.h:650
virtual void stateCountContenders()
Definition uw-mac-TLohi.cpp:1217
bool tone_transmitted
Definition uw-mac-TLohi.h:624
virtual void resetSession()
Definition uw-mac-TLohi.cpp:556
double ACK_timeout
Definition uw-mac-TLohi.h:613
virtual void setDestAddr(int mac_addr)
Definition uw-mac-TLohi.h:476
double max_tx_tries
Definition uw-mac-TLohi.h:603
int last_data_id_tx
Definition uw-mac-TLohi.h:644
bool session_active
Definition uw-mac-TLohi.h:621
virtual void Phy2MacStartRx(const Packet *p)
Definition uw-mac-TLohi.cpp:818
virtual void getBackoffTime()
Definition uw-mac-TLohi.cpp:610
double backoff_remaining
Definition uw-mac-TLohi.h:662
virtual ~MMacTLOHI()
Definition uw-mac-TLohi.cpp:279
Definition uw-mac-TLohi.h:188
virtual void expire(Event *e)
Definition uw-mac-TLohi.cpp:97
Timer(MMacTLOHI *m)
Definition uw-mac-TLohi.h:193
Definition uw-mac-TLohi.h:148
int data_sn
Definition uw-mac-TLohi.h:155
double ts
Definition uw-mac-TLohi.h:150
static int & offset()
Definition uw-mac-TLohi.h:163
static struct hdr_tlohi * access(const Packet *p)
Definition uw-mac-TLohi.h:172
TLOHI_PKT_TYPE pkt_type
Definition uw-mac-TLohi.h:152
static int offset_
Definition uw-mac-TLohi.h:157
packet_t orig_type
Definition uw-mac-TLohi.h:153
int sn
Definition uw-mac-TLohi.h:151
TIMER_STATUS
Definition uw-mac-TLohi.h:143
@ RUNNING
Definition uw-mac-TLohi.h:143
@ FREEZED
Definition uw-mac-TLohi.h:143
@ STOPPED
Definition uw-mac-TLohi.h:143
TLOHI_ACK_MODE
Definition uw-mac-TLohi.h:125
@ ACK_MODE
Definition uw-mac-TLohi.h:125
@ NO_ACK_MODE
Definition uw-mac-TLohi.h:125
TLOHI_PKT_TYPE
Definition uw-mac-TLohi.h:119
@ TONE_PKT
Definition uw-mac-TLohi.h:119
@ DATAMAX_PKT
Definition uw-mac-TLohi.h:119
@ ACK_PKT
Definition uw-mac-TLohi.h:119
@ DATA_PKT
Definition uw-mac-TLohi.h:119
TLOHI_STATUS
Definition uw-mac-TLohi.h:69
@ STATE_COUNT_CONTENDERS
Definition uw-mac-TLohi.h:81
@ STATE_WAIT_END_CONTENTION
Definition uw-mac-TLohi.h:73
@ STATE_WAIT_XACK
Definition uw-mac-TLohi.h:83
@ STATE_TX_DATA
Definition uw-mac-TLohi.h:74
@ STATE_WAIT_END_CR
Definition uw-mac-TLohi.h:80
@ STATE_DATA_RECEIVED
Definition uw-mac-TLohi.h:78
@ STATE_RECONTEND_WINDOW
Definition uw-mac-TLohi.h:82
@ STATE_IDLE
Definition uw-mac-TLohi.h:70
@ STATE_SLEEP
Definition uw-mac-TLohi.h:75
@ STATE_START_CONTENTION
Definition uw-mac-TLohi.h:72
@ STATE_BACKOFF
Definition uw-mac-TLohi.h:71
@ STATE_NOT_SET
Definition uw-mac-TLohi.h:84
@ STATE_ACK_RECEIVED
Definition uw-mac-TLohi.h:79
@ STATE_TX_ACK
Definition uw-mac-TLohi.h:76
@ STATE_WAIT_ACK
Definition uw-mac-TLohi.h:77
TLOHI_MODE
Definition uw-mac-TLohi.h:132
@ AGGRESSIVE_UNSYNC_MODE
Definition uw-mac-TLohi.h:134
@ SYNC_MODE
Definition uw-mac-TLohi.h:135
@ CONSERVATIVE_UNSYNC_MODE
Definition uw-mac-TLohi.h:133
packet_t PT_TLOHI
Definition initlib.cpp:47
TLOHI_REASON_STATUS
Definition uw-mac-TLohi.h:91
@ REASON_DATA_EMPTY
Definition uw-mac-TLohi.h:109
@ REASON_BACKOFF_TIMEOUT
Definition uw-mac-TLohi.h:104
@ REASON_ACK_TIMEOUT
Definition uw-mac-TLohi.h:105
@ REASON_XDATA_RX
Definition uw-mac-TLohi.h:99
@ REASON_NO_CONTENDERS
Definition uw-mac-TLohi.h:96
@ REASON_CONTENDERS
Definition uw-mac-TLohi.h:97
@ REASON_XACK_TIMEOUT
Definition uw-mac-TLohi.h:110
@ REASON_DATA_PENDING
Definition uw-mac-TLohi.h:93
@ REASON_MAX_TX_TRIES
Definition uw-mac-TLohi.h:112
@ REASON_ACK_TX
Definition uw-mac-TLohi.h:102
@ REASON_RECONTEND_END
Definition uw-mac-TLohi.h:107
@ REASON_SLEEP_TIMEOUT
Definition uw-mac-TLohi.h:106
@ REASON_XACK_RX
Definition uw-mac-TLohi.h:100
@ REASON_TONE_RX
Definition uw-mac-TLohi.h:94
@ REASON_NOT_SET
Definition uw-mac-TLohi.h:111
@ REASON_DATA_RX
Definition uw-mac-TLohi.h:98
@ REASON_TONE_TX
Definition uw-mac-TLohi.h:92
@ REASON_DATA_TX
Definition uw-mac-TLohi.h:101
@ REASON_CR_END
Definition uw-mac-TLohi.h:108
@ REASON_ACK_RX
Definition uw-mac-TLohi.h:103
@ REASON_WAIT_CR_END
Definition uw-mac-TLohi.h:95