A Discrete-Event Network Simulator
API
lte-ue-ccm-rrc-sap.h
Go to the documentation of this file.
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2015 Danilo Abrignani
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: Danilo Abrignani <danilo.abrignani@unibo.it>
19  *
20  */
21 
22 #ifndef LTE_UE_CCM_RRC_SAP_H
23 #define LTE_UE_CCM_RRC_SAP_H
24 
25 #include <ns3/lte-rrc-sap.h>
26 #include <ns3/eps-bearer.h>
27 #include <ns3/lte-ue-cmac-sap.h>
28 #include <ns3/lte-mac-sap.h>
29 #include <map>
30 
31 
32 namespace ns3 {
33  class LteUeCmacSapProvider;
34  class LteMacSapUser;
35 
45 {
46 
48 friend class LteMacSapUser;
49 
50 public:
51 
52  virtual ~LteUeCcmRrcSapProvider ();
54  struct LcsConfig
55  {
59  };
60 
74  virtual std::vector<LteUeCcmRrcSapProvider::LcsConfig> AddLc (uint8_t lcId, LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser* msu) = 0;
75 
82  virtual std::vector<uint16_t> RemoveLc (uint8_t lcid) = 0;
87  virtual void Reset () = 0;
90 
91 
101 
102 }; // end of class LteUeCcmRrcSapProvider
103 
105 template <class C>
107 {
108 public:
114  MemberLteUeCcmRrcSapProvider (C* owner);
115 
116  // inherited from LteUeCcmRrcSapProvider
117  virtual std::vector<uint16_t> RemoveLc (uint8_t lcid);
118  virtual void Reset ();
119  virtual std::vector<LteUeCcmRrcSapProvider::LcsConfig> AddLc (uint8_t lcId, LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser* msu);
120  virtual void NotifyConnectionReconfigurationMsg ();
122 
123 private:
124  C* m_owner;
125 };
126 
127 template <class C>
129  : m_owner (owner)
130 {
131 }
132 
133 template <class C>
134 std::vector<uint16_t> MemberLteUeCcmRrcSapProvider<C>::RemoveLc (uint8_t lcid)
135 {
136  return m_owner->DoRemoveLc (lcid);
137 }
138 
139 template <class C>
141 {
142  return m_owner->DoReset ();
143 }
144 
145 
146 template <class C>
147 std::vector<LteUeCcmRrcSapProvider::LcsConfig> MemberLteUeCcmRrcSapProvider<C>::AddLc (uint8_t lcId, LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser* msu)
148 {
149  return m_owner->DoAddLc (lcId, lcConfig, msu);
150 }
151 
152 template <class C>
154 {
155  NS_FATAL_ERROR ("Function should not be called because it is not implemented.");
156  //m_owner->DoNotifyConnectionReconfigurationMsg ();
157 }
158 
159 
160 template <class C>
162 {
163  return m_owner->DoConfigureSignalBearer (lcid, lcConfig, msu);
164 }
165 
166 
174 {
175 
176 public:
177  virtual ~LteUeCcmRrcSapUser ();
178 
185  virtual void ComponentCarrierEnabling (std::vector<uint8_t> componentCarrierList) = 0;
191  virtual void SetNumberOfComponentCarriers (uint16_t noOfComponentCarriers) = 0;
192 
193 }; // end of class LteUeCcmRrcSapUser
194 
196  template <class C>
198  {
199  public:
205  MemberLteUeCcmRrcSapUser (C* owner);
206  //inherited from LteUeCcmRrcSapUser
207  virtual void ComponentCarrierEnabling (std::vector<uint8_t> componentCarrierList);
208  virtual void SetNumberOfComponentCarriers (uint16_t noOfComponentCarriers);
209 
210  private:
211  C* m_owner;
212 };
213 
214 template <class C>
216  : m_owner (owner)
217 {
218 }
219 
220 template <class C>
221 void MemberLteUeCcmRrcSapUser<C>::ComponentCarrierEnabling (std::vector<uint8_t> componentCarrierList)
222 {
223  NS_FATAL_ERROR ("Function should not be called because it is not implemented.");
224  //m_owner->DoComponentCarrierEnabling (componentCarrierList);
225 }
226 
227 template <class C>
229 {
230  m_owner->DoSetNumberOfComponentCarriers (noOfComponentCarriers);
231 }
232 
233 } // end of namespace ns3
234 
235 
236 #endif /* LTE_UE_CCM_RRC_SAP_H */
237 
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
Definition: lte-mac-sap.h:96
Service Access Point (SAP) offered by the UE component carrier manager to the UE RRC.
virtual std::vector< LteUeCcmRrcSapProvider::LcsConfig > AddLc(uint8_t lcId, LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser *msu)=0
add a new Logical Channel (LC)
virtual void NotifyConnectionReconfigurationMsg()=0
Notify reconfiguration msg function.
virtual void Reset()=0
Reset LC maps.
virtual LteMacSapUser * ConfigureSignalBearer(uint8_t lcid, LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser *msu)=0
Add the Signal Bearer for a specific Ue in LteUeComponenCarrierManager.
virtual std::vector< uint16_t > RemoveLc(uint8_t lcid)=0
Remove an existing Logical Channel for a Ue in the LteUeComponentCarrierManager.
Service Access Point (SAP) offered by the UE RRC to the UE CCM.
virtual void SetNumberOfComponentCarriers(uint16_t noOfComponentCarriers)=0
Set the number of component carriers.
virtual void ComponentCarrierEnabling(std::vector< uint8_t > componentCarrierList)=0
this function will be used after the RRC notify to ComponentCarrierManager that a reconfiguration mes...
MemberLteUeCcmRrcSapProvider class.
virtual std::vector< uint16_t > RemoveLc(uint8_t lcid)
Remove an existing Logical Channel for a Ue in the LteUeComponentCarrierManager.
virtual std::vector< LteUeCcmRrcSapProvider::LcsConfig > AddLc(uint8_t lcId, LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser *msu)
add a new Logical Channel (LC)
virtual void NotifyConnectionReconfigurationMsg()
Notify reconfiguration msg function.
MemberLteUeCcmRrcSapProvider(C *owner)
Constructor.
virtual void Reset()
Reset LC maps.
virtual LteMacSapUser * ConfigureSignalBearer(uint8_t lcid, LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser *msu)
Add the Signal Bearer for a specific Ue in LteUeComponenCarrierManager.
MemberLteUeCcmRrcSapUser class.
virtual void SetNumberOfComponentCarriers(uint16_t noOfComponentCarriers)
Set the number of component carriers.
MemberLteUeCcmRrcSapUser(C *owner)
Constructor.
virtual void ComponentCarrierEnabling(std::vector< uint8_t > componentCarrierList)
this function will be used after the RRC notify to ComponentCarrierManager that a reconfiguration mes...
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
Definition: fatal-error.h:165
Every class exported by the ns3 library is enclosed in the ns3 namespace.
uint8_t componentCarrierId
component carrier ID
LteUeCmacSapProvider::LogicalChannelConfig lcConfig
logical channel config