--- a/src/lte/model/lte-enb-rrc.cc Tue Dec 04 19:22:26 2012 +0100
+++ b/src/lte/model/lte-enb-rrc.cc Tue Dec 04 19:52:04 2012 +0100
@@ -141,7 +141,12 @@
m_sourceCellId (0)
{
NS_LOG_FUNCTION (this);
+}
+void
+UeManager::DoStart ()
+{
+ NS_LOG_FUNCTION (this);
m_drbPdcpSapUser = new LtePdcpSpecificLtePdcpSapUser<UeManager> (this);
m_physicalConfigDedicated.haveAntennaInfoDedicated = true;
@@ -149,8 +154,8 @@
m_physicalConfigDedicated.haveSoundingRsUlConfigDedicated = true;
m_physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex = m_rrc->GetNewSrsConfigurationIndex ();
- m_rrc->m_cmacSapProvider->AddUe (rnti);
- m_rrc->m_cphySapProvider->AddUe (rnti);
+ m_rrc->m_cmacSapProvider->AddUe (m_rnti);
+ m_rrc->m_cphySapProvider->AddUe (m_rnti);
// setup the eNB side of SRB0
{
@@ -219,13 +224,13 @@
// configure MAC (and scheduler)
LteEnbCmacSapProvider::UeConfig req;
- req.m_rnti = rnti;
+ req.m_rnti = m_rnti;
req.m_transmissionMode = m_physicalConfigDedicated.antennaInfo.transmissionMode;
m_rrc->m_cmacSapProvider->UeUpdateConfigurationReq (req);
// configure PHY
- m_rrc->m_cphySapProvider->SetTransmissionMode (rnti, m_physicalConfigDedicated.antennaInfo.transmissionMode);
- m_rrc->m_cphySapProvider->SetSrsConfigurationIndex (rnti, m_physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex);
+ m_rrc->m_cphySapProvider->SetTransmissionMode (m_rnti, m_physicalConfigDedicated.antennaInfo.transmissionMode);
+ m_rrc->m_cphySapProvider->SetSrsConfigurationIndex (m_rnti, m_physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex);
}
@@ -1436,6 +1441,7 @@
m_lastAllocatedRnti = rnti;
Ptr<UeManager> ueManager = CreateObject<UeManager> (this, rnti, state);
m_ueMap.insert (std::pair<uint16_t, Ptr<UeManager> > (rnti, ueManager));
+ ueManager->Start ();
NS_LOG_DEBUG (this << " New UE RNTI " << rnti << " cellId " << m_cellId << " srs CI " << ueManager->GetSrsConfigurationIndex ());
return rnti;
}
--- a/src/lte/model/lte-enb-rrc.h Tue Dec 04 19:22:26 2012 +0100
+++ b/src/lte/model/lte-enb-rrc.h Tue Dec 04 19:52:04 2012 +0100
@@ -95,6 +95,7 @@
// inherited from Object
protected:
+ virtual void DoStart ();
virtual void DoDispose ();
public:
static TypeId GetTypeId (void);
--- a/src/lte/model/lte-rlc-am.cc Tue Dec 04 19:22:26 2012 +0100
+++ b/src/lte/model/lte-rlc-am.cc Tue Dec 04 19:52:04 2012 +0100
@@ -72,8 +72,6 @@
// SDU reassembling process
m_reassemblingState = WAITING_S0_FULL;
m_expectedSeqNumber = 0;
-
- Simulator::ScheduleNow (&LteRlcAm::Start, this);
}
LteRlcAm::~LteRlcAm ()
@@ -1017,24 +1015,6 @@
}
-void
-LteRlcAm::Start ()
-{
- NS_LOG_FUNCTION (this);
-
- LteMacSapProvider::ReportBufferStatusParameters p;
- p.rnti = m_rnti;
- p.lcid = m_lcid;
- p.txQueueSize = 0;
- p.txQueueHolDelay = 0;
- p.retxQueueSize = 0;
- p.retxQueueHolDelay = 0;
- p.statusPduSize = 0;
-
- m_macSapProvider->ReportBufferStatus (p);
-}
-
-
bool
LteRlcAm::IsInsideReceivingWindow (SequenceNumber10 seqNumber)
{
--- a/src/lte/model/lte-rlc-am.h Tue Dec 04 19:22:26 2012 +0100
+++ b/src/lte/model/lte-rlc-am.h Tue Dec 04 19:52:04 2012 +0100
@@ -53,8 +53,6 @@
virtual void DoNotifyHarqDeliveryFailure ();
virtual void DoReceivePdu (Ptr<Packet> p);
- void Start ();
-
private:
/**
* This method will schedule a timeout at WaitReplyTimeout interval
--- a/src/lte/model/lte-rlc-tm.cc Tue Dec 04 19:22:26 2012 +0100
+++ b/src/lte/model/lte-rlc-tm.cc Tue Dec 04 19:52:04 2012 +0100
@@ -36,8 +36,6 @@
m_txBufferSize (0)
{
NS_LOG_FUNCTION (this);
-
- Simulator::ScheduleNow (&LteRlcTm::Start, this);
}
LteRlcTm::~LteRlcTm ()
@@ -188,15 +186,6 @@
void
-LteRlcTm::Start ()
-{
- NS_LOG_FUNCTION (this);
-
- DoReportBufferStatus ();
-}
-
-
-void
LteRlcTm::DoReportBufferStatus (void)
{
Time holDelay (0);
--- a/src/lte/model/lte-rlc-tm.h Tue Dec 04 19:22:26 2012 +0100
+++ b/src/lte/model/lte-rlc-tm.h Tue Dec 04 19:52:04 2012 +0100
@@ -52,8 +52,6 @@
virtual void DoNotifyHarqDeliveryFailure ();
virtual void DoReceivePdu (Ptr<Packet> p);
- void Start ();
-
private:
void ExpireRbsTimer (void);
void DoReportBufferStatus ();
--- a/src/lte/model/lte-rlc-um.cc Tue Dec 04 19:22:26 2012 +0100
+++ b/src/lte/model/lte-rlc-um.cc Tue Dec 04 19:52:04 2012 +0100
@@ -44,8 +44,6 @@
{
NS_LOG_FUNCTION (this);
m_reassemblingState = WAITING_S0_FULL;
-
- Simulator::ScheduleNow (&LteRlcUm::Start, this);
}
LteRlcUm::~LteRlcUm ()
@@ -559,15 +557,6 @@
}
-void
-LteRlcUm::Start ()
-{
- NS_LOG_FUNCTION (this);
-
- DoReportBufferStatus ();
-}
-
-
bool
LteRlcUm::IsInsideReorderingWindow (SequenceNumber10 seqNumber)
{
--- a/src/lte/model/lte-rlc-um.h Tue Dec 04 19:22:26 2012 +0100
+++ b/src/lte/model/lte-rlc-um.h Tue Dec 04 19:52:04 2012 +0100
@@ -52,8 +52,6 @@
virtual void DoNotifyHarqDeliveryFailure ();
virtual void DoReceivePdu (Ptr<Packet> p);
- void Start ();
-
private:
void ExpireReorderingTimer (void);
void ExpireRbsTimer (void);
--- a/src/lte/model/lte-rrc-header.cc Tue Dec 04 19:22:26 2012 +0100
+++ b/src/lte/model/lte-rrc-header.cc Tue Dec 04 19:52:04 2012 +0100
@@ -560,6 +560,46 @@
return bIterator;
}
+void
+RrcAsn1Header::SerializeUlDcchMessage(int messageType) const
+{
+ SerializeSequence(std::bitset<0>(),false);
+ // Choose c1
+ SerializeChoice(2,0);
+ // Choose message type
+ SerializeChoice(16,messageType);
+}
+
+void
+RrcAsn1Header::SerializeUlCcchMessage(int messageType) const
+{
+ SerializeSequence(std::bitset<0>(),false);
+ // Choose c1
+ SerializeChoice(2,0);
+ // Choose message type
+ SerializeChoice(2,messageType);
+}
+
+void
+RrcAsn1Header::SerializeDlDcchMessage(int messageType) const
+{
+ SerializeSequence(std::bitset<0>(),false);
+ // Choose c1
+ SerializeChoice(2,0);
+ // Choose message type
+ SerializeChoice(16,messageType);
+}
+
+void
+RrcAsn1Header::SerializeDlCcchMessage(int messageType) const
+{
+ SerializeSequence(std::bitset<0>(),false);
+ // Choose c1
+ SerializeChoice(2,0);
+ // Choose message type
+ SerializeChoice(4,messageType);
+}
+
Buffer::Iterator
RrcAsn1Header::DeserializeSrbToAddModList (std::list<LteRrcSap::SrbToAddMod> *srbToAddModList, Buffer::Iterator bIterator)
{
@@ -1427,6 +1467,99 @@
return bIterator;
}
+
+Buffer::Iterator
+RrcAsn1Header::DeserializeUlDcchMessage (Buffer::Iterator bIterator)
+{
+ std::bitset<0> bitset0;
+ int n;
+
+ bIterator = DeserializeSequence(&bitset0,false,bIterator);
+ bIterator = DeserializeChoice(2,&n,bIterator);
+ if(n==1)
+ {
+ // Deserialize messageClassExtension
+ bIterator = DeserializeSequence(&bitset0,false,bIterator);
+ m_messageType = -1;
+ }
+ else if(n == 0)
+ {
+ // Deserialize c1
+ bIterator = DeserializeChoice(16,&m_messageType,bIterator);
+ }
+
+ return bIterator;
+}
+
+Buffer::Iterator
+RrcAsn1Header::DeserializeUlCcchMessage (Buffer::Iterator bIterator)
+{
+ std::bitset<0> bitset0;
+ int n;
+
+ bIterator = DeserializeSequence(&bitset0,false,bIterator);
+ bIterator = DeserializeChoice(2,&n,bIterator);
+ if(n==1)
+ {
+ // Deserialize messageClassExtension
+ bIterator = DeserializeSequence(&bitset0,false,bIterator);
+ m_messageType = -1;
+ }
+ else if(n == 0)
+ {
+ // Deserialize c1
+ bIterator = DeserializeChoice(2,&m_messageType,bIterator);
+ }
+
+ return bIterator;
+}
+
+Buffer::Iterator
+RrcAsn1Header::DeserializeDlCcchMessage (Buffer::Iterator bIterator)
+{
+ std::bitset<0> bitset0;
+ int n;
+
+ bIterator = DeserializeSequence(&bitset0,false,bIterator);
+ bIterator = DeserializeChoice(2,&n,bIterator);
+ if(n==1)
+ {
+ // Deserialize messageClassExtension
+ bIterator = DeserializeSequence(&bitset0,false,bIterator);
+ m_messageType = -1;
+ }
+ else if(n == 0)
+ {
+ // Deserialize c1
+ bIterator = DeserializeChoice(4,&m_messageType,bIterator);
+ }
+
+ return bIterator;
+}
+
+Buffer::Iterator
+RrcAsn1Header::DeserializeDlDcchMessage (Buffer::Iterator bIterator)
+{
+ std::bitset<0> bitset0;
+ int n;
+
+ bIterator = DeserializeSequence(&bitset0,false,bIterator);
+ bIterator = DeserializeChoice(2,&n,bIterator);
+ if(n==1)
+ {
+ // Deserialize messageClassExtension
+ bIterator = DeserializeSequence(&bitset0,false,bIterator);
+ m_messageType = -1;
+ }
+ else if(n == 0)
+ {
+ // Deserialize c1
+ bIterator = DeserializeChoice(16,&m_messageType,bIterator);
+ }
+
+ return bIterator;
+}
+
//////////////////// RrcConnectionRequest class ////////////////////////
// Constructor
@@ -1712,6 +1845,9 @@
{
m_serializationResult = Buffer ();
+ // Serialize DCCH message
+ SerializeUlDcchMessage(4);
+
// Serialize RRCConnectionSetupComplete sequence:
// no default or optional fields. Extension marker not present.
SerializeSequence<0> (std::bitset<0> (),false);
@@ -1737,6 +1873,9 @@
RrcConnectionSetupCompleteHeader::Deserialize (Buffer::Iterator bIterator)
{
std::bitset<0> bitset0;
+
+ bIterator = DeserializeUlDcchMessage(bIterator);
+
bIterator = DeserializeSequence (&bitset0,false,bIterator);
int n;
@@ -1789,6 +1928,14 @@
return m_rrcTransactionIdentifier;
}
+LteRrcSap::RrcConnectionSetupCompleted
+RrcConnectionSetupCompleteHeader::GetMessage() const
+{
+ LteRrcSap::RrcConnectionSetupCompleted msg;
+ msg.rrcTransactionIdentifier = m_rrcTransactionIdentifier;
+ return msg;
+}
+
//////////////////// RrcConnectionReconfigurationCompleteHeader class ////////////////////////
RrcConnectionReconfigurationCompleteHeader::RrcConnectionReconfigurationCompleteHeader ()
@@ -1800,6 +1947,9 @@
{
m_serializationResult = Buffer ();
+ // Serialize DCCH message
+ SerializeUlDcchMessage(2);
+
// Serialize RRCConnectionSetupComplete sequence:
// no default or optional fields. Extension marker not present.
SerializeSequence<0> (std::bitset<0> (),false);
@@ -1825,6 +1975,9 @@
bIterator = DeserializeSequence (&bitset0,false,bIterator);
int n;
+
+ bIterator = DeserializeUlDcchMessage(bIterator);
+
bIterator = DeserializeInteger (&n,0,3,bIterator);
m_rrcTransactionIdentifier = n;
@@ -2855,6 +3008,9 @@
{
m_serializationResult = Buffer ();
+ // Serialize DCCH message
+ SerializeUlDcchMessage(3);
+
// Serialize RrcConnectionReestablishmentComplete sequence:
// no default or optional fields. Extension marker not present.
SerializeSequence (std::bitset<0> (),false);
@@ -2879,6 +3035,8 @@
std::bitset<0> bitset0;
int n;
+ bIterator = DeserializeUlDcchMessage(bIterator);
+
// Deserialize RrcConnectionReestablishmentComplete sequence
// 0 optional fields, no extension marker
bIterator = DeserializeSequence (&bitset0,false,bIterator);
--- a/src/lte/model/lte-rrc-header.h Tue Dec 04 19:22:26 2012 +0100
+++ b/src/lte/model/lte-rrc-header.h Tue Dec 04 19:52:04 2012 +0100
@@ -39,7 +39,8 @@
{
public:
RrcAsn1Header ();
-
+ int GetMessageType ();
+
protected:
// Serialization functions
void SerializeSrbToAddModList (std::list<LteRrcSap::SrbToAddMod> srbToAddModList) const;
@@ -50,6 +51,10 @@
void SerializeSystemInformationBlockType1 (LteRrcSap::SystemInformationBlockType1 systemInformationBlockType1) const;
void SerializeSystemInformationBlockType2 () const;
void SerializeRadioResourceConfigCommonSIB () const;
+ void SerializeUlDcchMessage(int msgType) const;
+ void SerializeUlCcchMessage(int msgType) const;
+ void SerializeDlDcchMessage(int msgType) const;
+ void SerializeDlCcchMessage(int msgType) const;
// Deserialization functions
Buffer::Iterator DeserializeDrbToAddModList (std::list<LteRrcSap::DrbToAddMod> *drbToAddModLis, Buffer::Iterator bIterator);
@@ -61,8 +66,14 @@
Buffer::Iterator DeserializeSystemInformationBlockType2 (Buffer::Iterator bIterator);
Buffer::Iterator DeserializeRadioResourceConfigCommon (Buffer::Iterator bIterator);
Buffer::Iterator DeserializeRadioResourceConfigCommonSib (Buffer::Iterator bIterator);
+ Buffer::Iterator DeserializeUlDcchMessage (Buffer::Iterator bIterator);
+ Buffer::Iterator DeserializeUlCcchMessage (Buffer::Iterator bIterator);
+ Buffer::Iterator DeserializeDlDcchMessage (Buffer::Iterator bIterator);
+ Buffer::Iterator DeserializeDlCcchMessage (Buffer::Iterator bIterator);
void Print (std::ostream &os, LteRrcSap::RadioResourceConfigDedicated radioResourceConfigDedicated) const;
+
+ int m_messageType;
};
/**
@@ -130,8 +141,9 @@
uint32_t Deserialize (Buffer::Iterator bIterator);
void Print (std::ostream &os) const;
void SetMessage (RrcConnectionSetupCompleted msg);
-
+
uint8_t GetRrcTransactionIdentifier () const;
+ RrcConnectionSetupCompleted GetMessage() const;
private:
uint8_t m_rrcTransactionIdentifier;
--- a/src/lte/model/lte-rrc-protocol-real.cc Tue Dec 04 19:22:26 2012 +0100
+++ b/src/lte/model/lte-rrc-protocol-real.cc Tue Dec 04 19:52:04 2012 +0100
@@ -57,6 +57,8 @@
{
NS_LOG_FUNCTION (this);
delete m_ueRrcSapUser;
+ delete m_completeSetupParameters.srb0SapUser;
+ delete m_completeSetupParameters.srb1SapUser;
m_rrc = 0;
}
@@ -97,6 +99,17 @@
// after handover). We don't care about SRB0/SRB1 since we use real
// RRC messages.
DoReestablish ();
+
+ m_setupParameters.srb0SapProvider = params.srb0SapProvider;
+ m_setupParameters.srb1SapProvider = params.srb1SapProvider;
+
+ LteRlcSapUser* srb0SapUser = new LteRlcSpecificLteRlcSapUser<LteUeRrcProtocolReal> (this);
+ LtePdcpSapUser* srb1SapUser = new LtePdcpSpecificLtePdcpSapUser<LteUeRrcProtocolReal> (this);
+
+ m_completeSetupParameters.srb0SapUser=srb0SapUser;
+ m_completeSetupParameters.srb1SapUser=srb1SapUser;
+
+ m_ueRrcSapProvider->CompleteSetup(m_completeSetupParameters);
}
void
@@ -137,11 +150,19 @@
void
LteUeRrcProtocolReal::DoSendRrcConnectionSetupCompleted (LteRrcSap::RrcConnectionSetupCompleted msg)
{
- Simulator::Schedule (RRC_REAL_MSG_DELAY,
- &LteEnbRrcSapProvider::RecvRrcConnectionSetupCompleted,
- m_enbRrcSapProvider,
- m_rnti,
- msg);
+ Ptr<Packet> packet = Create<Packet> ();
+
+ RrcConnectionSetupCompleteHeader source;
+ source.SetMessage (msg);
+
+ packet->AddHeader (source);
+
+ LtePdcpSapProvider::TransmitPdcpSduParameters transmitPdcpSduParameters;
+ transmitPdcpSduParameters.pdcpSdu = packet;
+ transmitPdcpSduParameters.rnti = m_rnti;
+ transmitPdcpSduParameters.lcid = 1;
+
+ m_setupParameters.srb1SapProvider->TransmitPdcpSdu(transmitPdcpSduParameters);
}
void
@@ -220,6 +241,17 @@
enbRrcProtocolReal->SetUeRrcSapProvider (m_rnti, m_ueRrcSapProvider);
}
+void
+LteUeRrcProtocolReal::DoReceivePdcpPdu (Ptr<Packet> p)
+{
+ // TODO
+}
+
+void
+LteUeRrcProtocolReal::DoReceivePdcpSdu (LtePdcpSapUser::ReceivePdcpSduParameters params)
+{
+ // TODO
+}
NS_OBJECT_ENSURE_REGISTERED (LteEnbRrcProtocolReal);
@@ -322,12 +354,25 @@
// NS_ASSERT_MSG (found , " Unable to find UE with RNTI=" << rnti << " cellId=" << m_cellId);
// m_enbRrcSapProviderMap[rnti] = ueRrc->GetLteUeRrcSapProvider ();
-
// just create empty entry, the UeRrcSapProvider will be set by the
// ue upon connection request or connection reconfiguration
// completed
m_enbRrcSapProviderMap[rnti] = 0;
+ // Store SetupUeParameters
+ m_setupUeParametersMap[rnti] = params;
+
+ // Create LteRlcSapUser, LtePdcpSapUser
+ LteRlcSapUser* srb0SapUser = new LteRlcSpecificLteRlcSapUser<LteEnbRrcProtocolReal> (this);
+ LtePdcpSapUser* srb1SapUser = new LtePdcpSpecificLtePdcpSapUser<LteEnbRrcProtocolReal> (this);
+ LteEnbRrcSapProvider::CompleteSetupUeParameters completeSetupUeParameters;
+ completeSetupUeParameters.srb0SapUser = srb0SapUser;
+ completeSetupUeParameters.srb1SapUser = srb1SapUser;
+
+ // Store LteRlcSapUser, LtePdcpSapUser
+ m_completeSetupUeParametersMap[rnti] = completeSetupUeParameters;
+
+ m_enbRrcSapProvider->CompleteSetupUe(rnti,completeSetupUeParameters);
}
void
@@ -335,6 +380,7 @@
{
NS_LOG_FUNCTION (this << rnti);
m_enbRrcSapProviderMap.erase (rnti);
+ m_setupUeParametersMap.erase (rnti);
}
void
@@ -457,6 +503,24 @@
msg);
}
+void
+LteEnbRrcProtocolReal::DoReceivePdcpPdu (Ptr<Packet> p)
+{
+ // TODO
+}
+
+void
+LteEnbRrcProtocolReal::DoReceivePdcpSdu (LtePdcpSapUser::ReceivePdcpSduParameters params)
+{
+ // TODO
+ RrcConnectionSetupCompleteHeader rrcConnectionSetupCompleteHeader;
+ params.pdcpSdu->RemoveHeader (rrcConnectionSetupCompleteHeader);
+
+ LteRrcSap::RrcConnectionSetupCompleted msg = rrcConnectionSetupCompleteHeader.GetMessage();
+
+ m_enbRrcSapProvider->RecvRrcConnectionSetupCompleted(params.rnti, msg);
+
+}
/*
* The purpose of LteEnbRrcProtocolReal is to avoid encoding
--- a/src/lte/model/lte-rrc-protocol-real.h Tue Dec 04 19:22:26 2012 +0100
+++ b/src/lte/model/lte-rrc-protocol-real.h Tue Dec 04 19:52:04 2012 +0100
@@ -28,6 +28,9 @@
#include <ns3/ptr.h>
#include <ns3/object.h>
#include <ns3/lte-rrc-sap.h>
+#include <ns3/lte-pdcp-sap.h>
+#include <ns3/lte-rlc-sap.h>
+#include <ns3/lte-rrc-header.h>
namespace ns3 {
@@ -47,7 +50,9 @@
class LteUeRrcProtocolReal : public Object
{
friend class MemberLteUeRrcSapUser<LteUeRrcProtocolReal>;
-
+ friend class LteRlcSpecificLteRlcSapUser<LteUeRrcProtocolReal>;
+ friend class LtePdcpSpecificLtePdcpSapUser<LteUeRrcProtocolReal>;
+
public:
LteUeRrcProtocolReal ();
@@ -75,6 +80,8 @@
void DoSendRrcConnectionReestablishmentComplete (LteRrcSap::RrcConnectionReestablishmentComplete msg);
void SetEnbRrcSapProvider ();
+ void DoReceivePdcpPdu (Ptr<Packet> p);
+ void DoReceivePdcpSdu (LtePdcpSapUser::ReceivePdcpSduParameters params);
Ptr<LteUeRrc> m_rrc;
uint16_t m_rnti;
@@ -82,6 +89,9 @@
LteUeRrcSapUser* m_ueRrcSapUser;
LteEnbRrcSapProvider* m_enbRrcSapProvider;
+ LteUeRrcSapUser::SetupParameters m_setupParameters;
+ LteUeRrcSapProvider::CompleteSetupParameters m_completeSetupParameters;
+
};
@@ -95,7 +105,9 @@
class LteEnbRrcProtocolReal : public Object
{
friend class MemberLteEnbRrcSapUser<LteEnbRrcProtocolReal>;
-
+ friend class LtePdcpSpecificLtePdcpSapUser<LteEnbRrcProtocolReal>;
+ friend class LteRlcSpecificLteRlcSapUser<LteEnbRrcProtocolReal>;
+
public:
LteEnbRrcProtocolReal ();
@@ -132,12 +144,16 @@
Ptr<Packet> DoEncodeHandoverCommand (LteRrcSap::RrcConnectionReconfiguration msg);
LteRrcSap::RrcConnectionReconfiguration DoDecodeHandoverCommand (Ptr<Packet> p);
+ void DoReceivePdcpPdu (Ptr<Packet> p);
+ void DoReceivePdcpSdu (LtePdcpSapUser::ReceivePdcpSduParameters params);
uint16_t m_rnti;
uint16_t m_cellId;
LteEnbRrcSapProvider* m_enbRrcSapProvider;
LteEnbRrcSapUser* m_enbRrcSapUser;
std::map<uint16_t, LteUeRrcSapProvider*> m_enbRrcSapProviderMap;
+ std::map<uint16_t, LteEnbRrcSapUser::SetupUeParameters> m_setupUeParametersMap;
+ std::map<uint16_t, LteEnbRrcSapProvider::CompleteSetupUeParameters> m_completeSetupUeParametersMap;
};
--- a/src/lte/model/lte-ue-rrc.cc Tue Dec 04 19:22:26 2012 +0100
+++ b/src/lte/model/lte-ue-rrc.cc Tue Dec 04 19:52:04 2012 +0100
@@ -739,6 +739,11 @@
++stamIt;
NS_ASSERT_MSG (stamIt == rrcd.srbToAddModList.end (), "at most one SrbToAdd supported");
+
+ LteUeRrcSapUser::SetupParameters ueParams;
+ ueParams.srb0SapProvider = m_srb0->m_rlc->GetLteRlcSapProvider ();
+ ueParams.srb1SapProvider = m_srb1->m_pdcp->GetLtePdcpSapProvider ();
+ m_rrcSapUser->Setup (ueParams);
}
else
{
--- a/src/lte/model/pf-ff-mac-scheduler.cc Tue Dec 04 19:22:26 2012 +0100
+++ b/src/lte/model/pf-ff-mac-scheduler.cc Tue Dec 04 19:52:04 2012 +0100
@@ -1707,8 +1707,9 @@
uint8_t bsrId = params.m_macCeList.at (i).m_macCeValue.m_bufferStatus.at (lcg);
buffer += BufferSizeLevelBsr::BsrId2BufferSize (bsrId);
}
-
+
uint16_t rnti = params.m_macCeList.at (i).m_rnti;
+ NS_LOG_LOGIC (this << "RNTI=" << rnti << " buffer=" << buffer);
it = m_ceBsrRxed.find (rnti);
if (it == m_ceBsrRxed.end ())
{