OLD | NEW |
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ | 1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
2 /* | 2 /* |
3 * Copyright (c) 2015 Danilo Abrignani | 3 * Copyright (c) 2015 Danilo Abrignani |
4 * | 4 * |
5 * This program is free software; you can redistribute it and/or modify | 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 | 6 * it under the terms of the GNU General Public License version 2 as |
7 * published by the Free Software Foundation; | 7 * published by the Free Software Foundation; |
8 * | 8 * |
9 * This program is distributed in the hope that it will be useful, | 9 * This program is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 * instance. | 42 * instance. |
43 */ | 43 */ |
44 class LteUeCcmRrcSapProvider | 44 class LteUeCcmRrcSapProvider |
45 { | 45 { |
46 | 46 |
47 friend class LteMacSapUser; | 47 friend class LteMacSapUser; |
48 · | 48 · |
49 public: | 49 public: |
50 | 50 |
51 virtual ~LteUeCcmRrcSapProvider (); | 51 virtual ~LteUeCcmRrcSapProvider (); |
| 52 /// LcsConfig structure |
52 struct LcsConfig | 53 struct LcsConfig |
53 { | 54 { |
54 uint8_t componentCarrierId; | 55 uint8_t componentCarrierId; ///< component carrier ID |
55 LteUeCmacSapProvider::LogicalChannelConfig *lcConfig; | 56 LteUeCmacSapProvider::LogicalChannelConfig *lcConfig; ///< logical channel c
onfig |
56 LteMacSapUser *msu; | 57 LteMacSapUser *msu; ///< MSU |
57 }; | 58 }; |
58 | 59 |
59 /**· | 60 /**· |
60 * add a new Logical Channel (LC)· | 61 * add a new Logical Channel (LC)· |
61 *· | 62 *· |
62 * \param lcId is the Logical Channel Id | 63 * \param lcId is the Logical Channel Id |
63 * \param lcConfig is a single structure contains logical Channel Id, Logical
Channel config and Component Carrier Id | 64 * \param lcConfig is a single structure contains logical Channel Id, Logical
Channel config and Component Carrier Id |
64 * \param msu is the pointer to LteMacSapUser related to the Rlc instance | 65 * \param msu is the pointer to LteMacSapUser related to the Rlc instance |
65 * \return vector of LcsConfig contains the lc configuration for each Mac | 66 * \return vector of LcsConfig contains the lc configuration for each Mac |
66 * the size of the vector is equal to the number of component | 67 * the size of the vector is equal to the number of component |
67 * carrier enabled. | 68 * carrier enabled. |
68 * | 69 * |
69 * The Logical Channel configurations for each component carrier depend on the······· | 70 * The Logical Channel configurations for each component carrier depend on the······· |
70 * algorithm used to split the traffic between the component carriers themself
. | 71 * algorithm used to split the traffic between the component carriers themself
. |
71 */ | 72 */ |
72 virtual std::vector<LteUeCcmRrcSapProvider::LcsConfig> AddLc (uint8_t lcId,
LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser* msu) = 0; | 73 virtual std::vector<LteUeCcmRrcSapProvider::LcsConfig> AddLc (uint8_t lcId,
LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser* msu) = 0; |
73 | 74 |
74 /** | 75 /** |
75 * \brief Remove an existing Logical Channel for a Ue in the LteUeComponentCar
rierManager | 76 * \brief Remove an existing Logical Channel for a Ue in the LteUeComponentCar
rierManager |
76 * \param lcid the Logical Channel Id | 77 * \param lcid the Logical Channel Id |
77 * \return vector of integer the componentCarrierId of the componentCarrier | 78 * \return vector of integer the componentCarrierId of the componentCarrier |
78 * where the bearer is enabled | 79 * where the bearer is enabled |
79 */ | 80 */ |
80 virtual std::vector<uint16_t> RemoveLc (uint8_t lcid) = 0; | 81 virtual std::vector<uint16_t> RemoveLc (uint8_t lcid) = 0; |
| 82 /// Notify reconfiguration msg function |
81 virtual void NotifyConnectionReconfigurationMsg () = 0; | 83 virtual void NotifyConnectionReconfigurationMsg () = 0; |
82 | 84 |
83 ·· | 85 ·· |
84 /** | 86 /** |
85 * \brief Add the Signal Bearer for a specif Ue in LteUeComponenCarrierManager | 87 * \brief Add the Signal Bearer for a specif Ue in LteUeComponenCarrierManager |
86 * \param lcid the Logical Channel Id | 88 * \param lcid the Logical Channel Id |
87 * \param lcConfig this structure it is hard-coded in the LteEnbRrc | 89 * \param lcConfig this structure it is hard-coded in the LteEnbRrc |
88 * \param rlcMacSapUser it is the MacSapUser of the Rlc istance | 90 * \param msu it is the MacSapUser of the Rlc istance |
89 * \return the LteMacSapUser of the ComponentCarrierManager | 91 * \return the LteMacSapUser of the ComponentCarrierManager |
90 * | 92 * |
91 */ | 93 */ |
92 virtual LteMacSapUser* ConfigureSignalBearer (uint8_t lcid, LteUeCmacSapProvi
der::LogicalChannelConfig lcConfig, LteMacSapUser* msu) = 0; | 94 virtual LteMacSapUser* ConfigureSignalBearer (uint8_t lcid, LteUeCmacSapProvi
der::LogicalChannelConfig lcConfig, LteMacSapUser* msu) = 0; |
93 | 95 |
94 }; // end of class LteUeCcmRrcSapProvider | 96 }; // end of class LteUeCcmRrcSapProvider |
95 | 97 |
| 98 /// MemberLteUeCcmRrcSapProvider class |
96 template <class C> | 99 template <class C> |
97 class MemberLteUeCcmRrcSapProvider : public LteUeCcmRrcSapProvider | 100 class MemberLteUeCcmRrcSapProvider : public LteUeCcmRrcSapProvider |
98 { | 101 { |
99 public: | 102 public: |
| 103 /** |
| 104 * Constructor |
| 105 * |
| 106 * \param owner the owner class |
| 107 */ |
100 MemberLteUeCcmRrcSapProvider (C* owner); | 108 MemberLteUeCcmRrcSapProvider (C* owner); |
101 | 109 |
102 // inherited from LteUeCcmRrcSapProvider | 110 // inherited from LteUeCcmRrcSapProvider |
103 virtual std::vector<uint16_t> RemoveLc (uint8_t lcid); | 111 virtual std::vector<uint16_t> RemoveLc (uint8_t lcid); |
104 virtual std::vector<LteUeCcmRrcSapProvider::LcsConfig> AddLc (uint8_t lcId, L
teUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser* msu); | 112 virtual std::vector<LteUeCcmRrcSapProvider::LcsConfig> AddLc (uint8_t lcId, L
teUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser* msu); |
105 virtual void NotifyConnectionReconfigurationMsg (); | 113 virtual void NotifyConnectionReconfigurationMsg (); |
106 virtual LteMacSapUser* ConfigureSignalBearer (uint8_t lcid, LteUeCmacSapProvi
der::LogicalChannelConfig lcConfig, LteMacSapUser* msu); | 114 virtual LteMacSapUser* ConfigureSignalBearer (uint8_t lcid, LteUeCmacSapProvi
der::LogicalChannelConfig lcConfig, LteMacSapUser* msu); |
107 ·· | 115 ·· |
108 private: | 116 private: |
109 C* m_owner; | 117 C* m_owner; ///< the owner class |
110 }; | 118 }; |
111 | 119 |
112 template <class C> | 120 template <class C> |
113 MemberLteUeCcmRrcSapProvider<C>::MemberLteUeCcmRrcSapProvider (C* owner) | 121 MemberLteUeCcmRrcSapProvider<C>::MemberLteUeCcmRrcSapProvider (C* owner) |
114 : m_owner (owner) | 122 : m_owner (owner) |
115 { | 123 { |
116 } | 124 } |
117 | 125 |
118 template <class C> | 126 template <class C> |
119 std::vector<uint16_t> MemberLteUeCcmRrcSapProvider<C>::RemoveLc (uint8_t lcid) | 127 std::vector<uint16_t> MemberLteUeCcmRrcSapProvider<C>::RemoveLc (uint8_t lcid) |
(...skipping 14 matching lines...) Expand all Loading... |
134 } | 142 } |
135 | 143 |
136 | 144 |
137 template <class C> | 145 template <class C> |
138 LteMacSapUser* MemberLteUeCcmRrcSapProvider<C>::ConfigureSignalBearer (uint8_t l
cid, LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser* msu) | 146 LteMacSapUser* MemberLteUeCcmRrcSapProvider<C>::ConfigureSignalBearer (uint8_t l
cid, LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser* msu) |
139 { | 147 { |
140 return m_owner->DoConfigureSignalBearer (lcid, lcConfig, msu); | 148 return m_owner->DoConfigureSignalBearer (lcid, lcConfig, msu); |
141 } | 149 } |
142 | 150 |
143 | 151 |
144 /** | 152 /** |
145 * \brief Service Access Point (SAP) offered by the UE RRC to the UE CCM. | 153 * \brief Service Access Point (SAP) offered by the UE RRC to the UE CCM. |
146 * | 154 * |
147 * This is the *Component Carrier Management SAP User*, i.e., the part of the SA
P | 155 * This is the *Component Carrier Management SAP User*, i.e., the part of the SA
P |
148 * that contains the UE RRC methods called by the UE CCM instance. | 156 * that contains the UE RRC methods called by the UE CCM instance. |
149 */ | 157 */ |
150 class LteUeCcmRrcSapUser | 158 class LteUeCcmRrcSapUser |
151 { | 159 { |
152 · | 160 · |
153 public: | 161 public: |
154 virtual ~LteUeCcmRrcSapUser (); | 162 virtual ~LteUeCcmRrcSapUser (); |
155 | 163 |
156 // this function will be used after the RRC notify to ComponentCarrierManager | 164 /** |
157 // that a reconfiguration message with Secondary component carrier (SCc) arriv
ed or not | 165 * this function will be used after the RRC notify to ComponentCarrierManager |
158 // the method it is called only if the SCc wasn't set up | 166 * that a reconfiguration message with Secondary component carrier (SCc) arriv
ed or not |
| 167 * the method it is called only if the SCc wasn't set up |
| 168 * \param componentCarrierList componentn carrier list |
| 169 */ |
159 virtual void ComponentCarrierEnabling (std::vector<uint8_t> componentCarrierLi
st) = 0; | 170 virtual void ComponentCarrierEnabling (std::vector<uint8_t> componentCarrierLi
st) = 0; |
160 | 171 |
161 }; // end of class LteUeCcmRrcSapUser | 172 }; // end of class LteUeCcmRrcSapUser |
162 | 173 |
| 174 /// MemberLteUeCcmRrcSapUser class |
163 template <class C> | 175 template <class C> |
164 class MemberLteUeCcmRrcSapUser : public LteUeCcmRrcSapUser | 176 class MemberLteUeCcmRrcSapUser : public LteUeCcmRrcSapUser |
165 { | 177 { |
166 public: | 178 public: |
| 179 /** |
| 180 * Constructor |
| 181 * |
| 182 * \param owner the owner class |
| 183 */ |
167 MemberLteUeCcmRrcSapUser (C* owner); | 184 MemberLteUeCcmRrcSapUser (C* owner); |
168 //inherited from LteUeCcmRrcSapUser | 185 //inherited from LteUeCcmRrcSapUser |
169 virtual void ComponentCarrierEnabling (std::vector<uint8_t> componentCarrier
List); | 186 virtual void ComponentCarrierEnabling (std::vector<uint8_t> componentCarrier
List); |
170 | 187 |
171 private: | 188 private: |
172 C* m_owner; | 189 C* m_owner; ///< the owner class |
173 }; | 190 }; |
174 | 191 |
175 template <class C> | 192 template <class C> |
176 MemberLteUeCcmRrcSapUser<C>::MemberLteUeCcmRrcSapUser (C* owner) | 193 MemberLteUeCcmRrcSapUser<C>::MemberLteUeCcmRrcSapUser (C* owner) |
177 : m_owner (owner) | 194 : m_owner (owner) |
178 { | 195 { |
179 } | 196 } |
180 ·· | 197 ·· |
181 template <class C> | 198 template <class C> |
182 void MemberLteUeCcmRrcSapUser<C>::ComponentCarrierEnabling (std::vector<uint8_t>
componentCarrierList) | 199 void MemberLteUeCcmRrcSapUser<C>::ComponentCarrierEnabling (std::vector<uint8_t>
componentCarrierList) |
183 { | 200 { |
184 m_owner->DoComponentCarrierEnabling (componentCarrierList); | 201 m_owner->DoComponentCarrierEnabling (componentCarrierList); |
185 } | 202 } |
186 ·· | 203 ·· |
187 } // end of namespace ns3 | 204 } // end of namespace ns3 |
188 | 205 |
189 | 206 |
190 #endif /* LTE_UE_CCM_RRC_SAP_H */ | 207 #endif /* LTE_UE_CCM_RRC_SAP_H */ |
191 | 208 |
OLD | NEW |