EMANE
1.2.1
unicastrtsctstxstate.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 "
unicastrtsctstxstate.h
"
35
#include "
unicastrtsctsposttxstate.h
"
36
#include "
modetimingparameters.h
"
37
#include "
maclayer.h
"
38
39
EMANE::Models::IEEE80211ABG::UnicastRtsCtsTxState::UnicastRtsCtsTxState
()
40
{ }
41
42
EMANE::Models::IEEE80211ABG::UnicastRtsCtsTxState::~UnicastRtsCtsTxState
()
43
{ }
44
45
46
bool
47
EMANE::Models::IEEE80211ABG::UnicastRtsCtsTxState::process
(
MACLayer
* pMgr,
DownstreamQueueEntry
& entry)
48
{
49
// duration interval unicast rts cts
50
entry.
durationMicroseconds_
=
51
pMgr->
getModeTiming
().
getMessageDurationMicroseconds
(
MSG_TYPE_UNICAST_RTS_CTS_DATA
, entry.
pkt_
.
length
());
52
53
// set tx time
54
entry.
txTime_
= Clock::now();
55
56
// send packet
57
pMgr->
sendDownstreamUnicastData
(entry);
58
59
// change state to unicast rts cts post tx
60
changeState
(pMgr,
UnicastRtsCtsPostTxStateSingleton::instance
());
61
62
// continue to process
63
return
true
;
64
}
65
66
67
std::pair<EMANE::TimePoint,bool>
68
EMANE::Models::IEEE80211ABG::UnicastRtsCtsTxState::getWaitTime
(
DownstreamQueueEntry
&)
69
{
70
// no wait time
71
return
{
TimePoint
{},
false
};
72
}
73
74
75
const
char
*
76
EMANE::Models::IEEE80211ABG::UnicastRtsCtsTxState::statename
()
77
{
78
return
"UnicastRtsCtsTxState"
;
79
}
EMANE::Models::IEEE80211ABG::MACLayer::sendDownstreamUnicastData
void sendDownstreamUnicastData(DownstreamQueueEntry &entry)
Definition:
models/mac/ieee80211abg/maclayer.cc:1262
EMANE::DownstreamPacket::length
size_t length() const
Definition:
downstreampacket.cc:194
EMANE::Models::IEEE80211ABG::UnicastRtsCtsTxState::getWaitTime
std::pair< TimePoint, bool > getWaitTime(DownstreamQueueEntry &)
Definition:
unicastrtsctstxstate.cc:68
EMANE::Models::IEEE80211ABG::DownstreamQueueEntry::pkt_
EMANE::DownstreamPacket pkt_
Definition:
downstreamqueueentry.h:54
EMANE::Models::IEEE80211ABG::MACLayer::getModeTiming
ModeTimingParameters & getModeTiming()
Definition:
models/mac/ieee80211abg/maclayer.cc:2078
EMANE::Models::IEEE80211ABG::UnicastRtsCtsTxState::UnicastRtsCtsTxState
UnicastRtsCtsTxState()
Definition:
unicastrtsctstxstate.cc:39
EMANE::Models::IEEE80211ABG::DownstreamQueueEntry
structure defines the mac downstream packet queue entry
Definition:
downstreamqueueentry.h:52
unicastrtsctstxstate.h
EMANE::Models::IEEE80211ABG::TransmissionTxState::changeState
void changeState(MACLayer *, TransmissionTxState *)
Definition:
transmissiontxstate.cc:47
EMANE::Models::IEEE80211ABG::UnicastRtsCtsTxState::statename
const char * statename()
Definition:
unicastrtsctstxstate.cc:76
EMANE::Models::IEEE80211ABG::DownstreamQueueEntry::durationMicroseconds_
Microseconds durationMicroseconds_
Definition:
downstreamqueueentry.h:57
EMANE::Models::IEEE80211ABG::UnicastRtsCtsTxState::~UnicastRtsCtsTxState
~UnicastRtsCtsTxState()
Definition:
unicastrtsctstxstate.cc:42
maclayer.h
EMANE::Models::IEEE80211ABG::UnicastRtsCtsTxState::process
bool process(MACLayer *, DownstreamQueueEntry &)
Definition:
unicastrtsctstxstate.cc:47
EMANE::TimePoint
Clock::time_point TimePoint
Definition:
types.h:50
modetimingparameters.h
EMANE::Utils::Singleton< UnicastRtsCtsPostTxState >::instance
static UnicastRtsCtsPostTxState * instance()
Definition:
singleton.h:56
EMANE::Models::IEEE80211ABG::ModeTimingParameters::getMessageDurationMicroseconds
Microseconds getMessageDurationMicroseconds(std::uint8_t, size_t) const
get the message duration
Definition:
modetimingparameters.cc:408
unicastrtsctsposttxstate.h
EMANE::Models::IEEE80211ABG::DownstreamQueueEntry::txTime_
TimePoint txTime_
Definition:
downstreamqueueentry.h:60
EMANE::Models::IEEE80211ABG::MSG_TYPE_UNICAST_RTS_CTS_DATA
const std::uint8_t MSG_TYPE_UNICAST_RTS_CTS_DATA
Definition:
msgtypes.h:47
EMANE::Models::IEEE80211ABG::MACLayer
IEEE 80211 ABG MAC implementation.
Definition:
models/mac/ieee80211abg/maclayer.h:104
src
models
mac
ieee80211abg
unicastrtsctstxstate.cc
Generated by
1.8.13