Implement real DoSendRrcConnectionSetupCompleted
This commit is contained in:
@@ -141,7 +141,12 @@ UeManager::UeManager (Ptr<LteEnbRrc> rrc, uint16_t rnti, State s)
|
||||
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 @@ UeManager::UeManager (Ptr<LteEnbRrc> rrc, uint16_t rnti, State s)
|
||||
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 @@ UeManager::UeManager (Ptr<LteEnbRrc> rrc, uint16_t rnti, State s)
|
||||
|
||||
// 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 @@ LteEnbRrc::AddUe (UeManager::State state)
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -95,6 +95,7 @@ public:
|
||||
|
||||
// inherited from Object
|
||||
protected:
|
||||
virtual void DoStart ();
|
||||
virtual void DoDispose ();
|
||||
public:
|
||||
static TypeId GetTypeId (void);
|
||||
|
||||
@@ -560,6 +560,46 @@ RrcAsn1Header::DeserializeRadioResourceConfigDedicated (LteRrcSap::RadioResource
|
||||
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 @@ RrcAsn1Header::DeserializeRadioResourceConfigCommonSib (Buffer::Iterator bIterat
|
||||
|
||||
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 @@ RrcConnectionSetupCompleteHeader::PreSerialize () const
|
||||
{
|
||||
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 @@ uint32_t
|
||||
RrcConnectionSetupCompleteHeader::Deserialize (Buffer::Iterator bIterator)
|
||||
{
|
||||
std::bitset<0> bitset0;
|
||||
|
||||
bIterator = DeserializeUlDcchMessage(bIterator);
|
||||
|
||||
bIterator = DeserializeSequence (&bitset0,false,bIterator);
|
||||
|
||||
int n;
|
||||
@@ -1789,6 +1928,14 @@ RrcConnectionSetupCompleteHeader::GetRrcTransactionIdentifier () const
|
||||
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 @@ RrcConnectionReconfigurationCompleteHeader::PreSerialize () const
|
||||
{
|
||||
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 @@ RrcConnectionReconfigurationCompleteHeader::Deserialize (Buffer::Iterator bItera
|
||||
bIterator = DeserializeSequence (&bitset0,false,bIterator);
|
||||
|
||||
int n;
|
||||
|
||||
bIterator = DeserializeUlDcchMessage(bIterator);
|
||||
|
||||
bIterator = DeserializeInteger (&n,0,3,bIterator);
|
||||
m_rrcTransactionIdentifier = n;
|
||||
|
||||
@@ -2855,6 +3008,9 @@ RrcConnectionReestablishmentCompleteHeader::PreSerialize () const
|
||||
{
|
||||
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 @@ RrcConnectionReestablishmentCompleteHeader::Deserialize (Buffer::Iterator bItera
|
||||
std::bitset<0> bitset0;
|
||||
int n;
|
||||
|
||||
bIterator = DeserializeUlDcchMessage(bIterator);
|
||||
|
||||
// Deserialize RrcConnectionReestablishmentComplete sequence
|
||||
// 0 optional fields, no extension marker
|
||||
bIterator = DeserializeSequence (&bitset0,false,bIterator);
|
||||
|
||||
@@ -39,7 +39,8 @@ class RrcAsn1Header : public Asn1Header
|
||||
{
|
||||
public:
|
||||
RrcAsn1Header ();
|
||||
|
||||
int GetMessageType ();
|
||||
|
||||
protected:
|
||||
// Serialization functions
|
||||
void SerializeSrbToAddModList (std::list<LteRrcSap::SrbToAddMod> srbToAddModList) const;
|
||||
@@ -50,6 +51,10 @@ protected:
|
||||
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 @@ protected:
|
||||
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 @@ public:
|
||||
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;
|
||||
|
||||
@@ -57,6 +57,8 @@ LteUeRrcProtocolReal::DoDispose ()
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
delete m_ueRrcSapUser;
|
||||
delete m_completeSetupParameters.srb0SapUser;
|
||||
delete m_completeSetupParameters.srb1SapUser;
|
||||
m_rrc = 0;
|
||||
}
|
||||
|
||||
@@ -97,6 +99,17 @@ LteUeRrcProtocolReal::DoSetup (LteUeRrcSapUser::SetupParameters params)
|
||||
// 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 @@ LteUeRrcProtocolReal::DoSendRrcConnectionRequest (LteRrcSap::RrcConnectionReques
|
||||
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 @@ LteUeRrcProtocolReal::SetEnbRrcSapProvider ()
|
||||
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 @@ LteEnbRrcProtocolReal::DoSetupUe (uint16_t rnti, LteEnbRrcSapUser::SetupUeParame
|
||||
// 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 @@ LteEnbRrcProtocolReal::DoRemoveUe (uint16_t rnti)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << rnti);
|
||||
m_enbRrcSapProviderMap.erase (rnti);
|
||||
m_setupUeParametersMap.erase (rnti);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -457,6 +503,24 @@ LteEnbRrcProtocolReal::DoSendRrcConnectionRelease (uint16_t rnti, LteRrcSap::Rrc
|
||||
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
|
||||
|
||||
@@ -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 LteUeRrc;
|
||||
class LteUeRrcProtocolReal : public Object
|
||||
{
|
||||
friend class MemberLteUeRrcSapUser<LteUeRrcProtocolReal>;
|
||||
|
||||
friend class LteRlcSpecificLteRlcSapUser<LteUeRrcProtocolReal>;
|
||||
friend class LtePdcpSpecificLtePdcpSapUser<LteUeRrcProtocolReal>;
|
||||
|
||||
public:
|
||||
|
||||
LteUeRrcProtocolReal ();
|
||||
@@ -75,6 +80,8 @@ private:
|
||||
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 @@ private:
|
||||
LteUeRrcSapUser* m_ueRrcSapUser;
|
||||
LteEnbRrcSapProvider* m_enbRrcSapProvider;
|
||||
|
||||
LteUeRrcSapUser::SetupParameters m_setupParameters;
|
||||
LteUeRrcSapProvider::CompleteSetupParameters m_completeSetupParameters;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -95,7 +105,9 @@ private:
|
||||
class LteEnbRrcProtocolReal : public Object
|
||||
{
|
||||
friend class MemberLteEnbRrcSapUser<LteEnbRrcProtocolReal>;
|
||||
|
||||
friend class LtePdcpSpecificLtePdcpSapUser<LteEnbRrcProtocolReal>;
|
||||
friend class LteRlcSpecificLteRlcSapUser<LteEnbRrcProtocolReal>;
|
||||
|
||||
public:
|
||||
|
||||
LteEnbRrcProtocolReal ();
|
||||
@@ -132,12 +144,16 @@ private:
|
||||
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;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -735,6 +735,11 @@ LteUeRrc::ApplyRadioResourceConfigDedicated (LteRrcSap::RadioResourceConfigDedic
|
||||
|
||||
++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
|
||||
{
|
||||
|
||||
@@ -1707,8 +1707,9 @@ PfFfMacScheduler::DoSchedUlMacCtrlInfoReq (const struct FfMacSchedSapProvider::S
|
||||
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 ())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user