A Discrete-Event Network Simulator
API
channel-coordinator.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * This program is free software; you can redistribute it and/or modify
4  * it under the terms of the GNU General Public License version 2 as
5  * published by the Free Software Foundation;
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software
14  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15  *
16  * Author: Junling Bu <linlinjavaer@gmail.com>
17  */
18 #ifndef CHANNEL_COORDINATOR_H
19 #define CHANNEL_COORDINATOR_H
20 #include "ns3/nstime.h"
21 #include "ns3/object.h"
22 #include "ns3/event-id.h"
23 
24 namespace ns3 {
25 
30 class ChannelCoordinationListener : public SimpleRefCount<ChannelCoordinationListener>
31 {
32 public:
33  virtual ~ChannelCoordinationListener (void);
37  virtual void NotifyCchSlotStart (Time duration) = 0;
41  virtual void NotifySchSlotStart (Time duration) = 0;
46  virtual void NotifyGuardSlotStart (Time duration, bool cchi) = 0;
47 };
71 class ChannelCoordinator : public Object
72 {
73 public:
78  static TypeId GetTypeId (void);
80  virtual ~ChannelCoordinator ();
81 
85  static Time GetDefaultCchInterval (void);
89  static Time GetDefaultSchInterval (void);
93  static Time GetDefaultSyncInterval (void);
97  static Time GetDefaultGuardInterval (void);
98 
102  void SetCchInterval (Time cchi);
106  Time GetCchInterval (void) const;
110  void SetSchInterval (Time schi);
114  Time GetSchInterval (void) const;
118  Time GetSyncInterval (void) const;
122  void SetGuardInterval (Time guardi);
126  Time GetGuardInterval (void) const;
133  bool IsValidConfig (void) const;
134 
139  bool IsCchInterval (Time duration = Seconds (0.0)) const;
144  bool IsSchInterval (Time duration = Seconds (0.0)) const;
149  bool IsGuardInterval (Time duration = Seconds (0.0)) const;
155  Time NeedTimeToCchInterval (Time duration = Seconds (0.0)) const;
161  Time NeedTimeToSchInterval (Time duration = Seconds (0.0)) const;
167  Time NeedTimeToGuardInterval (Time duration = Seconds (0.0)) const;
177  Time GetIntervalTime (Time duration = Seconds (0.0)) const;
187  Time GetRemainTime (Time duration = Seconds (0.0)) const;
204  void UnregisterAllListeners (void);
205 
206 private:
207  virtual void DoDispose (void);
208  virtual void DoInitialize (void);
209 
213  void StartChannelCoordination (void);
217  void StopChannelCoordination (void);
221  void NotifySchSlot (void);
225  void NotifyCchSlot (void);
229  void NotifyGuardSlot (void);
233  Time GetSchSlot (void) const;
237  Time GetCchSlot (void) const;
238 
242 
244  typedef std::vector<Ptr<ChannelCoordinationListener> > Listeners;
246  typedef std::vector<Ptr<ChannelCoordinationListener> >::iterator ListenersI;
248 
249  uint32_t m_guardCount;
251 };
252 
253 }
254 #endif /* CHANNEL_COORDINATOR_H */
ns3::TypeId
a unique identifier for an interface.
Definition: type-id.h:59
ns3::ChannelCoordinator::GetIntervalTime
Time GetIntervalTime(Time duration=Seconds(0.0)) const
Definition: channel-coordinator.cc:282
ns3::ChannelCoordinator::StopChannelCoordination
void StopChannelCoordination(void)
stop channel coordination events
Definition: channel-coordinator.cc:347
ns3::EventId
An identifier for simulation events.
Definition: event-id.h:54
ns3::ChannelCoordinator::GetCchInterval
Time GetCchInterval(void) const
Definition: channel-coordinator.cc:131
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::ChannelCoordinator::NeedTimeToCchInterval
Time NeedTimeToCchInterval(Time duration=Seconds(0.0)) const
Definition: channel-coordinator.cc:243
ns3::ChannelCoordinator::DoInitialize
virtual void DoInitialize(void)
Initialize() implementation.
Definition: channel-coordinator.cc:73
ns3::ChannelCoordinationListener::~ChannelCoordinationListener
virtual ~ChannelCoordinationListener(void)
Definition: channel-coordinator.cc:30
ns3::ChannelCoordinator::IsSchInterval
bool IsSchInterval(Time duration=Seconds(0.0)) const
Definition: channel-coordinator.cc:195
ns3::ChannelCoordinator::m_gi
Time m_gi
GuardInterval.
Definition: channel-coordinator.h:241
ns3::SimpleRefCount
A template-based reference counting class.
Definition: simple-ref-count.h:74
ns3::ChannelCoordinator::UnregisterListener
void UnregisterListener(Ptr< ChannelCoordinationListener > listener)
Definition: channel-coordinator.cc:307
ns3::ChannelCoordinator::SetCchInterval
void SetCchInterval(Time cchi)
Definition: channel-coordinator.cc:124
ns3::ChannelCoordinator::ListenersI
std::vector< Ptr< ChannelCoordinationListener > >::iterator ListenersI
Listeners iterator typedef.
Definition: channel-coordinator.h:246
ns3::ChannelCoordinator::GetSchInterval
Time GetSchInterval(void) const
Definition: channel-coordinator.cc:145
ns3::ChannelCoordinationListener::NotifyGuardSlotStart
virtual void NotifyGuardSlotStart(Time duration, bool cchi)=0
ns3::ChannelCoordinator::GetDefaultGuardInterval
static Time GetDefaultGuardInterval(void)
Definition: channel-coordinator.cc:113
ns3::ChannelCoordinator::NeedTimeToSchInterval
Time NeedTimeToSchInterval(Time duration=Seconds(0.0)) const
Definition: channel-coordinator.cc:254
ns3::ChannelCoordinator::NotifyGuardSlot
void NotifyGuardSlot(void)
notify listeners of a guard slot start
Definition: channel-coordinator.cc:379
ns3::Ptr< ChannelCoordinationListener >
ns3::ChannelCoordinator::m_guardCount
uint32_t m_guardCount
guard count
Definition: channel-coordinator.h:249
ns3::ChannelCoordinator::m_cchi
Time m_cchi
CchInterval.
Definition: channel-coordinator.h:239
ns3::ChannelCoordinator::ChannelCoordinator
ChannelCoordinator()
Definition: channel-coordinator.cc:61
ns3::ChannelCoordinationListener
receive notifications about channel coordination events.
Definition: channel-coordinator.h:31
ns3::Object
A base class which provides memory management and object aggregation.
Definition: object.h:88
ns3::ChannelCoordinator::StartChannelCoordination
void StartChannelCoordination(void)
start to make channel coordination events
Definition: channel-coordinator.cc:329
ns3::ChannelCoordinator::GetSchSlot
Time GetSchSlot(void) const
Definition: channel-coordinator.cc:173
ns3::ChannelCoordinationListener::NotifyCchSlotStart
virtual void NotifyCchSlotStart(Time duration)=0
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:104
ns3::ChannelCoordinator::IsGuardInterval
bool IsGuardInterval(Time duration=Seconds(0.0)) const
Definition: channel-coordinator.cc:202
ns3::ChannelCoordinator::Listeners
std::vector< Ptr< ChannelCoordinationListener > > Listeners
Listeners typdef.
Definition: channel-coordinator.h:244
ns3::ChannelCoordinator::NotifyCchSlot
void NotifyCchSlot(void)
notify listeners of a CCH slot start
Definition: channel-coordinator.cc:368
ns3::ChannelCoordinator::IsValidConfig
bool IsValidConfig(void) const
Definition: channel-coordinator.cc:212
ns3::ChannelCoordinator::DoDispose
virtual void DoDispose(void)
Destructor implementation.
Definition: channel-coordinator.cc:80
ns3::ChannelCoordinator::GetRemainTime
Time GetRemainTime(Time duration=Seconds(0.0)) const
Definition: channel-coordinator.cc:292
ns3::ChannelCoordinator
ChannelCoordinator deals with channel coordination in data plane (see 1609.4 chapter 5....
Definition: channel-coordinator.h:72
ns3::ChannelCoordinator::UnregisterAllListeners
void UnregisterAllListeners(void)
Remove all listeners.
Definition: channel-coordinator.cc:322
ns3::ChannelCoordinator::GetDefaultSchInterval
static Time GetDefaultSchInterval(void)
Definition: channel-coordinator.cc:97
ns3::ChannelCoordinator::RegisterListener
void RegisterListener(Ptr< ChannelCoordinationListener > listener)
Definition: channel-coordinator.cc:299
ns3::Seconds
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition: nstime.h:1289
ns3::ChannelCoordinator::SetSchInterval
void SetSchInterval(Time schi)
Definition: channel-coordinator.cc:138
ns3::ChannelCoordinator::GetTypeId
static TypeId GetTypeId(void)
Get the type ID.
Definition: channel-coordinator.cc:39
ns3::ChannelCoordinationListener::NotifySchSlotStart
virtual void NotifySchSlotStart(Time duration)=0
ns3::ChannelCoordinator::~ChannelCoordinator
virtual ~ChannelCoordinator()
Definition: channel-coordinator.cc:67
ns3::ChannelCoordinator::NotifySchSlot
void NotifySchSlot(void)
notify listeners of a SCH slot start
Definition: channel-coordinator.cc:357
ns3::ChannelCoordinator::m_coordination
EventId m_coordination
coordination event
Definition: channel-coordinator.h:250
ns3::ChannelCoordinator::SetGuardInterval
void SetGuardInterval(Time guardi)
Definition: channel-coordinator.cc:159
ns3::ChannelCoordinator::GetCchSlot
Time GetCchSlot(void) const
Definition: channel-coordinator.cc:180
ns3::ChannelCoordinator::m_schi
Time m_schi
SchInterval.
Definition: channel-coordinator.h:240
ns3::ChannelCoordinator::GetGuardInterval
Time GetGuardInterval(void) const
Definition: channel-coordinator.cc:166
ns3::ChannelCoordinator::NeedTimeToGuardInterval
Time NeedTimeToGuardInterval(Time duration=Seconds(0.0)) const
Definition: channel-coordinator.cc:265
ns3::ChannelCoordinator::GetDefaultCchInterval
static Time GetDefaultCchInterval(void)
Definition: channel-coordinator.cc:88
ns3::ChannelCoordinator::GetSyncInterval
Time GetSyncInterval(void) const
Definition: channel-coordinator.cc:152
ns3::ChannelCoordinator::IsCchInterval
bool IsCchInterval(Time duration=Seconds(0.0)) const
Definition: channel-coordinator.cc:187
ns3::ChannelCoordinator::m_listeners
Listeners m_listeners
listeners
Definition: channel-coordinator.h:247
ns3::ChannelCoordinator::GetDefaultSyncInterval
static Time GetDefaultSyncInterval(void)
Definition: channel-coordinator.cc:106