108 NS_LOG_INFO(
"SimpleUeCcmMacSapUser::NotifyTxOpportunity for ccId:"
154 static TypeId tid =
TypeId(
"ns3::SimpleUeComponentCarrierManager")
185 std::map<uint8_t, LteMacSapProvider*>::iterator it =
188 "could not find Sap for ComponentCarrier "
189 << (uint16_t)params.componentCarrierId);
191 it->second->TransmitPdu(params);
199 NS_LOG_DEBUG(
"BSR from RLC for LCID = " << (uint16_t)params.lcid);
205 for (std::map<uint8_t, std::map<uint8_t, LteMacSapProvider*>>::iterator ccLcMapIt =
210 NS_LOG_DEBUG(
"BSR from RLC for CC id = " << (uint16_t)ccLcMapIt->first);
211 std::map<uint8_t, LteMacSapProvider*>::iterator it = ccLcMapIt->second.find(params.lcid);
212 if (it != ccLcMapIt->second.end())
214 it->second->ReportBufferStatus(params);
230 std::map<uint8_t, LteMacSapUser*>::iterator lcidIt =
m_lcAttached.find(txOpParams.
lcid);
232 "could not find LCID" << (uint16_t)txOpParams.
lcid);
234 <<
" layer= " << (uint16_t)txOpParams.
layer <<
" componentCarierId "
237 NS_LOG_DEBUG(
this <<
" MAC is asking component carrier id = "
239 <<
" with lcid = " << (
uint32_t)txOpParams.
lcid <<
" to transmit "
240 << txOpParams.
bytes <<
" bytes");
241 (*lcidIt).second->NotifyTxOpportunity(txOpParams);
248 std::map<uint8_t, LteMacSapUser*>::iterator lcidIt =
m_lcAttached.find(rxPduParams.
lcid);
250 "could not find LCID" << (uint16_t)rxPduParams.
lcid);
253 (*lcidIt).second->ReceivePdu(rxPduParams);
264 std::vector<uint16_t> res;
268 std::map<uint8_t, std::map<uint8_t, LteMacSapProvider*>>::iterator it =
272 std::map<uint8_t, LteMacSapProvider*>::iterator lcToRemove = it->second.find(lcid);
273 if (lcToRemove != it->second.end())
275 res.insert(res.end(), it->first);
280 "LCID " << lcid <<
" not found in the ComponentCarrierManager map");
290 std::map<uint8_t, LteMacSapUser*>::iterator it =
m_lcAttached.begin();
306std::vector<LteUeCcmRrcSapProvider::LcsConfig>
312 std::vector<LteUeCcmRrcSapProvider::LcsConfig> res;
313 std::map<uint8_t, LteMacSapUser*>::iterator it =
m_lcAttached.find(lcId);
315 m_lcAttached.insert(std::pair<uint8_t, LteMacSapUser*>(lcId, msu));
317 std::map<uint8_t, std::map<uint8_t, LteMacSapProvider*>>::iterator ccLcMapIt;
323 res.insert(res.end(), elem);
328 ccLcMapIt->second.insert(
333 std::map<uint8_t, LteMacSapProvider*> empty;
334 std::pair<std::map<uint8_t, std::map<uint8_t, LteMacSapProvider*>>::iterator,
bool>
336 std::pair<uint8_t, std::map<uint8_t, LteMacSapProvider*>>(ncc, empty));
338 "element already present, ComponentCarrierId already exist");
340 ccLcMapIt->second.insert(
355 std::map<uint8_t, LteMacSapUser*>::iterator it =
m_lcAttached.find(lcid);
359 "Warning, LCID " << (uint8_t)lcid <<
" already exist");
361 m_lcAttached.insert(std::pair<uint8_t, LteMacSapUser*>(lcid, msu));
363 std::map<uint8_t, std::map<uint8_t, LteMacSapProvider*>>::iterator ccLcMapIt;
369 ccLcMapIt->second.insert(
374 std::map<uint8_t, LteMacSapProvider*> empty;
375 std::pair<std::map<uint8_t, std::map<uint8_t, LteMacSapProvider*>>::iterator,
bool>
377 std::pair<uint8_t, std::map<uint8_t, LteMacSapProvider*>>(ncc, empty));
379 "element already present, ComponentCarrierId already existed");
381 ccLcMapIt->second.insert(
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
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.
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.
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 DoInitialize()
Initialize() implementation.
SimpleUeCcmMacSapProvider class.
SimpleUeCcmMacSapProvider(SimpleUeComponentCarrierManager *mac)
Constructor.
void TransmitPdu(LteMacSapProvider::TransmitPduParameters params) override
send an RLC PDU to the MAC for transmission.
SimpleUeComponentCarrierManager * m_mac
the component carrier manager
void ReportBufferStatus(LteMacSapProvider::ReportBufferStatusParameters params) override
Report the RLC buffer status to the MAC.
SimpleUeCcmMacSapUser class.
void NotifyHarqDeliveryFailure() override
Called by the MAC to notify the RLC that an HARQ process related to this RLC instance has failed.
SimpleUeCcmMacSapUser(SimpleUeComponentCarrierManager *mac)
Constructor.
SimpleUeComponentCarrierManager * m_mac
the component carrier manager
void ReceivePdu(LteMacSapUser::ReceivePduParameters rxPduParams) override
Called by the MAC to notify the RLC of the reception of a new PDU.
void NotifyTxOpportunity(LteMacSapUser::TxOpportunityParameters txOpParams) override
Called by the MAC to notify the RLC that the scheduler granted a transmission opportunity to this RLC...
Component carrier manager implementation which simply does nothing.
std::vector< uint16_t > DoRemoveLc(uint8_t lcid)
Remove LC function.
virtual void DoReportBufferStatus(LteMacSapProvider::ReportBufferStatusParameters params)
Report buffer status function.
LteMacSapUser * m_ccmMacSapUser
Interface to the UE RLC instance.
~SimpleUeComponentCarrierManager() override
friend class SimpleUeCcmMacSapProvider
allow SimpleUeCcmMacSapProvider class friend access
void DoReportUeMeas(uint16_t rnti, LteRrcSap::MeasResults measResults)
Report Ue Measure function.
friend class SimpleUeCcmMacSapUser
allow SimpleUeCcmMacSapUser class friend access
static TypeId GetTypeId()
Get the type ID.
void DoDispose() override
Destructor implementation.
LteMacSapProvider * GetLteMacSapProvider() override
Returns the MAC sap provider interface that if forwarding calls to the instance of the LteUeComponent...
void DoTransmitPdu(LteMacSapProvider::TransmitPduParameters params)
Transmit PDU function.
void DoReset()
Reset LC map.
void DoNotifyHarqDeliveryFailure()
Notify HARQ deliver failure.
friend class MemberLteUeCcmRrcSapProvider< SimpleUeComponentCarrierManager >
let the forwarder class access the protected and private members
void DoNotifyTxOpportunity(LteMacSapUser::TxOpportunityParameters txOpParams)
Notify TX opportunity function.
virtual std::vector< LteUeCcmRrcSapProvider::LcsConfig > DoAddLc(uint8_t lcId, LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser *msu)
Add LC function.
void DoInitialize() override
Initialize() implementation.
SimpleUeComponentCarrierManager()
Creates a No-op CCS algorithm instance.
LteMacSapProvider * m_ccmMacSapProvider
Receive API calls from the UE RLC instance.
void DoReceivePdu(LteMacSapUser::ReceivePduParameters rxPduParams)
Receive PDU function.
virtual LteMacSapUser * DoConfigureSignalBearer(uint8_t lcId, LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser *msu)
Configure signal bearer function.
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
#define NS_ABORT_MSG_IF(cond, msg)
Abnormal program termination if a condition is true, with a message.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Parameters for LteMacSapProvider::ReportBufferStatus.
Parameters for LteMacSapProvider::TransmitPdu.
Parameters for LteMacSapUser::ReceivePdu.
uint8_t lcid
the logical channel id
Parameters for LteMacSapUser::NotifyTxOpportunity.
uint16_t rnti
the C-RNTI identifying the UE
uint32_t bytes
the number of bytes to transmit
uint8_t componentCarrierId
the component carrier id
uint8_t layer
the layer of transmission (MIMO)
uint8_t lcid
the logical channel id
uint8_t componentCarrierId
component carrier ID
LteUeCmacSapProvider::LogicalChannelConfig lcConfig
logical channel config
LogicalChannelConfig structure.