--- a/src/lte/model/lte-asn1-header.h Fri Oct 03 22:41:44 2014 +0200
+++ b/src/lte/model/lte-asn1-header.h Mon Oct 06 22:36:50 2014 -0700
@@ -26,8 +26,6 @@
#include <bitset>
#include <string>
-#include "ns3/lte-rrc-sap.h"
-
namespace ns3 {
/**
@@ -41,7 +39,10 @@
Asn1Header ();
virtual ~Asn1Header ();
- // Inherited from ns3::Header base class
+ /**
+ * \brief Get the type ID.
+ * \return the object TypeId
+ */
static TypeId GetTypeId (void);
virtual TypeId GetInstanceTypeId (void) const;
uint32_t GetSerializedSize (void) const;
@@ -58,91 +59,416 @@
* this function is needed to store the result, so its length can be retrieved
* with Header::GetSerializedSize() function.
* This method is pure virtual in this class (needs to be implemented in child classes)
- * as the meningful information elements are in the subclasses.
+ * as the meaningful information elements are in the subclasses.
*/
virtual void PreSerialize (void) const = 0;
protected:
- mutable uint8_t m_serializationPendingBits;
- mutable uint8_t m_numSerializationPendingBits;
- mutable bool m_isDataSerialized;
- mutable Buffer m_serializationResult;
+ mutable uint8_t m_serializationPendingBits; //!< pending bits
+ mutable uint8_t m_numSerializationPendingBits; //!< number of pending bits
+ mutable bool m_isDataSerialized; //!< true if data is serialized
+ mutable Buffer m_serializationResult; //!< serialization result
- // Function to write in m_serializationResult, after resizing its size
+ /**
+ * Function to write in m_serializationResult, after resizing its size
+ * \param octet bits to write
+ */
void WriteOctet (uint8_t octet) const;
// Serialization functions
+
+ /**
+ * Serialize a bool
+ * \param value value to serialize
+ */
void SerializeBoolean (bool value) const;
+ /**
+ * Serialize an Integer
+ * \param n value to serialize
+ * \param nmin min value to serialize
+ * \param nmax max value to serialize
+ */
void SerializeInteger (int n, int nmin, int nmax) const;
- void SerializeOctetstring (std::string s) const;
+ // void SerializeOctetstring (std::string s) const;
+ /**
+ * Serialize a Sequence
+ * \param numElems element number to serialize
+ * \param nMax max value to serialize
+ * \param nMin min value to serialize
+ */
void SerializeSequenceOf (int numElems, int nMax, int nMin) const;
+ /**
+ * Serialize a Choice (set of options)
+ * \param numOptions number of options
+ * \param selectedOption selected option
+ * \param isExtensionMarkerPresent true if extension mark is present
+ */
void SerializeChoice (int numOptions, int selectedOption, bool isExtensionMarkerPresent) const;
+ /**
+ * Serialize an Enum
+ * \param numElems number of elements in the enum
+ * \param selectedElem selected element
+ */
void SerializeEnum (int numElems, int selectedElem) const;
+ /**
+ * Serialize nothing (null op)
+ */
void SerializeNull () const;
+ /**
+ * Finalizes an in progress serialization.
+ */
void FinalizeSerialization () const;
+ /**
+ * Serialize a bitset
+ * \param data data to serialize
+ */
template <int N>
void SerializeBitset (std::bitset<N> data) const;
+ /**
+ * Serialize a sequence
+ * \param optionalOrDefaultMask Mask to serialize
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ */
template <int N>
void SerializeSequence (std::bitset<N> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
+ /**
+ * Serialize a sequence
+ * \param optionalOrDefaultMask Mask to serialize
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ */
void SerializeSequence (std::bitset<0> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
+ /**
+ * Serialize a sequence
+ * \param optionalOrDefaultMask Mask to serialize
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ */
void SerializeSequence (std::bitset<1> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
+ /**
+ * Serialize a sequence
+ * \param optionalOrDefaultMask Mask to serialize
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ */
void SerializeSequence (std::bitset<2> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
+ /**
+ * Serialize a sequence
+ * \param optionalOrDefaultMask Mask to serialize
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ */
void SerializeSequence (std::bitset<3> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
+ /**
+ * Serialize a sequence
+ * \param optionalOrDefaultMask Mask to serialize
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ */
void SerializeSequence (std::bitset<4> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
+ /**
+ * Serialize a sequence
+ * \param optionalOrDefaultMask Mask to serialize
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ */
void SerializeSequence (std::bitset<5> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
+ /**
+ * Serialize a sequence
+ * \param optionalOrDefaultMask Mask to serialize
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ */
void SerializeSequence (std::bitset<6> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
+ /**
+ * Serialize a sequence
+ * \param optionalOrDefaultMask Mask to serialize
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ */
void SerializeSequence (std::bitset<9> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
+ /**
+ * Serialize a sequence
+ * \param optionalOrDefaultMask Mask to serialize
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ */
void SerializeSequence (std::bitset<10> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
+ /**
+ * Serialize a sequence
+ * \param optionalOrDefaultMask Mask to serialize
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ */
void SerializeSequence (std::bitset<11> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
+ /**
+ * Serialize a bitstring
+ * \param bitstring bitstring to serialize
+ */
template <int N>
void SerializeBitstring (std::bitset<N> bitstring) const;
+ /**
+ * Serialize a bitstring
+ * \param bitstring bitstring to serialize
+ */
void SerializeBitstring (std::bitset<1> bitstring) const;
+ /**
+ * Serialize a bitstring
+ * \param bitstring bitstring to serialize
+ */
void SerializeBitstring (std::bitset<2> bitstring) const;
+ /**
+ * Serialize a bitstring
+ * \param bitstring bitstring to serialize
+ */
void SerializeBitstring (std::bitset<8> bitstring) const;
+ /**
+ * Serialize a bitstring
+ * \param bitstring bitstring to serialize
+ */
void SerializeBitstring (std::bitset<10> bitstring) const;
+ /**
+ * Serialize a bitstring
+ * \param bitstring bitstring to serialize
+ */
void SerializeBitstring (std::bitset<16> bitstring) const;
+ /**
+ * Serialize a bitstring
+ * \param bitstring bitstring to serialize
+ */
void SerializeBitstring (std::bitset<27> bitstring) const;
+ /**
+ * Serialize a bitstring
+ * \param bitstring bitstring to serialize
+ */
void SerializeBitstring (std::bitset<28> bitstring) const;
+ /**
+ * Serialize a bitstring
+ * \param bitstring bitstring to serialize
+ */
void SerializeBitstring (std::bitset<32> bitstring) const;
// Deserialization functions
+
+ /**
+ * Deserialize a bitset
+ * \param data buffer to store the result
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
template <int N>
Buffer::Iterator DeserializeBitset (std::bitset<N> *data, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a bitset
+ * \param data buffer to store the result
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeBitset (std::bitset<8> *data, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a boolean
+ * \param value buffer to store the result
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeBoolean (bool *value, Buffer::Iterator bIterator);
+ /**
+ * Deserialize an integer
+ * \param n buffer to store the result
+ * \param nmin min value to serialize
+ * \param nmax max value to serialize
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeInteger (int *n, int nmin, int nmax, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a Choice (set of options)
+ * \param numOptions number of options
+ * \param isExtensionMarkerPresent true if extension mark is present
+ * \param selectedOption buffer to store the result
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeChoice (int numOptions, bool isExtensionMarkerPresent, int *selectedOption, Buffer::Iterator bIterator);
+ /**
+ * Deserialize an Enum
+ * \param numElems number of elements in the enum
+ * \param selectedElem buffer to store the result
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeEnum (int numElems, int *selectedElem, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a sequence
+ * \param optionalOrDefaultMask buffer to store the result
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
template <int N>
+ /**
+ * Deserialize a sequence
+ * \param optionalOrDefaultMask buffer to store the result
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeSequence (std::bitset<N> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a sequence
+ * \param optionalOrDefaultMask buffer to store the result
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeSequence (std::bitset<0> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a sequence
+ * \param optionalOrDefaultMask buffer to store the result
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeSequence (std::bitset<1> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a sequence
+ * \param optionalOrDefaultMask buffer to store the result
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeSequence (std::bitset<2> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a sequence
+ * \param optionalOrDefaultMask buffer to store the result
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeSequence (std::bitset<3> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a sequence
+ * \param optionalOrDefaultMask buffer to store the result
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeSequence (std::bitset<4> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a sequence
+ * \param optionalOrDefaultMask buffer to store the result
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeSequence (std::bitset<5> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a sequence
+ * \param optionalOrDefaultMask buffer to store the result
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeSequence (std::bitset<6> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a sequence
+ * \param optionalOrDefaultMask buffer to store the result
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeSequence (std::bitset<9> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a sequence
+ * \param optionalOrDefaultMask buffer to store the result
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeSequence (std::bitset<10> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a sequence
+ * \param optionalOrDefaultMask buffer to store the result
+ * \param isExtensionMarkerPresent true if Extension Marker is present
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeSequence (std::bitset<11> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
- template <int N>
+ /**
+ * Deserialize a bitstring
+ * \param bitstring buffer to store the result
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
+ template <int N>
Buffer::Iterator DeserializeBitstring (std::bitset<N> *bitstring, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a bitstring
+ * \param bitstring buffer to store the result
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeBitstring (std::bitset<1> *bitstring, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a bitstring
+ * \param bitstring buffer to store the result
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeBitstring (std::bitset<2> *bitstring, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a bitstring
+ * \param bitstring buffer to store the result
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeBitstring (std::bitset<8> *bitstring, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a bitstring
+ * \param bitstring buffer to store the result
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeBitstring (std::bitset<10> *bitstring, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a bitstring
+ * \param bitstring buffer to store the result
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeBitstring (std::bitset<16> *bitstring, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a bitstring
+ * \param bitstring buffer to store the result
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeBitstring (std::bitset<27> *bitstring, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a bitstring
+ * \param bitstring buffer to store the result
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeBitstring (std::bitset<28> *bitstring, Buffer::Iterator bIterator);
+ /**
+ * Deserialize a bitstring
+ * \param bitstring buffer to store the result
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeBitstring (std::bitset<32> *bitstring, Buffer::Iterator bIterator);
+ /**
+ * Deserialize nothing (null op)
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeNull (Buffer::Iterator bIterator);
+ /**
+ * Deserialize a Sequence
+ * \param numElems buffer to store the result
+ * \param nMax max value to serialize
+ * \param nMin min value to serialize
+ * \param bIterator buffer iterator
+ * \returns the modified buffer iterator
+ */
Buffer::Iterator DeserializeSequenceOf (int *numElems, int nMax, int nMin, Buffer::Iterator bIterator);
};