A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
lte-ue-component-carrier-manager.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2015 Danilo Abrignani
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation;
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * Author: Danilo Abrignani <danilo.abrignani@unibo.it>
18 *
19 */
20
21#ifndef LTE_UE_COMPONENT_CARRIER_MANAGER_H
22#define LTE_UE_COMPONENT_CARRIER_MANAGER_H
23
24#include "lte-mac-sap.h"
25#include "lte-ue-ccm-rrc-sap.h"
26
27#include <ns3/object.h>
28
29#include <map>
30#include <vector>
31
32namespace ns3
33{
34
35class LteUeCcmRrcSapUser;
36class LteUeCcmRrcSapProvider;
37
38class LteMacSapUser;
39class LteMacSapProvider;
40
41/**
42 * \brief The abstract base class of a Component Carrier Manager* for UE
43 that operates using the component carrier manager SAP interface.
44 *
45 */
47{
48 public:
51
52 /**
53 * \brief Get the type ID.
54 * \return the object TypeId
55 */
56 static TypeId GetTypeId();
57
58 /**
59 * \brief Set the "user" part of the ComponentCarrier Management SAP interface
60 * that this UE component carrier manager will interact with.
61 * \param s a reference to the "user" part of the interface, typically a
62 * member of an LteEnbRrc instance
63 */
65
66 /**
67 * \brief Exports the "provider" part of the ComponentCarrier Management SAP interface.
68 * \return the reference to the "provider" part of the interface, typically to
69 * be kept by an LteUeRrc instance
70 */
72
73 /**
74 * \brief Returns the MAC sap provider interface that if forwarding calls to the
75 * instance of the LteUeComponentCarrierManager.
76 * \return the reference to the "provider" part of the interface
77 */
79
80 /**
81 * \brief Sets a pointer to SAP interface of MAC instance for the specified carrier.
82 * \param componentCarrierId the component carrier id
83 * \param sap the pointer to the sap interface
84 * \return whether the settings of the sap provider was successful
85 */
86 bool SetComponentCarrierMacSapProviders(uint8_t componentCarrierId, LteMacSapProvider* sap);
87
88 /**
89 * \brief Sets number of component carriers that are supported by this UE.
90 * \param noOfComponentCarriers number of component carriers
91 */
92 void SetNumberOfComponentCarriers(uint8_t noOfComponentCarriers);
93
94 protected:
95 // inherited from Object
96 void DoDispose() override;
97
98 LteUeCcmRrcSapUser* m_ccmRrcSapUser; //!< Interface to the UE RRC instance.
99 LteUeCcmRrcSapProvider* m_ccmRrcSapProvider; //!< Receive API calls from the UE RRC instance.
100
101 std::map<uint8_t, LteMacSapUser*> m_lcAttached; //!< Map of pointers to SAP interfaces of the
102 //!< RLC instance of the flows of this UE.
103 std::map<uint8_t, std::map<uint8_t, LteMacSapProvider*>>
104 m_componentCarrierLcMap; //!< Flow configuration per flow Id of this UE.
105 uint8_t m_noOfComponentCarriers; //!< The number of component carriers that this UE can support.
106 std::map<uint8_t, LteMacSapProvider*>
107 m_macSapProvidersMap; //!< Map of pointers to SAP to interfaces of the MAC instance if the
108 //!< flows of this UE.
109
110}; // end of class LteUeComponentCarrierManager
111
112} // end of namespace ns3
113
114#endif /* LTE_UE_COMPONENT_CARRIER_MANAGER_H */
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
Definition: lte-mac-sap.h:36
Service Access Point (SAP) offered by the UE component carrier manager to the UE RRC.
Service Access Point (SAP) offered by the UE RRC to the UE CCM.
The abstract base class of a Component Carrier Manager* for UE that operates using the component carr...
LteUeCcmRrcSapProvider * m_ccmRrcSapProvider
Receive API calls from the UE RRC instance.
virtual LteMacSapProvider * GetLteMacSapProvider()=0
Returns the MAC sap provider interface that if forwarding calls to the instance of the LteUeComponent...
std::map< uint8_t, LteMacSapUser * > m_lcAttached
Map of pointers to SAP interfaces of the RLC instance of the flows of this UE.
std::map< uint8_t, std::map< uint8_t, LteMacSapProvider * > > m_componentCarrierLcMap
Flow configuration per flow Id of this UE.
void SetNumberOfComponentCarriers(uint8_t noOfComponentCarriers)
Sets number of component carriers that are supported by this UE.
std::map< uint8_t, LteMacSapProvider * > m_macSapProvidersMap
Map of pointers to SAP to interfaces of the MAC instance if the flows of this UE.
uint8_t m_noOfComponentCarriers
The number of component carriers that this UE can support.
virtual void SetLteCcmRrcSapUser(LteUeCcmRrcSapUser *s)
Set the "user" part of the ComponentCarrier Management SAP interface that this UE component carrier m...
LteUeCcmRrcSapUser * m_ccmRrcSapUser
Interface to the UE RRC instance.
void DoDispose() override
Destructor implementation.
virtual LteUeCcmRrcSapProvider * GetLteCcmRrcSapProvider()
Exports the "provider" part of the ComponentCarrier Management SAP interface.
bool SetComponentCarrierMacSapProviders(uint8_t componentCarrierId, LteMacSapProvider *sap)
Sets a pointer to SAP interface of MAC instance for the specified carrier.
A base class which provides memory management and object aggregation.
Definition: object.h:89
a unique identifier for an interface.
Definition: type-id.h:59
Every class exported by the ns3 library is enclosed in the ns3 namespace.