A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
vsa-manager.h
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2013 Dalian University of Technology
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License version 2 as
6
* published by the Free Software Foundation;
7
*
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
12
*
13
* You should have received a copy of the GNU General Public License
14
* along with this program; if not, write to the Free Software
15
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16
*
17
* Author: Junling Bu <linlinjavaer@gmail.com>
18
*/
19
#ifndef VSA_MANAGER_H
20
#define VSA_MANAGER_H
21
#include <vector>
22
#include "
wave-net-device.h
"
23
24
namespace
ns3
{
25
34
enum
VsaTransmitInterval
35
{
36
VSA_TRANSMIT_IN_CCHI
= 1,
37
VSA_TRANSMIT_IN_SCHI
= 2,
38
VSA_TRANSMIT_IN_BOTHI
= 3,
39
};
40
62
struct
VsaInfo
63
{
64
Mac48Address
peer
;
65
OrganizationIdentifier
oi
;
66
uint8_t
managementId
;
67
Ptr<Packet>
vsc
;
68
uint32_t
channelNumber
;
69
uint8_t
repeatRate
;
70
enum
VsaTransmitInterval
sendInterval
;
71
82
VsaInfo
(
Mac48Address
peer
,
OrganizationIdentifier
identifier, uint8_t manageId,
Ptr<Packet>
vscPacket,
83
uint32_t
channel
, uint8_t repeat,
enum
VsaTransmitInterval
interval)
84
:
peer
(
peer
),
85
oi
(identifier),
86
managementId
(manageId),
87
vsc
(vscPacket),
88
channelNumber
(
channel
),
89
repeatRate
(repeat),
90
sendInterval
(interval)
91
{
92
93
}
94
};
95
119
class
VsaManager
:
public
Object
120
{
121
public
:
126
static
TypeId
GetTypeId
(
void
);
127
VsaManager
(
void
);
128
virtual
~VsaManager
(
void
);
129
133
void
SetWaveNetDevice
(
Ptr<WaveNetDevice>
device);
134
139
void
SetWaveVsaCallback
(
Callback
<
bool
,
Ptr<const Packet>
,
const
Address
&, uint32_t, uint32_t> vsaCallback);
140
144
void
SendVsa
(
const
VsaInfo
&vsaInfo);
148
void
RemoveAll
(
void
);
152
void
RemoveByChannel
(uint32_t channelNumber);
156
void
RemoveByOrganizationIdentifier
(
const
OrganizationIdentifier
&oi);
157
private
:
158
void
DoDispose
(
void
);
159
void
DoInitialize
(
void
);
160
168
bool
ReceiveVsc
(
Ptr<WifiMac>
mac
,
const
OrganizationIdentifier
&oi,
Ptr<const Packet>
vsc,
const
Address
&src);
169
171
const
static
uint32_t
VSA_REPEAT_PERIOD
= 5;
172
174
struct
VsaWork
175
{
176
Mac48Address
peer
;
177
OrganizationIdentifier
oi
;
178
Ptr<Packet>
vsc
;
179
uint32_t
channelNumber
;
180
enum
VsaTransmitInterval
sentInterval
;
181
Time
repeatPeriod
;
182
EventId
repeat
;
183
};
184
190
void
DoRepeat
(
VsaWork
*vsa);
198
void
DoSendVsa
(
enum
VsaTransmitInterval
interval, uint32_t
channel
,
Ptr<Packet>
vsc,
OrganizationIdentifier
oi,
Mac48Address
peer);
199
200
Callback<bool, Ptr<const Packet>
,
const
Address
&, uint32_t, uint32_t>
m_vsaReceived
;
201
std::vector<VsaWork *>
m_vsas
;
202
Ptr<WaveNetDevice>
m_device
;
203
};
204
205
}
206
#endif
/* VSA_MANAGER_H */
ns3::VsaManager::m_device
Ptr< WaveNetDevice > m_device
the device
Definition:
vsa-manager.h:202
ns3::TypeId
a unique identifier for an interface.
Definition:
type-id.h:59
ns3::VsaInfo
Definition:
vsa-manager.h:63
ns3::VsaInfo::sendInterval
enum VsaTransmitInterval sendInterval
send interval
Definition:
vsa-manager.h:70
ns3::VsaManager::VsaManager
VsaManager(void)
Definition:
vsa-manager.cc:48
ns3::EventId
An identifier for simulation events.
Definition:
event-id.h:54
ns3::VsaManager::~VsaManager
virtual ~VsaManager(void)
Definition:
vsa-manager.cc:54
ns3::Callback
Callback template class.
Definition:
callback.h:1279
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::VSA_TRANSMIT_IN_BOTHI
@ VSA_TRANSMIT_IN_BOTHI
Definition:
vsa-manager.h:38
ns3::VsaManager::VsaWork::repeatPeriod
Time repeatPeriod
repeat period
Definition:
vsa-manager.h:181
ns3::VsaManager::ReceiveVsc
bool ReceiveVsc(Ptr< WifiMac > mac, const OrganizationIdentifier &oi, Ptr< const Packet > vsc, const Address &src)
Definition:
vsa-manager.cc:265
third.channel
channel
Definition:
third.py:92
ns3::VsaManager::VsaWork
VsaWork structure.
Definition:
vsa-manager.h:175
ns3::VsaManager::SendVsa
void SendVsa(const VsaInfo &vsaInfo)
Definition:
vsa-manager.cc:85
ns3::VsaInfo::vsc
Ptr< Packet > vsc
VSC.
Definition:
vsa-manager.h:67
wave-net-device.h
ns3::Mac48Address
an EUI-48 address
Definition:
mac48-address.h:44
ns3::VsaManager::RemoveByChannel
void RemoveByChannel(uint32_t channelNumber)
Definition:
vsa-manager.cc:209
third.mac
mac
Definition:
third.py:99
ns3::VsaManager::VsaWork::channelNumber
uint32_t channelNumber
channel number
Definition:
vsa-manager.h:179
ns3::VsaTransmitInterval
VsaTransmitInterval
indicate which interval the VSA frames will be transmitted in.
Definition:
vsa-manager.h:35
ns3::VSA_TRANSMIT_IN_CCHI
@ VSA_TRANSMIT_IN_CCHI
Definition:
vsa-manager.h:36
ns3::Ptr< Packet >
ns3::VsaInfo::managementId
uint8_t managementId
management ID
Definition:
vsa-manager.h:66
ns3::VsaManager::VsaWork::repeat
EventId repeat
repeat ID
Definition:
vsa-manager.h:182
ns3::Address
a polymophic address class
Definition:
address.h:91
ns3::Object
A base class which provides memory management and object aggregation.
Definition:
object.h:88
ns3::VsaManager
refer to 1609.4-2010 chapter 6.4 Vendor Specific Action (VSA) frames transmission.
Definition:
vsa-manager.h:120
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition:
nstime.h:104
ns3::VsaManager::RemoveByOrganizationIdentifier
void RemoveByOrganizationIdentifier(const OrganizationIdentifier &oi)
Definition:
vsa-manager.cc:234
ns3::VSA_TRANSMIT_IN_SCHI
@ VSA_TRANSMIT_IN_SCHI
Definition:
vsa-manager.h:37
ns3::VsaManager::RemoveAll
void RemoveAll(void)
cancel all VSA transmissions
Definition:
vsa-manager.cc:192
ns3::VsaInfo::repeatRate
uint8_t repeatRate
repeat rate
Definition:
vsa-manager.h:69
ns3::VsaInfo::channelNumber
uint32_t channelNumber
channel number
Definition:
vsa-manager.h:68
ns3::VsaInfo::VsaInfo
VsaInfo(Mac48Address peer, OrganizationIdentifier identifier, uint8_t manageId, Ptr< Packet > vscPacket, uint32_t channel, uint8_t repeat, enum VsaTransmitInterval interval)
Initializer.
Definition:
vsa-manager.h:82
ns3::VsaManager::VSA_REPEAT_PERIOD
static const uint32_t VSA_REPEAT_PERIOD
A number of VSA frames will be transmitted repeatedly during the period of 5s.
Definition:
vsa-manager.h:171
ns3::VsaManager::m_vsas
std::vector< VsaWork * > m_vsas
VSAs.
Definition:
vsa-manager.h:201
ns3::VsaInfo::peer
Mac48Address peer
peer
Definition:
vsa-manager.h:64
ns3::VsaManager::GetTypeId
static TypeId GetTypeId(void)
Get the type ID.
Definition:
vsa-manager.cc:38
ns3::VsaManager::SetWaveVsaCallback
void SetWaveVsaCallback(Callback< bool, Ptr< const Packet >, const Address &, uint32_t, uint32_t > vsaCallback)
Set wave vsa callback function.
Definition:
vsa-manager.cc:258
ns3::VsaInfo::oi
OrganizationIdentifier oi
OI.
Definition:
vsa-manager.h:65
ns3::VsaManager::DoSendVsa
void DoSendVsa(enum VsaTransmitInterval interval, uint32_t channel, Ptr< Packet > vsc, OrganizationIdentifier oi, Mac48Address peer)
Definition:
vsa-manager.cc:127
ns3::VsaManager::VsaWork::sentInterval
enum VsaTransmitInterval sentInterval
VSA transmit interval.
Definition:
vsa-manager.h:180
ns3::VsaManager::m_vsaReceived
Callback< bool, Ptr< const Packet >, const Address &, uint32_t, uint32_t > m_vsaReceived
VSA received callback.
Definition:
vsa-manager.h:200
ns3::VsaManager::DoInitialize
void DoInitialize(void)
Initialize() implementation.
Definition:
vsa-manager.cc:68
ns3::VsaManager::VsaWork::vsc
Ptr< Packet > vsc
VSC.
Definition:
vsa-manager.h:178
ns3::VsaManager::SetWaveNetDevice
void SetWaveNetDevice(Ptr< WaveNetDevice > device)
Definition:
vsa-manager.cc:78
ns3::VsaManager::DoRepeat
void DoRepeat(VsaWork *vsa)
Definition:
vsa-manager.cc:119
ns3::VsaManager::VsaWork::peer
Mac48Address peer
peer
Definition:
vsa-manager.h:176
ns3::VsaManager::VsaWork::oi
OrganizationIdentifier oi
OI.
Definition:
vsa-manager.h:177
ns3::OrganizationIdentifier
the organization identifier is a public organizationally unique identifier assigned by the IEEE.
Definition:
vendor-specific-action.h:54
ns3::VsaManager::DoDispose
void DoDispose(void)
Destructor implementation.
Definition:
vsa-manager.cc:60
src
wave
model
vsa-manager.h
Generated on Fri Oct 1 2021 17:03:41 for ns-3 by
1.8.20