From 8b8d9e8e8415d9e225b6a22c362cebd550971f5d Mon Sep 17 00:00:00 2001 From: Lluis Parcerisa Date: Tue, 18 Dec 2012 11:20:44 +0100 Subject: [PATCH 1/2] Change encoding of ulBandwith, dlBandwith on m_mobilityControlInfo.carrierBandwidth. --- src/lte/model/lte-rrc-header.cc | 76 ++++++++++++++++++++++++++++-- src/lte/test/test-asn1-encoding.cc | 4 +- 2 files changed, 74 insertions(+), 6 deletions(-) diff --git a/src/lte/model/lte-rrc-header.cc b/src/lte/model/lte-rrc-header.cc index f0d613fd1..dc6df8e1a 100644 --- a/src/lte/model/lte-rrc-header.cc +++ b/src/lte/model/lte-rrc-header.cc @@ -2019,8 +2019,30 @@ RrcConnectionReconfigurationHeader::PreSerialize () const if (m_mobilityControlInfo.haveCarrierBandwidth) { SerializeSequence (std::bitset<1> (1),false); - SerializeEnum (16,m_mobilityControlInfo.carrierBandwidth.dlBandwidth); - SerializeEnum (16,m_mobilityControlInfo.carrierBandwidth.ulBandwidth); + + // Serialize dl-Bandwidth + switch(m_mobilityControlInfo.carrierBandwidth.dlBandwidth) + { + case 6: SerializeEnum (16,0); break; + case 15: SerializeEnum (16,1); break; + case 25: SerializeEnum (16,2); break; + case 50: SerializeEnum (16,3); break; + case 75: SerializeEnum (16,4); break; + case 100: SerializeEnum (16,5); break; + default: SerializeEnum (16,6); + } + + // Serialize ul-Bandwidth + switch(m_mobilityControlInfo.carrierBandwidth.ulBandwidth) + { + case 6: SerializeEnum (16,0); break; + case 15: SerializeEnum (16,1); break; + case 25: SerializeEnum (16,2); break; + case 50: SerializeEnum (16,3); break; + case 75: SerializeEnum (16,4); break; + case 100: SerializeEnum (16,5); break; + default: SerializeEnum (16,6); + } } // Serialize t304 @@ -2206,12 +2228,58 @@ RrcConnectionReconfigurationHeader::Deserialize (Buffer::Iterator bIterator) bIterator = DeserializeSequence (&ulBandwidthPresent,false,bIterator); bIterator = DeserializeEnum (16,&n,bIterator); - m_mobilityControlInfo.carrierBandwidth.dlBandwidth = n; + switch(n) + { + case 0: + m_mobilityControlInfo.carrierBandwidth.dlBandwidth = 6; + break; + case 1: + m_mobilityControlInfo.carrierBandwidth.dlBandwidth = 15; + break; + case 2: + m_mobilityControlInfo.carrierBandwidth.dlBandwidth = 25; + break; + case 3: + m_mobilityControlInfo.carrierBandwidth.dlBandwidth = 50; + break; + case 4: + m_mobilityControlInfo.carrierBandwidth.dlBandwidth = 75; + break; + case 5: + m_mobilityControlInfo.carrierBandwidth.dlBandwidth = 100; + break; + case 6: + m_mobilityControlInfo.carrierBandwidth.dlBandwidth = 0; + break; + } if (ulBandwidthPresent[0]) { bIterator = DeserializeEnum (16,&n,bIterator); - m_mobilityControlInfo.carrierBandwidth.ulBandwidth = n; + switch(n) + { + case 0: + m_mobilityControlInfo.carrierBandwidth.ulBandwidth = 6; + break; + case 1: + m_mobilityControlInfo.carrierBandwidth.ulBandwidth = 15; + break; + case 2: + m_mobilityControlInfo.carrierBandwidth.ulBandwidth = 25; + break; + case 3: + m_mobilityControlInfo.carrierBandwidth.ulBandwidth = 50; + break; + case 4: + m_mobilityControlInfo.carrierBandwidth.ulBandwidth = 75; + break; + case 5: + m_mobilityControlInfo.carrierBandwidth.ulBandwidth = 100; + break; + case 6: + m_mobilityControlInfo.carrierBandwidth.ulBandwidth = 0; + break; + } } } diff --git a/src/lte/test/test-asn1-encoding.cc b/src/lte/test/test-asn1-encoding.cc index 7fe89632d..b1869a80a 100644 --- a/src/lte/test/test-asn1-encoding.cc +++ b/src/lte/test/test-asn1-encoding.cc @@ -449,8 +449,8 @@ RrcConnectionReconfigurationTestCase::DoRun (void) msg.mobilityControlInfo.carrierFreq.dlCarrierFreq = 3; msg.mobilityControlInfo.carrierFreq.ulCarrierFreq = 5; msg.mobilityControlInfo.haveCarrierBandwidth = true; - msg.mobilityControlInfo.carrierBandwidth.dlBandwidth = 5; - msg.mobilityControlInfo.carrierBandwidth.ulBandwidth = 3; + msg.mobilityControlInfo.carrierBandwidth.dlBandwidth = 50; + msg.mobilityControlInfo.carrierBandwidth.ulBandwidth = 25; msg.mobilityControlInfo.newUeIdentity = 11; msg.mobilityControlInfo.haveRachConfigDedicated = true; msg.mobilityControlInfo.rachConfigDedicated.raPreambleIndex = 2; From a86c5d54ca02190667740326472f0dd7ef86fbe4 Mon Sep 17 00:00:00 2001 From: Lluis Parcerisa Date: Tue, 18 Dec 2012 11:30:06 +0100 Subject: [PATCH 2/2] Ns-3 formatting... --- src/lte/model/lte-rrc-header.cc | 114 ++++++++++++++++++++------------ src/lte/model/lte-rrc-header.h | 2 +- 2 files changed, 71 insertions(+), 45 deletions(-) diff --git a/src/lte/model/lte-rrc-header.cc b/src/lte/model/lte-rrc-header.cc index dc6df8e1a..4a44201c5 100644 --- a/src/lte/model/lte-rrc-header.cc +++ b/src/lte/model/lte-rrc-header.cc @@ -2021,28 +2021,54 @@ RrcConnectionReconfigurationHeader::PreSerialize () const SerializeSequence (std::bitset<1> (1),false); // Serialize dl-Bandwidth - switch(m_mobilityControlInfo.carrierBandwidth.dlBandwidth) - { - case 6: SerializeEnum (16,0); break; - case 15: SerializeEnum (16,1); break; - case 25: SerializeEnum (16,2); break; - case 50: SerializeEnum (16,3); break; - case 75: SerializeEnum (16,4); break; - case 100: SerializeEnum (16,5); break; - default: SerializeEnum (16,6); - } + switch (m_mobilityControlInfo.carrierBandwidth.dlBandwidth) + { + case 6: + SerializeEnum (16,0); + break; + case 15: + SerializeEnum (16,1); + break; + case 25: + SerializeEnum (16,2); + break; + case 50: + SerializeEnum (16,3); + break; + case 75: + SerializeEnum (16,4); + break; + case 100: + SerializeEnum (16,5); + break; + default: + SerializeEnum (16,6); + } // Serialize ul-Bandwidth - switch(m_mobilityControlInfo.carrierBandwidth.ulBandwidth) - { - case 6: SerializeEnum (16,0); break; - case 15: SerializeEnum (16,1); break; - case 25: SerializeEnum (16,2); break; - case 50: SerializeEnum (16,3); break; - case 75: SerializeEnum (16,4); break; - case 100: SerializeEnum (16,5); break; - default: SerializeEnum (16,6); - } + switch (m_mobilityControlInfo.carrierBandwidth.ulBandwidth) + { + case 6: + SerializeEnum (16,0); + break; + case 15: + SerializeEnum (16,1); + break; + case 25: + SerializeEnum (16,2); + break; + case 50: + SerializeEnum (16,3); + break; + case 75: + SerializeEnum (16,4); + break; + case 100: + SerializeEnum (16,5); + break; + default: + SerializeEnum (16,6); + } } // Serialize t304 @@ -2077,7 +2103,7 @@ RrcConnectionReconfigurationHeader::PreSerialize () const SerializeBoolean (false); SerializeInteger (0,0,29); SerializeBoolean (false); - SerializeInteger (4,0,7); // ************** + SerializeInteger (4,0,7); // Serialize UL-CyclicPrefixLength SerializeEnum (2,0); @@ -2228,8 +2254,8 @@ RrcConnectionReconfigurationHeader::Deserialize (Buffer::Iterator bIterator) bIterator = DeserializeSequence (&ulBandwidthPresent,false,bIterator); bIterator = DeserializeEnum (16,&n,bIterator); - switch(n) - { + switch (n) + { case 0: m_mobilityControlInfo.carrierBandwidth.dlBandwidth = 6; break; @@ -2251,13 +2277,13 @@ RrcConnectionReconfigurationHeader::Deserialize (Buffer::Iterator bIterator) case 6: m_mobilityControlInfo.carrierBandwidth.dlBandwidth = 0; break; - } + } if (ulBandwidthPresent[0]) { bIterator = DeserializeEnum (16,&n,bIterator); - switch(n) - { + switch (n) + { case 0: m_mobilityControlInfo.carrierBandwidth.ulBandwidth = 6; break; @@ -2279,7 +2305,7 @@ RrcConnectionReconfigurationHeader::Deserialize (Buffer::Iterator bIterator) case 6: m_mobilityControlInfo.carrierBandwidth.ulBandwidth = 0; break; - } + } } } @@ -3373,7 +3399,7 @@ RrcConnectionRejectHeader::PreSerialize () const // Serialize c1 choice SerializeChoice (4,0); - + // Serialize rrcConnectionReject-r8 sequence // 1 optional field (not present), no extension marker. SerializeSequence (std::bitset<1> (0),false); @@ -3412,24 +3438,24 @@ RrcConnectionRejectHeader::Deserialize (Buffer::Iterator bIterator) bIterator = DeserializeChoice (4,&c1Choice,bIterator); if (c1Choice > 0) - { - bIterator = DeserializeNull(bIterator); - } - else if (c1Choice == 0) - { - // Deserialize rrcConnectionReject-r8 - std::bitset<1> opts; - bIterator = DeserializeSequence (&opts,false,bIterator); - - bIterator = DeserializeInteger (&n,1,16,bIterator); - m_rrcConnectionReject.waitTime = n; - - if (opts[0]) { - // Deserialize RRCConnectionReject-v8a0-IEs - // ... + bIterator = DeserializeNull (bIterator); + } + else if (c1Choice == 0) + { + // Deserialize rrcConnectionReject-r8 + std::bitset<1> opts; + bIterator = DeserializeSequence (&opts,false,bIterator); + + bIterator = DeserializeInteger (&n,1,16,bIterator); + m_rrcConnectionReject.waitTime = n; + + if (opts[0]) + { + // Deserialize RRCConnectionReject-v8a0-IEs + // ... + } } - } } return GetSerializedSize (); diff --git a/src/lte/model/lte-rrc-header.h b/src/lte/model/lte-rrc-header.h index 73b542e76..5ede7e058 100644 --- a/src/lte/model/lte-rrc-header.h +++ b/src/lte/model/lte-rrc-header.h @@ -381,7 +381,7 @@ private: * This class manages the serialization/deserialization of RrcConnectionReject IE */ class RrcConnectionRejectHeader : public RrcDlCcchMessage, - LteRrcSap + LteRrcSap { public: RrcConnectionRejectHeader ();