A Discrete-Event Network Simulator
API
lte-radio-bearer-tag.cc
Go to the documentation of this file.
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
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  * Author: Marco Miozzo <marco.miozzo@cttc.es>
19  */
20 
21 
22 #include "lte-radio-bearer-tag.h"
23 #include "ns3/tag.h"
24 #include "ns3/uinteger.h"
25 
26 namespace ns3 {
27 
28 NS_OBJECT_ENSURE_REGISTERED (LteRadioBearerTag);
29 
30 TypeId
32 {
33  static TypeId tid = TypeId ("ns3::LteRadioBearerTag")
34  .SetParent<Tag> ()
35  .SetGroupName("Lte")
36  .AddConstructor<LteRadioBearerTag> ()
37  .AddAttribute ("rnti", "The rnti that indicates the UE to which packet belongs",
38  UintegerValue (0),
40  MakeUintegerChecker<uint16_t> ())
41  .AddAttribute ("lcid", "The id within the UE identifying the logical channel to which the packet belongs",
42  UintegerValue (0),
44  MakeUintegerChecker<uint8_t> ())
45  ;
46  return tid;
47 }
48 
49 TypeId
51 {
52  return GetTypeId ();
53 }
54 
56  : m_rnti (0),
57  m_lcid (0),
58  m_layer (0)
59 {
60 }
61 LteRadioBearerTag::LteRadioBearerTag (uint16_t rnti, uint8_t lcid)
62  : m_rnti (rnti),
63  m_lcid (lcid)
64 {
65 }
66 
67 LteRadioBearerTag::LteRadioBearerTag (uint16_t rnti, uint8_t lcid, uint8_t layer)
68 : m_rnti (rnti),
69  m_lcid (lcid),
70  m_layer (layer)
71 {
72 }
73 
74 void
76 {
77  m_rnti = rnti;
78 }
79 
80 void
82 {
83  m_lcid = lcid;
84 }
85 
86 void
88 {
89  m_layer = layer;
90 }
91 
92 uint32_t
94 {
95  return 4;
96 }
97 
98 void
100 {
101  i.WriteU16 (m_rnti);
102  i.WriteU8 (m_lcid);
103  i.WriteU8 (m_layer);
104 }
105 
106 void
108 {
109  m_rnti = (uint16_t) i.ReadU16 ();
110  m_lcid = (uint8_t) i.ReadU8 ();
111  m_layer = (uint8_t) i.ReadU8 ();
112 }
113 
114 uint16_t
116 {
117  return m_rnti;
118 }
119 
120 uint8_t
122 {
123  return m_lcid;
124 }
125 
126 uint8_t
128 {
129  return m_layer;
130 }
131 
132 void
133 LteRadioBearerTag::Print (std::ostream &os) const
134 {
135  os << "rnti=" << m_rnti << ", lcid=" << (uint16_t) m_lcid << ", layer=" << (uint16_t)m_layer;
136 }
137 
138 } // namespace ns3
Tag used to define the RNTI and LC id for each MAC packet trasmitted.
uint16_t GetRnti(void) const
Get RNTI function.
void SetLayer(uint8_t layer)
Set the layer id to the given value.
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
virtual void Serialize(TagBuffer i) const
static TypeId GetTypeId(void)
Get the type ID.
virtual void Print(std::ostream &os) const
virtual void Deserialize(TagBuffer i)
virtual uint32_t GetSerializedSize() const
LteRadioBearerTag()
Create an empty LteRadioBearerTag.
uint8_t GetLayer(void) const
Get layer function.
void SetRnti(uint16_t rnti)
Set the RNTI to the given value.
void SetLcid(uint8_t lcid)
Set the LC id to the given value.
uint8_t GetLcid(void) const
Get LCID function.
read and write tag data
Definition: tag-buffer.h:52
TAG_BUFFER_INLINE uint16_t ReadU16(void)
Definition: tag-buffer.h:205
TAG_BUFFER_INLINE void WriteU8(uint8_t v)
Definition: tag-buffer.h:172
TAG_BUFFER_INLINE void WriteU16(uint16_t v)
Definition: tag-buffer.h:180
TAG_BUFFER_INLINE uint8_t ReadU8(void)
Definition: tag-buffer.h:195
tag a set of bytes in a packet
Definition: tag.h:37
a unique identifier for an interface.
Definition: type-id.h:59
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Definition: type-id.cc:922
Hold an unsigned integer type.
Definition: uinteger.h:44
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
Definition: uinteger.h:45
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Definition: object-base.h:45
Every class exported by the ns3 library is enclosed in the ns3 namespace.