A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
src
wimax
model
cid-factory.cc
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2007,2008,2009 INRIA, UDcast
4
*
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License version 2 as
7
* published by the Free Software Foundation;
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
*
18
* Authors: Jahanzeb Farooq <jahanzeb.farooq@sophia.inria.fr>
19
* Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
20
* <amine.ismail@UDcast.com>
21
*/
22
23
24
#include <stdint.h>
25
#include "
cid-factory.h
"
26
#include "ns3/uinteger.h"
27
28
namespace
ns3
{
29
30
CidFactory::CidFactory
(
void
)
31
: m_m (0x5500),
32
// this is an arbitrary default
33
m_basicIdentifier (1),
34
m_primaryIdentifier (m_m + 1),
35
m_transportOrSecondaryIdentifier (2 * m_m + 1),
36
m_multicastPollingIdentifier (0xff00)
37
{
38
}
39
40
Cid
41
CidFactory::AllocateBasic
(
void
)
42
{
43
NS_ASSERT
(
m_basicIdentifier
<
m_m
);
44
m_basicIdentifier
++;
45
return
Cid
(
m_basicIdentifier
);
46
}
47
48
Cid
49
CidFactory::AllocatePrimary
(
void
)
50
{
51
NS_ASSERT
(
m_primaryIdentifier
< 2 *
m_m
);
52
m_primaryIdentifier
++;
53
return
Cid
(
m_primaryIdentifier
);
54
}
55
56
Cid
57
CidFactory::AllocateTransportOrSecondary
(
void
)
58
{
59
NS_ASSERT
(
m_transportOrSecondaryIdentifier
< 0xfefe);
60
m_transportOrSecondaryIdentifier
++;
61
return
Cid
(
m_transportOrSecondaryIdentifier
);
62
}
63
64
Cid
65
CidFactory::AllocateMulticast
(
void
)
66
{
67
NS_ASSERT
(
m_multicastPollingIdentifier
< 0xfffd);
68
m_multicastPollingIdentifier
++;
69
return
Cid
(
m_multicastPollingIdentifier
);
70
}
71
72
73
Cid
74
CidFactory::Allocate
(
enum
Cid::Type
type)
75
{
76
switch
(type)
77
{
78
case
Cid::BROADCAST
:
79
return
Cid::Broadcast
();
80
case
Cid::INITIAL_RANGING
:
81
return
Cid::InitialRanging
();
82
case
Cid::BASIC
:
83
return
AllocateBasic
();
84
case
Cid::PRIMARY
:
85
return
AllocatePrimary
();
86
case
Cid::TRANSPORT
:
87
return
AllocateTransportOrSecondary
();
88
case
Cid::MULTICAST
:
89
return
AllocateMulticast
();
90
case
Cid::PADDING
:
91
return
Cid::Padding
();
92
default
:
93
NS_FATAL_ERROR
(
"Cannot be reached"
);
94
return
0;
// quiet compiler
95
}
96
}
97
98
bool
99
CidFactory::IsTransport
(
Cid
cid)
const
100
{
101
int
id
= cid.
m_identifier
;
102
return
(
id
- 2 *
m_m
> 0) && (
id
<= 0xfefe);
103
}
104
bool
105
CidFactory::IsPrimary
(
Cid
cid)
const
106
{
107
int
id
= cid.
m_identifier
;
108
return
(
id
-
m_m
> 0) && (
id
<= 2 *
m_m
);
109
}
110
bool
111
CidFactory::IsBasic
(
Cid
cid)
const
112
{
113
uint16_t
id
= cid.
m_identifier
;
114
return
id
>= 1 &&
id
<=
m_m
;
115
}
116
117
118
void
119
CidFactory::FreeCid
(
Cid
cid)
120
{
122
NS_FATAL_ERROR
(
"TODO: Update the cid bitmap properly here-- please implement and contribute a patch"
);
123
}
124
125
}
// namespace ns3
126
127
cid-factory.h
ns3::CidFactory::CidFactory
CidFactory(void)
Create a cid factory with a default value for m of 0x5500.
Definition:
cid-factory.cc:30
ns3::Cid::Type
Type
Type enumeration.
Definition:
cid.h:41
ns3::CidFactory::m_basicIdentifier
uint16_t m_basicIdentifier
basic identifier
Definition:
cid-factory.h:108
ns3::Cid::MULTICAST
Definition:
cid.h:48
ns3::CidFactory::AllocateBasic
Cid AllocateBasic(void)
This function returns the next basic CID.
Definition:
cid-factory.cc:41
ns3::Cid::PRIMARY
Definition:
cid.h:46
NS_ASSERT
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
Definition:
assert.h:67
ns3::Cid::m_identifier
uint16_t m_identifier
identiifier
Definition:
cid.h:99
NS_FATAL_ERROR
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
Definition:
fatal-error.h:162
ns3::Cid::BASIC
Definition:
cid.h:45
ns3::CidFactory::IsTransport
bool IsTransport(Cid cid) const
This function determines if the CID is a transport.
Definition:
cid-factory.cc:99
ns3::Cid::Broadcast
static Cid Broadcast(void)
Definition:
cid.cc:72
ns3::Cid::InitialRanging
static Cid InitialRanging(void)
Definition:
cid.cc:82
ns3::CidFactory::IsPrimary
bool IsPrimary(Cid cid) const
This function determines if the CID is primary.
Definition:
cid-factory.cc:105
ns3::CidFactory::m_multicastPollingIdentifier
uint16_t m_multicastPollingIdentifier
multicast polling identifier
Definition:
cid-factory.h:111
ns3::CidFactory::IsBasic
bool IsBasic(Cid cid) const
This function determines if the CID is basic.
Definition:
cid-factory.cc:111
ns3::CidFactory::FreeCid
void FreeCid(Cid cid)
Notify the factory that the connection associated to this cid has been killed and that this cid can b...
Definition:
cid-factory.cc:119
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::CidFactory::AllocatePrimary
Cid AllocatePrimary(void)
This function returns the next primary basic CID.
Definition:
cid-factory.cc:49
ns3::Cid::Padding
static Cid Padding(void)
Definition:
cid.cc:77
ns3::Cid
Cid class.
Definition:
cid.h:37
ns3::Cid::TRANSPORT
Definition:
cid.h:47
ns3::CidFactory::m_transportOrSecondaryIdentifier
uint16_t m_transportOrSecondaryIdentifier
transport or secondary identifier
Definition:
cid-factory.h:110
ns3::CidFactory::m_m
uint16_t m_m
m
Definition:
cid-factory.h:106
ns3::Cid::BROADCAST
Definition:
cid.h:43
ns3::CidFactory::AllocateMulticast
Cid AllocateMulticast(void)
This function returns the next Multicast CID.
Definition:
cid-factory.cc:65
ns3::Cid::PADDING
Definition:
cid.h:49
ns3::CidFactory::Allocate
Cid Allocate(enum Cid::Type type)
This function returns the next CID for the specified type.
Definition:
cid-factory.cc:74
ns3::Cid::INITIAL_RANGING
Definition:
cid.h:44
ns3::CidFactory::AllocateTransportOrSecondary
Cid AllocateTransportOrSecondary(void)
This function returns the next Transport (or Secondary) CID.
Definition:
cid-factory.cc:57
ns3::CidFactory::m_primaryIdentifier
uint16_t m_primaryIdentifier
primary identifier
Definition:
cid-factory.h:109
Generated on Wed Nov 7 2018 10:02:16 for ns-3 by
1.8.14