EMANE
1.2.1
unicastrtsctsposttxstate.cc
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2013-2014 - Adjacent Link LLC, Bridgewater, New Jersey
3
* Copyright (c) 2008 - DRS CenGen, LLC, Columbia, Maryland
4
* All rights reserved.
5
*
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions
8
* are met:
9
*
10
* * Redistributions of source code must retain the above copyright
11
* notice, this list of conditions and the following disclaimer.
12
* * Redistributions in binary form must reproduce the above copyright
13
* notice, this list of conditions and the following disclaimer in
14
* the documentation and/or other materials provided with the
15
* distribution.
16
* * Neither the name of DRS CenGen, LLC nor the names of its
17
* contributors may be used to endorse or promote products derived
18
* from this software without specific prior written permission.
19
*
20
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31
* POSSIBILITY OF SUCH DAMAGE.
32
*/
33
34
#include "
unicastrtsctsposttxstate.h
"
35
#include "
unicastrtsctspretxstate.h
"
36
#include "
idletxstate.h
"
37
38
#include "
maclayer.h
"
39
40
EMANE::Models::IEEE80211ABG::UnicastRtsCtsPostTxState::UnicastRtsCtsPostTxState
()
41
{ }
42
43
EMANE::Models::IEEE80211ABG::UnicastRtsCtsPostTxState::~UnicastRtsCtsPostTxState
()
44
{ }
45
46
47
bool
48
EMANE::Models::IEEE80211ABG::UnicastRtsCtsPostTxState::process
(
MACLayer
* pMgr,
DownstreamQueueEntry
&entry)
49
{
50
if
(entry.
bCollisionOccured_
==
true
)
51
{
52
if
(entry.
numRetries_
>= entry.
maxRetries_
)
53
{
54
// change state to idle tx state
55
changeState
(pMgr,
IdleTxStateSingleton::instance
());
56
57
// set discard due to retries
58
pMgr->
getStatistics
().
incrementDownstreamUnicastRtsCtsDataDiscardDueToRetries
();
59
60
// drop
61
return
false
;
62
}
63
else
64
{
65
// bump num retries
66
++entry.
numRetries_
;
67
68
// set pre/post tx delay time
69
pMgr->
setDelayTime
(entry);
70
71
// change state to unicast rts cts pre tx state
72
changeState
(pMgr,
UnicastRtsCtsPreTxStateSingleton::instance
());
73
74
// retry
75
return
true
;
76
}
77
}
78
else
79
{
80
// change state to idle tx state
81
changeState
(pMgr,
IdleTxStateSingleton::instance
());
82
83
// done
84
return
false
;
85
}
86
}
87
88
89
90
91
std::pair<EMANE::TimePoint,bool>
92
EMANE::Models::IEEE80211ABG::UnicastRtsCtsPostTxState::getWaitTime
(
DownstreamQueueEntry
& entry)
93
{
94
// return post tx delay time
95
return
{entry.
durationMicroseconds_
+ entry.
postTxDelayMicroseconds_
+ entry.
txTime_
,
true
};
96
}
97
98
99
const
char
*
100
EMANE::Models::IEEE80211ABG::UnicastRtsCtsPostTxState::statename
()
101
{
102
return
"UnicastRtsCtsPostTxState"
;
103
}
EMANE::Models::IEEE80211ABG::DownstreamQueueEntry::numRetries_
std::uint8_t numRetries_
Definition:
downstreamqueueentry.h:63
EMANE::Models::IEEE80211ABG::MACLayer::setDelayTime
void setDelayTime(IEEE80211ABG::DownstreamQueueEntry &entry)
Definition:
models/mac/ieee80211abg/maclayer.cc:1429
EMANE::Models::IEEE80211ABG::DownstreamQueueEntry
structure defines the mac downstream packet queue entry
Definition:
downstreamqueueentry.h:52
EMANE::Models::IEEE80211ABG::UnicastRtsCtsPostTxState::statename
const char * statename()
Definition:
unicastrtsctsposttxstate.cc:100
idletxstate.h
EMANE::Models::IEEE80211ABG::MACStatistics::incrementDownstreamUnicastRtsCtsDataDiscardDueToRetries
void incrementDownstreamUnicastRtsCtsDataDiscardDueToRetries()
increment braodcast data discard due to exhausted retries
Definition:
macstatistics.cc:208
EMANE::Models::IEEE80211ABG::UnicastRtsCtsPostTxState::getWaitTime
std::pair< TimePoint, bool > getWaitTime(DownstreamQueueEntry &)
Definition:
unicastrtsctsposttxstate.cc:92
EMANE::Models::IEEE80211ABG::TransmissionTxState::changeState
void changeState(MACLayer *, TransmissionTxState *)
Definition:
transmissiontxstate.cc:47
EMANE::Models::IEEE80211ABG::DownstreamQueueEntry::durationMicroseconds_
Microseconds durationMicroseconds_
Definition:
downstreamqueueentry.h:57
unicastrtsctspretxstate.h
EMANE::Models::IEEE80211ABG::UnicastRtsCtsPostTxState::~UnicastRtsCtsPostTxState
~UnicastRtsCtsPostTxState()
Definition:
unicastrtsctsposttxstate.cc:43
maclayer.h
EMANE::Models::IEEE80211ABG::UnicastRtsCtsPostTxState::process
bool process(MACLayer *, DownstreamQueueEntry &)
Definition:
unicastrtsctsposttxstate.cc:48
EMANE::Models::IEEE80211ABG::UnicastRtsCtsPostTxState::UnicastRtsCtsPostTxState
UnicastRtsCtsPostTxState()
Definition:
unicastrtsctsposttxstate.cc:40
EMANE::Models::IEEE80211ABG::DownstreamQueueEntry::postTxDelayMicroseconds_
Microseconds postTxDelayMicroseconds_
Definition:
downstreamqueueentry.h:59
EMANE::Models::IEEE80211ABG::MACLayer::getStatistics
MACStatistics & getStatistics()
Definition:
models/mac/ieee80211abg/maclayer.cc:2070
EMANE::Utils::Singleton< IdleTxState >::instance
static IdleTxState * instance()
Definition:
singleton.h:56
EMANE::Models::IEEE80211ABG::DownstreamQueueEntry::maxRetries_
std::uint8_t maxRetries_
Definition:
downstreamqueueentry.h:64
unicastrtsctsposttxstate.h
EMANE::Models::IEEE80211ABG::DownstreamQueueEntry::txTime_
TimePoint txTime_
Definition:
downstreamqueueentry.h:60
EMANE::Models::IEEE80211ABG::DownstreamQueueEntry::bCollisionOccured_
bool bCollisionOccured_
Definition:
downstreamqueueentry.h:66
EMANE::Models::IEEE80211ABG::MACLayer
IEEE 80211 ABG MAC implementation.
Definition:
models/mac/ieee80211abg/maclayer.h:104
src
models
mac
ieee80211abg
unicastrtsctsposttxstate.cc
Generated by
1.8.13