Rrc header: implementation of RrcConnectionReestablishment, RrcConnectionReestablishmentRequest, RrcConnectionReestablishmentComplete.
This commit is contained in:
@@ -182,6 +182,11 @@ void Asn1Header::SerializeBitstring (std::bitset<1> data) const
|
||||
SerializeBitstring<1> (data);
|
||||
}
|
||||
|
||||
void Asn1Header::SerializeBitstring (std::bitset<2> data) const
|
||||
{
|
||||
SerializeBitstring<2> (data);
|
||||
}
|
||||
|
||||
void Asn1Header::SerializeBitstring (std::bitset<8> data) const
|
||||
{
|
||||
SerializeBitstring<8> (data);
|
||||
@@ -478,6 +483,11 @@ Buffer::Iterator Asn1Header::DeserializeBitstring (std::bitset<1> *data, Buffer:
|
||||
return DeserializeBitstring<1> (data,bIterator);
|
||||
}
|
||||
|
||||
Buffer::Iterator Asn1Header::DeserializeBitstring (std::bitset<2> *data, Buffer::Iterator bIterator)
|
||||
{
|
||||
return DeserializeBitstring<2> (data,bIterator);
|
||||
}
|
||||
|
||||
Buffer::Iterator Asn1Header::DeserializeBitstring (std::bitset<8> *data, Buffer::Iterator bIterator)
|
||||
{
|
||||
return DeserializeBitstring<8> (data,bIterator);
|
||||
|
||||
@@ -89,6 +89,7 @@ protected:
|
||||
template <int N>
|
||||
void SerializeBitstring (std::bitset<N> bitstring) const;
|
||||
void SerializeBitstring (std::bitset<1> bitstring) const;
|
||||
void SerializeBitstring (std::bitset<2> bitstring) const;
|
||||
void SerializeBitstring (std::bitset<8> bitstring) const;
|
||||
void SerializeBitstring (std::bitset<10> bitstring) const;
|
||||
void SerializeBitstring (std::bitset<16> bitstring) const;
|
||||
@@ -122,6 +123,7 @@ protected:
|
||||
template <int N>
|
||||
Buffer::Iterator DeserializeBitstring (std::bitset<N> *bitstring, Buffer::Iterator bIterator);
|
||||
Buffer::Iterator DeserializeBitstring (std::bitset<1> *bitstring, Buffer::Iterator bIterator);
|
||||
Buffer::Iterator DeserializeBitstring (std::bitset<2> *bitstring, Buffer::Iterator bIterator);
|
||||
Buffer::Iterator DeserializeBitstring (std::bitset<8> *bitstring, Buffer::Iterator bIterator);
|
||||
Buffer::Iterator DeserializeBitstring (std::bitset<10> *bitstring, Buffer::Iterator bIterator);
|
||||
Buffer::Iterator DeserializeBitstring (std::bitset<16> *bitstring, Buffer::Iterator bIterator);
|
||||
|
||||
@@ -2581,6 +2581,353 @@ HandoverPreparationInfoHeader::GetAsConfig () const
|
||||
return m_asConfig;
|
||||
}
|
||||
|
||||
//////////////////// RrcConnectionReestablishmentRequestHeader class ////////////////////////
|
||||
|
||||
RrcConnectionReestablishmentRequestHeader::RrcConnectionReestablishmentRequestHeader ()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
RrcConnectionReestablishmentRequestHeader::PreSerialize () const
|
||||
{
|
||||
m_serializationResult = Buffer ();
|
||||
|
||||
// Serialize RrcConnectionReestablishmentReques sequence:
|
||||
// no default or optional fields. Extension marker not present.
|
||||
SerializeSequence<0> (std::bitset<0> (),false);
|
||||
|
||||
// Serialize criticalExtensions choice
|
||||
// chosen: rrcConnectionReestablishmentRequest-r8
|
||||
SerializeChoice (2,0);
|
||||
|
||||
// Serialize RRCConnectionReestablishmentRequest-r8-IEs sequence
|
||||
// no default or optional fields. Extension marker not present.
|
||||
SerializeSequence<0> (std::bitset<0> (),false);
|
||||
|
||||
// Serialize ue-Identity
|
||||
SerializeSequence<0> (std::bitset<0> (),false);
|
||||
// Serialize c-RNTI
|
||||
SerializeBitstring (std::bitset<16> (m_ueIdentity.cRnti));
|
||||
// Serialize physCellId
|
||||
SerializeInteger (m_ueIdentity.physCellId,0,503);
|
||||
// Serialize shortMAC-I
|
||||
SerializeBitstring (std::bitset<16> (0));
|
||||
|
||||
// Serialize ReestablishmentCause
|
||||
switch (m_reestablishmentCause)
|
||||
{
|
||||
case RECONFIGURATION_FAILURE:
|
||||
SerializeEnum (4,0);
|
||||
break;
|
||||
case HANDOVER_FAILURE:
|
||||
SerializeEnum (4,1);
|
||||
break;
|
||||
case OTHER_FAILURE:
|
||||
SerializeEnum (4,2);
|
||||
break;
|
||||
default:
|
||||
SerializeEnum (4,3);
|
||||
}
|
||||
|
||||
// Serialize spare
|
||||
SerializeBitstring<2> (std::bitset<2> (0));
|
||||
|
||||
// Finish serialization
|
||||
FinalizeSerialization ();
|
||||
}
|
||||
|
||||
uint32_t
|
||||
RrcConnectionReestablishmentRequestHeader::Deserialize (Buffer::Iterator bIterator)
|
||||
{
|
||||
std::bitset<0> bitset0;
|
||||
int n;
|
||||
|
||||
// Deserialize RrcConnectionReestablishmentRequest sequence
|
||||
// 0 optional fields, no extension marker
|
||||
bIterator = DeserializeSequence (&bitset0,false,bIterator);
|
||||
|
||||
// Deserialize criticalExtensions choice
|
||||
bIterator = DeserializeChoice (2,&n,bIterator);
|
||||
if ( n == 1)
|
||||
{
|
||||
// Deserialize criticalExtensionsFuture
|
||||
bIterator = DeserializeSequence (&bitset0,false,bIterator);
|
||||
}
|
||||
else if ( n == 0)
|
||||
{
|
||||
// Deserialize RRCConnectionReestablishmentRequest-r8-IEs
|
||||
bIterator = DeserializeSequence (&bitset0,false,bIterator);
|
||||
|
||||
// Deserialize ReestabUE-Identity sequence
|
||||
bIterator = DeserializeSequence (&bitset0,false,bIterator);
|
||||
|
||||
// Deserialize c-RNTI
|
||||
std::bitset<16> cRnti;
|
||||
bIterator = DeserializeBitstring (&cRnti,bIterator);
|
||||
m_ueIdentity.cRnti = cRnti.to_ulong ();
|
||||
|
||||
// Deserialize physCellId
|
||||
int physCellId;
|
||||
bIterator = DeserializeInteger (&physCellId,0,503,bIterator);
|
||||
m_ueIdentity.physCellId = physCellId;
|
||||
|
||||
// Deserialize shortMAC-I
|
||||
std::bitset<16> shortMacI;
|
||||
bIterator = DeserializeBitstring (&shortMacI,bIterator);
|
||||
|
||||
// Deserialize ReestablishmentCause
|
||||
int reestCs;
|
||||
bIterator = DeserializeEnum (4,&reestCs,bIterator);
|
||||
switch (reestCs)
|
||||
{
|
||||
case 0:
|
||||
m_reestablishmentCause = RECONFIGURATION_FAILURE;
|
||||
break;
|
||||
case 1:
|
||||
m_reestablishmentCause = HANDOVER_FAILURE;
|
||||
break;
|
||||
case 2:
|
||||
m_reestablishmentCause = OTHER_FAILURE;
|
||||
break;
|
||||
case 3:
|
||||
break;
|
||||
}
|
||||
|
||||
// Deserialize spare
|
||||
std::bitset<2> spare;
|
||||
bIterator = DeserializeBitstring (&spare,bIterator);
|
||||
}
|
||||
|
||||
return GetSerializedSize ();
|
||||
}
|
||||
|
||||
void
|
||||
RrcConnectionReestablishmentRequestHeader::Print (std::ostream &os) const
|
||||
{
|
||||
os << "ueIdentity.cRnti: " << (int)m_ueIdentity.cRnti << std::endl;
|
||||
os << "ueIdentity.physCellId: " << (int)m_ueIdentity.physCellId << std::endl;
|
||||
os << "m_reestablishmentCause: " << m_reestablishmentCause << std::endl;
|
||||
}
|
||||
|
||||
void
|
||||
RrcConnectionReestablishmentRequestHeader::SetMessage (RrcConnectionReestablishmentRequest msg)
|
||||
{
|
||||
m_ueIdentity = msg.ueIdentity;
|
||||
m_reestablishmentCause = msg.reestablishmentCause;
|
||||
m_isDataSerialized = false;
|
||||
}
|
||||
|
||||
LteRrcSap::ReestabUeIdentity
|
||||
RrcConnectionReestablishmentRequestHeader::GetUeIdentity () const
|
||||
{
|
||||
return m_ueIdentity;
|
||||
}
|
||||
|
||||
LteRrcSap::ReestablishmentCause
|
||||
RrcConnectionReestablishmentRequestHeader::GetReestablishmentCause () const
|
||||
{
|
||||
return m_reestablishmentCause;
|
||||
}
|
||||
|
||||
//////////////////// RrcConnectionReestablishmentRequestHeader class ////////////////////////
|
||||
|
||||
RrcConnectionReestablishmentHeader::RrcConnectionReestablishmentHeader ()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
RrcConnectionReestablishmentHeader::PreSerialize () const
|
||||
{
|
||||
m_serializationResult = Buffer ();
|
||||
|
||||
// Serialize RrcConnectionReestablishment sequence:
|
||||
// no default or optional fields. Extension marker not present.
|
||||
SerializeSequence (std::bitset<0> (),false);
|
||||
|
||||
// Serialize rrc-TransactionIdentifier
|
||||
SerializeInteger (m_rrcTransactionIdentifier,0,3);
|
||||
|
||||
// Serialize criticalExtensions choice
|
||||
SerializeChoice (2,0);
|
||||
|
||||
// Serialize c1 choice
|
||||
SerializeChoice (8,0);
|
||||
|
||||
// Serialize RRCConnectionReestablishment-r8-IEs sequence
|
||||
// 1 optional field, no extension marker
|
||||
SerializeSequence (std::bitset<1> (0),false);
|
||||
|
||||
// Serialize radioResourceConfigDedicated
|
||||
SerializeRadioResourceConfigDedicated (m_radioResourceConfigDedicated);
|
||||
|
||||
// Serialize nextHopChainingCount
|
||||
SerializeInteger (0,0,7);
|
||||
|
||||
// Finish serialization
|
||||
FinalizeSerialization ();
|
||||
}
|
||||
|
||||
uint32_t
|
||||
RrcConnectionReestablishmentHeader::Deserialize (Buffer::Iterator bIterator)
|
||||
{
|
||||
std::bitset<0> bitset0;
|
||||
int n;
|
||||
|
||||
// Deserialize RrcConnectionReestablishment sequence
|
||||
// 0 optional fields, no extension marker
|
||||
bIterator = DeserializeSequence (&bitset0,false,bIterator);
|
||||
|
||||
// Deserialize rrc-TransactionIdentifier
|
||||
bIterator = DeserializeInteger (&n,0,3,bIterator);
|
||||
m_rrcTransactionIdentifier = n;
|
||||
|
||||
// Deserialize criticalExtensions choice
|
||||
int criticalExtensionsChoice;
|
||||
bIterator = DeserializeChoice (2,&criticalExtensionsChoice,bIterator);
|
||||
if (criticalExtensionsChoice == 1)
|
||||
{
|
||||
// Deserialize criticalExtensionsFuture
|
||||
bIterator = DeserializeSequence (&bitset0,false,bIterator);
|
||||
}
|
||||
else if (criticalExtensionsChoice == 0)
|
||||
{
|
||||
// Deserialize c1
|
||||
int c1;
|
||||
bIterator = DeserializeChoice (8,&c1,bIterator);
|
||||
if (c1 > 0)
|
||||
{
|
||||
bIterator = DeserializeNull (bIterator);
|
||||
}
|
||||
else if (c1 == 0)
|
||||
{
|
||||
// Deserialize rrcConnectionReestablishment-r8
|
||||
// 1 optional field
|
||||
std::bitset<1> nonCriticalExtensionPresent;
|
||||
bIterator = DeserializeSequence (&nonCriticalExtensionPresent,false,bIterator);
|
||||
|
||||
// Deserialize RadioResourceConfigDedicated
|
||||
bIterator = DeserializeRadioResourceConfigDedicated (&m_radioResourceConfigDedicated,bIterator);
|
||||
|
||||
// Deserialize nextHopChainingCount
|
||||
bIterator = DeserializeInteger (&n,0,7,bIterator);
|
||||
}
|
||||
}
|
||||
|
||||
return GetSerializedSize ();
|
||||
}
|
||||
|
||||
void
|
||||
RrcConnectionReestablishmentHeader::Print (std::ostream &os) const
|
||||
{
|
||||
os << "rrcTransactionIdentifier: " << (int)m_rrcTransactionIdentifier << std::endl;
|
||||
os << "RadioResourceConfigDedicated: " << std::endl;
|
||||
RrcAsn1Header::Print (os,m_radioResourceConfigDedicated);
|
||||
}
|
||||
|
||||
void
|
||||
RrcConnectionReestablishmentHeader::SetMessage (RrcConnectionReestablishment msg)
|
||||
{
|
||||
m_rrcTransactionIdentifier = msg.rrcTransactionIdentifier;
|
||||
m_radioResourceConfigDedicated = msg.radioResourceConfigDedicated;
|
||||
m_isDataSerialized = false;
|
||||
}
|
||||
|
||||
uint8_t
|
||||
RrcConnectionReestablishmentHeader::GetRrcTransactionIdentifier () const
|
||||
{
|
||||
return m_rrcTransactionIdentifier;
|
||||
}
|
||||
|
||||
LteRrcSap::RadioResourceConfigDedicated
|
||||
RrcConnectionReestablishmentHeader::GetRadioResourceConfigDedicated () const
|
||||
{
|
||||
return m_radioResourceConfigDedicated;
|
||||
}
|
||||
|
||||
//////////////////// RrcConnectionReestablishmentCompleteHeader class ////////////////////////
|
||||
|
||||
RrcConnectionReestablishmentCompleteHeader::RrcConnectionReestablishmentCompleteHeader ()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
RrcConnectionReestablishmentCompleteHeader::PreSerialize () const
|
||||
{
|
||||
m_serializationResult = Buffer ();
|
||||
|
||||
// Serialize RrcConnectionReestablishmentComplete sequence:
|
||||
// no default or optional fields. Extension marker not present.
|
||||
SerializeSequence (std::bitset<0> (),false);
|
||||
|
||||
// Serialize rrc-TransactionIdentifier
|
||||
SerializeInteger (m_rrcTransactionIdentifier,0,3);
|
||||
|
||||
// Serialize criticalExtensions choice
|
||||
SerializeChoice (2,0);
|
||||
|
||||
// Serialize rrcConnectionReestablishmentComplete-r8 sequence
|
||||
// 1 optional field (not present), no extension marker.
|
||||
SerializeSequence (std::bitset<1> (0),false);
|
||||
|
||||
// Finish serialization
|
||||
FinalizeSerialization ();
|
||||
}
|
||||
|
||||
uint32_t
|
||||
RrcConnectionReestablishmentCompleteHeader::Deserialize (Buffer::Iterator bIterator)
|
||||
{
|
||||
std::bitset<0> bitset0;
|
||||
int n;
|
||||
|
||||
// Deserialize RrcConnectionReestablishmentComplete sequence
|
||||
// 0 optional fields, no extension marker
|
||||
bIterator = DeserializeSequence (&bitset0,false,bIterator);
|
||||
|
||||
// Deserialize rrc-TransactionIdentifier
|
||||
bIterator = DeserializeInteger (&n,0,3,bIterator);
|
||||
m_rrcTransactionIdentifier = n;
|
||||
|
||||
// Deserialize criticalExtensions choice
|
||||
int criticalExtensionsChoice;
|
||||
bIterator = DeserializeChoice (2,&criticalExtensionsChoice,bIterator);
|
||||
if (criticalExtensionsChoice == 1)
|
||||
{
|
||||
// Deserialize criticalExtensionsFuture
|
||||
bIterator = DeserializeSequence (&bitset0,false,bIterator);
|
||||
}
|
||||
else if (criticalExtensionsChoice == 0)
|
||||
{
|
||||
// Deserialize rrcConnectionReestablishmentComplete-r8
|
||||
std::bitset<1> opts;
|
||||
bIterator = DeserializeSequence (&opts,false,bIterator);
|
||||
if (opts[0])
|
||||
{
|
||||
// Deserialize RRCConnectionReestablishmentComplete-v920-IEs
|
||||
// ...
|
||||
}
|
||||
}
|
||||
|
||||
return GetSerializedSize ();
|
||||
}
|
||||
|
||||
void
|
||||
RrcConnectionReestablishmentCompleteHeader::Print (std::ostream &os) const
|
||||
{
|
||||
os << "rrcTransactionIdentifier: " << (int)m_rrcTransactionIdentifier << std::endl;
|
||||
}
|
||||
|
||||
void
|
||||
RrcConnectionReestablishmentCompleteHeader::SetMessage (RrcConnectionReestablishmentComplete msg)
|
||||
{
|
||||
m_rrcTransactionIdentifier = msg.rrcTransactionIdentifier;
|
||||
m_isDataSerialized = false;
|
||||
}
|
||||
|
||||
uint8_t
|
||||
RrcConnectionReestablishmentCompleteHeader::GetRrcTransactionIdentifier () const
|
||||
{
|
||||
return m_rrcTransactionIdentifier;
|
||||
}
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
|
||||
@@ -215,6 +215,68 @@ private:
|
||||
AsConfig m_asConfig;
|
||||
};
|
||||
|
||||
/**
|
||||
* This class manages the serialization/deserialization of RRCConnectionReestablishmentRequest IE
|
||||
*/
|
||||
class RrcConnectionReestablishmentRequestHeader : public RrcAsn1Header,
|
||||
LteRrcSap
|
||||
{
|
||||
public:
|
||||
RrcConnectionReestablishmentRequestHeader ();
|
||||
void PreSerialize () const;
|
||||
uint32_t Deserialize (Buffer::Iterator bIterator);
|
||||
void Print (std::ostream &os) const;
|
||||
void SetMessage (RrcConnectionReestablishmentRequest msg);
|
||||
|
||||
ReestabUeIdentity GetUeIdentity () const;
|
||||
ReestablishmentCause GetReestablishmentCause () const;
|
||||
|
||||
private:
|
||||
ReestabUeIdentity m_ueIdentity;
|
||||
ReestablishmentCause m_reestablishmentCause;
|
||||
};
|
||||
|
||||
/**
|
||||
* This class manages the serialization/deserialization of RrcConnectionReestablishment IE
|
||||
*/
|
||||
class RrcConnectionReestablishmentHeader : public RrcAsn1Header,
|
||||
LteRrcSap
|
||||
{
|
||||
public:
|
||||
RrcConnectionReestablishmentHeader ();
|
||||
void PreSerialize () const;
|
||||
uint32_t Deserialize (Buffer::Iterator bIterator);
|
||||
void Print (std::ostream &os) const;
|
||||
void SetMessage (RrcConnectionReestablishment msg);
|
||||
|
||||
uint8_t GetRrcTransactionIdentifier () const;
|
||||
RadioResourceConfigDedicated GetRadioResourceConfigDedicated () const;
|
||||
|
||||
private:
|
||||
uint8_t m_rrcTransactionIdentifier;
|
||||
RadioResourceConfigDedicated m_radioResourceConfigDedicated;
|
||||
};
|
||||
|
||||
/**
|
||||
* This class manages the serialization/deserialization of RrcConnectionReestablishmentComplete IE
|
||||
*/
|
||||
class RrcConnectionReestablishmentCompleteHeader : public RrcAsn1Header,
|
||||
LteRrcSap
|
||||
{
|
||||
public:
|
||||
RrcConnectionReestablishmentCompleteHeader ();
|
||||
void PreSerialize () const;
|
||||
uint32_t Deserialize (Buffer::Iterator bIterator);
|
||||
void Print (std::ostream &os) const;
|
||||
void SetMessage (RrcConnectionReestablishmentComplete msg);
|
||||
|
||||
uint8_t GetRrcTransactionIdentifier () const;
|
||||
|
||||
private:
|
||||
uint8_t m_rrcTransactionIdentifier;
|
||||
};
|
||||
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
#endif // EPC_ASN1_HEADER_H
|
||||
|
||||
@@ -598,6 +598,159 @@ HandoverPreparationInfoTestCase::DoRun (void)
|
||||
NS_TEST_ASSERT_MSG_EQ (source.GetAsConfig ().sourceDlCarrierFreq, destination.GetAsConfig ().sourceDlCarrierFreq, "sourceDlCarrierFreq");
|
||||
}
|
||||
|
||||
// --------------------------- CLASS RrcConnectionReestablishmentRequestTestCase -----------------------------
|
||||
class RrcConnectionReestablishmentRequestTestCase : public RrcHeaderTestCase
|
||||
{
|
||||
public:
|
||||
RrcConnectionReestablishmentRequestTestCase ();
|
||||
virtual void DoRun (void);
|
||||
};
|
||||
|
||||
RrcConnectionReestablishmentRequestTestCase::RrcConnectionReestablishmentRequestTestCase () : RrcHeaderTestCase ("Testing RrcConnectionReestablishmentRequestTestCase")
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
RrcConnectionReestablishmentRequestTestCase::DoRun (void)
|
||||
{
|
||||
std::cout << "============= RrcConnectionReestablishmentRequestTestCase ===========" << std::endl;
|
||||
// add header
|
||||
Ptr<Packet> packet = Create<Packet> ();
|
||||
packet->Print (std::cout);
|
||||
std::cout << std::endl;
|
||||
|
||||
LteRrcSap::RrcConnectionReestablishmentRequest msg;
|
||||
msg.ueIdentity.cRnti = 12;
|
||||
msg.ueIdentity.physCellId = 21;
|
||||
msg.reestablishmentCause = LteRrcSap::HANDOVER_FAILURE;
|
||||
|
||||
RrcConnectionReestablishmentRequestHeader source;
|
||||
source.SetMessage (msg);
|
||||
|
||||
std::cout << "--------- SOURCE INFO: -------" << std::endl;
|
||||
source.Print (std::cout);
|
||||
packet->AddHeader (source);
|
||||
std::cout << std::endl;
|
||||
|
||||
// print serialized packet contents
|
||||
std::cout << "---- SERIALIZED PACKET CONTENTS: -------" << std::endl;
|
||||
std::cout << "Hex: ";
|
||||
TestUtils::printPacketContentsHex (GetPointer (packet));
|
||||
std::cout << "Bin: ";
|
||||
TestUtils::printPacketContentsBin (GetPointer (packet));
|
||||
|
||||
// remove header
|
||||
RrcConnectionReestablishmentRequestHeader destination;
|
||||
packet->RemoveHeader (destination);
|
||||
std::cout << "--------- DESTINATION INFO: -------" << std::endl;
|
||||
destination.Print (std::cout);
|
||||
|
||||
// Check that the destination and source headers contain the same values
|
||||
NS_TEST_ASSERT_MSG_EQ (source.GetUeIdentity ().cRnti, destination.GetUeIdentity ().cRnti, "cRnti");
|
||||
NS_TEST_ASSERT_MSG_EQ (source.GetUeIdentity ().physCellId, destination.GetUeIdentity ().physCellId, "physCellId");
|
||||
NS_TEST_ASSERT_MSG_EQ (source.GetReestablishmentCause (),destination.GetReestablishmentCause (), "ReestablishmentCause");
|
||||
}
|
||||
|
||||
// --------------------------- CLASS RrcConnectionReestablishmentTestCase -----------------------------
|
||||
class RrcConnectionReestablishmentTestCase : public RrcHeaderTestCase
|
||||
{
|
||||
public:
|
||||
RrcConnectionReestablishmentTestCase ();
|
||||
virtual void DoRun (void);
|
||||
};
|
||||
|
||||
RrcConnectionReestablishmentTestCase::RrcConnectionReestablishmentTestCase () : RrcHeaderTestCase ("Testing RrcConnectionReestablishmentTestCase")
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
RrcConnectionReestablishmentTestCase::DoRun (void)
|
||||
{
|
||||
std::cout << "============= RrcConnectionReestablishmentTestCase ===========" << std::endl;
|
||||
// add header
|
||||
Ptr<Packet> packet = Create<Packet> ();
|
||||
packet->Print (std::cout);
|
||||
std::cout << std::endl;
|
||||
|
||||
LteRrcSap::RrcConnectionReestablishment msg;
|
||||
msg.rrcTransactionIdentifier = 2;
|
||||
msg.radioResourceConfigDedicated = CreateRadioResourceConfigDedicated ();
|
||||
|
||||
RrcConnectionReestablishmentHeader source;
|
||||
source.SetMessage (msg);
|
||||
|
||||
std::cout << "--------- SOURCE INFO: -------" << std::endl;
|
||||
source.Print (std::cout);
|
||||
packet->AddHeader (source);
|
||||
std::cout << std::endl;
|
||||
|
||||
// print serialized packet contents
|
||||
std::cout << "---- SERIALIZED PACKET CONTENTS: -------" << std::endl;
|
||||
std::cout << "Hex: ";
|
||||
TestUtils::printPacketContentsHex (GetPointer (packet));
|
||||
std::cout << "Bin: ";
|
||||
TestUtils::printPacketContentsBin (GetPointer (packet));
|
||||
|
||||
// remove header
|
||||
RrcConnectionReestablishmentHeader destination;
|
||||
packet->RemoveHeader (destination);
|
||||
std::cout << "--------- DESTINATION INFO: -------" << std::endl;
|
||||
destination.Print (std::cout);
|
||||
|
||||
// Check that the destination and source headers contain the same values
|
||||
NS_TEST_ASSERT_MSG_EQ (source.GetRrcTransactionIdentifier (), destination.GetRrcTransactionIdentifier (), "rrcTransactionIdentifier");
|
||||
AssertEqualRadioResourceConfigDedicated (source.GetRadioResourceConfigDedicated (),destination.GetRadioResourceConfigDedicated ());
|
||||
}
|
||||
|
||||
// --------------------------- CLASS RrcConnectionReestablishmentCompleteTestCase -----------------------------
|
||||
class RrcConnectionReestablishmentCompleteTestCase : public RrcHeaderTestCase
|
||||
{
|
||||
public:
|
||||
RrcConnectionReestablishmentCompleteTestCase ();
|
||||
virtual void DoRun (void);
|
||||
};
|
||||
|
||||
RrcConnectionReestablishmentCompleteTestCase::RrcConnectionReestablishmentCompleteTestCase () : RrcHeaderTestCase ("Testing RrcConnectionReestablishmentCompleteTestCase")
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
RrcConnectionReestablishmentCompleteTestCase::DoRun (void)
|
||||
{
|
||||
std::cout << "============= RrcConnectionReestablishmentCompleteTestCase ===========" << std::endl;
|
||||
// add header
|
||||
Ptr<Packet> packet = Create<Packet> ();
|
||||
packet->Print (std::cout);
|
||||
std::cout << std::endl;
|
||||
|
||||
LteRrcSap::RrcConnectionReestablishmentComplete msg;
|
||||
msg.rrcTransactionIdentifier = 3;
|
||||
|
||||
RrcConnectionReestablishmentCompleteHeader source;
|
||||
source.SetMessage (msg);
|
||||
|
||||
std::cout << "--------- SOURCE INFO: -------" << std::endl;
|
||||
source.Print (std::cout);
|
||||
packet->AddHeader (source);
|
||||
std::cout << std::endl;
|
||||
|
||||
// print serialized packet contents
|
||||
std::cout << "---- SERIALIZED PACKET CONTENTS: -------" << std::endl;
|
||||
std::cout << "Hex: ";
|
||||
TestUtils::printPacketContentsHex (GetPointer (packet));
|
||||
std::cout << "Bin: ";
|
||||
TestUtils::printPacketContentsBin (GetPointer (packet));
|
||||
|
||||
// remove header
|
||||
RrcConnectionReestablishmentCompleteHeader destination;
|
||||
packet->RemoveHeader (destination);
|
||||
std::cout << "--------- DESTINATION INFO: -------" << std::endl;
|
||||
destination.Print (std::cout);
|
||||
|
||||
// Check that the destination and source headers contain the same values
|
||||
NS_TEST_ASSERT_MSG_EQ (source.GetRrcTransactionIdentifier (), destination.GetRrcTransactionIdentifier (), "rrcTransactionIdentifier");
|
||||
}
|
||||
|
||||
// --------------------------- CLASS Asn1EncodingSuite -----------------------------
|
||||
class Asn1EncodingSuite : public TestSuite
|
||||
{
|
||||
@@ -616,6 +769,9 @@ Asn1EncodingSuite::Asn1EncodingSuite ()
|
||||
AddTestCase (new RrcConnectionReconfigurationCompleteTestCase);
|
||||
AddTestCase (new RrcConnectionReconfigurationTestCase);
|
||||
AddTestCase (new HandoverPreparationInfoTestCase);
|
||||
AddTestCase (new RrcConnectionReestablishmentRequestTestCase);
|
||||
AddTestCase (new RrcConnectionReestablishmentTestCase);
|
||||
AddTestCase (new RrcConnectionReestablishmentCompleteTestCase);
|
||||
}
|
||||
|
||||
Asn1EncodingSuite asn1EncodingSuite;
|
||||
|
||||
Reference in New Issue
Block a user