A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Groups
Pages
cid-factory.cc
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
uint16_t
id
= cid.m_identifier;
102
return
id
>= 2 * m_m + 1 &&
id
<= 0xfefe;
103
}
104
bool
105
CidFactory::IsPrimary (Cid cid)
const
106
{
107
uint16_t
id
= cid.m_identifier;
108
return
id
>= m_m + 1 &&
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
{
121
// TODO:We need to update the cid bitmap properly here.
122
NS_FATAL_ERROR
(
"TODO: Update the cid bitmap properly here-- please implement and contribute a patch"
);
123
}
124
125
}
// namespace ns3
126
127
ns3::CidFactory::CidFactory
CidFactory(void)
Definition:
cid-factory.cc:30
ns3::CidFactory::AllocateBasic
Cid AllocateBasic(void)
This function returns the next basic CID.
Definition:
cid-factory.cc:41
NS_ASSERT
#define NS_ASSERT(condition)
Definition:
assert.h:64
NS_FATAL_ERROR
#define NS_FATAL_ERROR(msg)
fatal error handling
Definition:
fatal-error.h:72
ns3::Cid::Broadcast
static Cid Broadcast(void)
Definition:
cid.cc:72
ns3::Cid::InitialRanging
static Cid InitialRanging(void)
Definition:
cid.cc:82
ns3::CidFactory::FreeCid
void FreeCid(Cid cid)
Definition:
cid-factory.cc:119
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
Definition:
cid.h:35
ns3::CidFactory::AllocateMulticast
Cid AllocateMulticast(void)
This function returns the next Multicast CID.
Definition:
cid-factory.cc:65
ns3::CidFactory::AllocateTransportOrSecondary
Cid AllocateTransportOrSecondary(void)
This function returns the next Transport (or Secondary) CID.
Definition:
cid-factory.cc:57
src
wimax
model
cid-factory.cc
Generated on Sun Mar 16 2014 11:25:12 for ns-3 by
1.8.6