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;
84  virtual void NotifyConnectionReconfigurationMsg () = 0;
85 
86 
96 
97 }; // end of class LteUeCcmRrcSapProvider
98 
100 template <class C>
102 {
103 public:
109  MemberLteUeCcmRrcSapProvider (C* owner);
110 
111  // inherited from LteUeCcmRrcSapProvider
112  virtual std::vector<uint16_t> RemoveLc (uint8_t lcid);
113  virtual std::vector<LteUeCcmRrcSapProvider::LcsConfig> AddLc (uint8_t lcId, LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser* msu);
114  virtual void NotifyConnectionReconfigurationMsg ();
116 
117 private:
118  C* m_owner;
119 };
120 
121 template <class C>
123  : m_owner (owner)
124 {
125 }
126 
127 template <class C>
128 std::vector<uint16_t> MemberLteUeCcmRrcSapProvider<C>::RemoveLc (uint8_t lcid)
129 {
130  return m_owner->DoRemoveLc (lcid);
131 }
132 
133 template <class C>
134 std::vector<LteUeCcmRrcSapProvider::LcsConfig> MemberLteUeCcmRrcSapProvider<C>::AddLc (uint8_t lcId, LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser* msu)
135 {
136  return m_owner->DoAddLc (lcId, lcConfig, msu);
137 }
138 
139 template <class C>
141 {
142  m_owner->DoNotifyConnectionReconfigurationMsg ();
143 }
144 
145 
146 template <class C>
148 {
149  return m_owner->DoConfigureSignalBearer (lcid, lcConfig, msu);
150 }
151 
152 
160 {
161 
162 public:
163  virtual ~LteUeCcmRrcSapUser ();
164 
171  virtual void ComponentCarrierEnabling (std::vector<uint8_t> componentCarrierList) = 0;
172 
173 }; // end of class LteUeCcmRrcSapUser
174 
176  template <class C>
178  {
179  public:
185  MemberLteUeCcmRrcSapUser (C* owner);
186  //inherited from LteUeCcmRrcSapUser
187  virtual void ComponentCarrierEnabling (std::vector<uint8_t> componentCarrierList);
188 
189  private:
190  C* m_owner;
191 };
192 
193 template <class C>
195  : m_owner (owner)
196 {
197 }
198 
199 template <class C>
200 void MemberLteUeCcmRrcSapUser<C>::ComponentCarrierEnabling (std::vector<uint8_t> componentCarrierList)
201 {
202  m_owner->DoComponentCarrierEnabling (componentCarrierList);
203 }
204 
205 } // end of namespace ns3
206 
207 
208 #endif /* LTE_UE_CCM_RRC_SAP_H */
209 
MemberLteUeCcmRrcSapUser class.
MemberLteUeCcmRrcSapProvider(C *owner)
Constructor.
MemberLteUeCcmRrcSapUser(C *owner)
Constructor.
virtual std::vector< LteUeCcmRrcSapProvider::LcsConfig > AddLc(uint8_t lcId, LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser *msu)=0
add a new Logical Channel (LC)
virtual std::vector< uint16_t > RemoveLc(uint8_t lcid)=0
Remove an existing Logical Channel for a Ue in the LteUeComponentCarrierManager.
MemberLteUeCcmRrcSapProvider class.
Service Access Point (SAP) offered by the UE RRC to the UE CCM.
uint8_t componentCarrierId
component carrier ID
virtual LteMacSapUser * ConfigureSignalBearer(uint8_t lcid, LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser *msu)=0
Add the Signal Bearer for a specif Ue in LteUeComponenCarrierManager.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
virtual std::vector< LteUeCcmRrcSapProvider::LcsConfig > AddLc(uint8_t lcId, LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser *msu)
add a new Logical Channel (LC)
virtual void ComponentCarrierEnabling(std::vector< uint8_t > componentCarrierList)
this function will be used after the RRC notify to ComponentCarrierManager that a reconfiguration mes...
virtual void ComponentCarrierEnabling(std::vector< uint8_t > componentCarrierList)=0
this function will be used after the RRC notify to ComponentCarrierManager that a reconfiguration mes...
LteUeCmacSapProvider::LogicalChannelConfig * lcConfig
logical channel config
virtual LteMacSapUser * ConfigureSignalBearer(uint8_t lcid, LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser *msu)
Add the Signal Bearer for a specif Ue in LteUeComponenCarrierManager.
virtual std::vector< uint16_t > RemoveLc(uint8_t lcid)
Remove an existing Logical Channel for a Ue in the LteUeComponentCarrierManager.
Service Access Point (SAP) offered by the UE component carrier manager to the UE RRC.
virtual void NotifyConnectionReconfigurationMsg()
Notify reconfiguration msg function.
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
Definition: lte-mac-sap.h:95
virtual void NotifyConnectionReconfigurationMsg()=0
Notify reconfiguration msg function.