This commit is contained in:
Nicola Baldo
2012-12-18 11:32:38 +01:00
3 changed files with 119 additions and 25 deletions

View File

@@ -2019,8 +2019,56 @@ 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
@@ -2055,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);
@@ -2206,12 +2254,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;
}
}
}
@@ -3305,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);
@@ -3344,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 ();

View File

@@ -381,7 +381,7 @@ private:
* This class manages the serialization/deserialization of RrcConnectionReject IE
*/
class RrcConnectionRejectHeader : public RrcDlCcchMessage,
LteRrcSap
LteRrcSap
{
public:
RrcConnectionRejectHeader ();

View File

@@ -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;