Update doxygen documentation

This commit is contained in:
Tim Schubert 2020-09-06 21:37:47 +02:00
parent 61b6fd7ea1
commit f17ff6abc6
38 changed files with 1023 additions and 124 deletions

View file

@ -25,12 +25,34 @@
#include "ns3/applications-module.h"
#include "ns3/node-container.h"
/**
* \file
* \ingroup leo
* Declares ArpCacheHelper
*/
namespace ns3 {
/**
* \ingroup leo
* \brief Prepares the ARP cache, so the addresses do not have to be queried
*/
class ArpCacheHelper
{
public:
/**
* \brief Install the addresses of the interfaces into the ARP caches of the devices
* \param devices devices
* \param interfaces interfaces
*/
void Install (NetDeviceContainer &devices, Ipv4InterfaceContainer &interfaces) const;
/**
* \brief Install the addresses of the interfaces into the ARP caches of the devices
* \param deviceSrc devices
* \param deviceDst devices
* \param interfaces interfaces
*/
void Install (NetDeviceContainer &devicesSrc, NetDeviceContainer &devicesDst, Ipv4InterfaceContainer &interfaces) const;
};

View file

@ -29,29 +29,35 @@
#define LEO_GND_RAD_EARTH 6.371e6
/**
* \brief Builds a node container of nodes with constant positions
*
* Adds waypoints from file for each node.
* \file
* \ingroup leo
*/
namespace ns3
{
/**
* \ingroup leo
* \brief Builds a node container of nodes with constant positions
* Adds waypoints from file for each node.
*/
class LeoGndNodeHelper
{
public:
/// constructor
LeoGndNodeHelper ();
/// deconstructor
virtual ~LeoGndNodeHelper ();
/**
*
* \brief Create a node container with nodes at the positions in file
* \param file path to latitude longitude file
* \returns a node container containing nodes using the specified attributes
*/
NodeContainer Install (const std::string &file);
/**
*
* \brief Create a node container with uniformly distributed nodes
* \param latNodes a number of nodes to in latitude direction
* \param lonNodes a number of nodes to in longitude direction
* \returns a node container containing nodes using the specified attributes
@ -59,7 +65,7 @@ public:
NodeContainer Install (uint32_t latNodes, uint32_t lonNodes);
/**
*
* \brief Install two nodes at two locations
* \param location1 first location
* \param location2 second location
* \returns a node container containing nodes using the specified attributes
@ -68,16 +74,17 @@ public:
const LeoLatLong &location2);
/**
* Set an attribute for each node
*
* \brief Set an attribute for each node
* \param name name of the attribute
* \param value value of the attribute
*/
void SetAttribute (std::string name, const AttributeValue &value);
private:
/// Fatory for nodes
ObjectFactory m_gndNodeFactory;
/// Convert the latitude and longitude to a position on a sphere
static Vector3D GetEarthPosition (const LeoLatLong &loc);
};

View file

@ -27,17 +27,20 @@
#include <ns3/trace-helper.h>
/**
* \file
* \ingroup leo
* Declares IslNetDevice
*/
namespace ns3 {
class NetDevice;
class Node;
/**
* \ingroup leo
* \brief Build a set of IslNetDevice objects
*
* Normally we eschew multiple inheritance, however, the classes
* PcapUserHelperForDevice and AsciiTraceUserHelperForDevice are
* "mixins".
*/
class IslHelper : public PcapHelperForDevice,
public AsciiTraceHelperForDevice
@ -158,7 +161,6 @@ public:
bool explicitFilename);
private:
ObjectFactory m_queueFactory; //!< Queue Factory
ObjectFactory m_channelFactory; //!< Channel Factory
ObjectFactory m_deviceFactory; //!< Device Factory

View file

@ -27,38 +27,136 @@
#include <ns3/trace-helper.h>
/**
* \file
* \ingroup leo
* Declares LeoChannelHelper
*/
namespace ns3 {
/**
* \ingroup leo
* \brief Build a channel for transmissions between ns3::LeoMockNetDevice s
*/
class LeoChannelHelper : public PcapHelperForDevice,
public AsciiTraceHelperForDevice
{
public:
/// constructor
LeoChannelHelper ();
/**
* constructor
*
* \param constellation name of the link parameter preset
*/
LeoChannelHelper (std::string constellation);
/// destructor
virtual ~LeoChannelHelper ()
{};
/**
* \brief Install the satellites and stations into the channel
* \param satellites satellites
* \param stations ground stations
* \return container of network devices attached to the channel
*/
NetDeviceContainer Install (NodeContainer &satellites, NodeContainer &stations);
/**
* \brief Install the satellites and stations into the channel
* \param satellites satellites
* \param stations ground stations
* \return container of network devices attached to the channel
*/
NetDeviceContainer Install (std::vector<Ptr<Node> > &satellites, std::vector<Ptr<Node> > &stations);
/**
* \brief Install the satellites and stations into the channel
* \param satellites satellites
* \param stations ground stations
* \return container of network devices attached to the channel
*/
NetDeviceContainer Install (std::vector<std::string> &satellites, std::vector<std::string> &stations);
/**
* \brief Set the type and attributes of the queues of the ground stations
* \param type type of the queue
* \param n1 name of an attribute of the queue
* \param v1 value of an attribute of the queue
* \param n2 name of an attribute of the queue
* \param v2 value of an attribute of the queue
* \param n3 name of an attribute of the queue
* \param v3 value of an attribute of the queue
* \param n4 name of an attribute of the queue
* \param v4 value of an attribute of the queue
*/
void SetGndQueue (std::string type,
std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (),
std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (),
std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (),
std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue ());
/**
* \brief Set the type and attributes of the queues of the satellite devices
* \param type type of the queue
* \param n1 name of an attribute of the queue
* \param v1 value of an attribute of the queue
* \param n2 name of an attribute of the queue
* \param v2 value of an attribute of the queue
* \param n3 name of an attribute of the queue
* \param v3 value of an attribute of the queue
* \param n4 name of an attribute of the queue
* \param v4 value of an attribute of the queue
*/
void SetSatQueue (std::string type,
std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (),
std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (),
std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (),
std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue ());
/**
* \brief Set the type and attributes of the devices of the ground devices
* \param type type of the device
* \param n1 name of an attribute of the device
* \param v1 value of an attribute of the device
* \param n2 name of an attribute of the device
* \param v2 value of an attribute of the device
* \param n3 name of an attribute of the device
* \param v3 value of an attribute of the device
* \param n4 name of an attribute of the device
* \param v4 value of an attribute of the device
*/
void SetGndDeviceAttribute (std::string name, const AttributeValue &value);
/**
* \brief Set the type and attributes of the devices of the satellite devices
* \param type type of the device
* \param n1 name of an attribute of the device
* \param v1 value of an attribute of the device
* \param n2 name of an attribute of the device
* \param v2 value of an attribute of the device
* \param n3 name of an attribute of the device
* \param v3 value of an attribute of the device
* \param n4 name of an attribute of the device
* \param v4 value of an attribute of the device
*/
void SetSatDeviceAttribute (std::string name, const AttributeValue &value);
/**
* \brief Set the type and attributes of the channel
* \param type type of the channel
* \param n1 name of an attribute of the channel
* \param v1 value of an attribute of the channel
* \param n2 name of an attribute of the channel
* \param v2 value of an attribute of the channel
* \param n3 name of an attribute of the channel
* \param v3 value of an attribute of the channel
* \param n4 name of an attribute of the channel
* \param v4 value of an attribute of the channel
*/
void SetChannelAttribute (std::string name, const AttributeValue &value);
virtual void EnablePcapInternal (std::string prefix, Ptr<NetDevice> nd, bool promiscuous, bool explicitFilename);
@ -67,20 +165,44 @@ public:
Ptr<NetDevice> nd,
bool explicitFilename);
/**
* \brief Set the link parameter preset
* \param constellation name of the link parameter preset
*/
void SetConstellation (std::string constellation);
private:
/// Satellite queues
ObjectFactory m_satQueueFactory;
/// Ground station queues
ObjectFactory m_gndDeviceFactory;
/// Satellite devices
ObjectFactory m_satDeviceFactory;
/// Ground station devices
ObjectFactory m_gndQueueFactory;
/// Channel
ObjectFactory m_channelFactory;
/// Propagation loss models
ObjectFactory m_propagationLossFactory;
//
/// Propagation delay models
ObjectFactory m_propagationDelayFactory;
/**
* \brief Set the factory and attributes of the queue
* \param factory queue factory
* \param n1 name of an attribute of the factory
* \param v1 value of an attribute of the factory
* \param n2 name of an attribute of the factory
* \param v2 value of an attribute of the factory
* \param n3 name of an attribute of the factory
* \param v3 value of an attribute of the factory
* \param n4 name of an attribute of the factory
* \param v4 value of an attribute of the factory
*/
void SetQueue (ObjectFactory &factory,
std::string type,
std::string n1, const AttributeValue &v1,
@ -89,6 +211,17 @@ private:
std::string n4, const AttributeValue &v4);
/**
* \brief Set the attributes of the link and propagation loss model
* \param eirp EIRP
* \param elevationAngle elevation angle of satellite beam
* \param fspl free space loss
* \param atmosphericLoss atmospheric loss
* \param linkMargin link margin
* \param dataRate data rate
* \param rxGain receiver gain
* \param rxLoss receiver loss
*/
void SetConstellationAttributes (double eirp,
double elevationAngle,
double fspl,

View file

@ -23,32 +23,82 @@
#include "ns3/object.h"
#include "ns3/waypoint.h"
/**
* \file
* \ingroup leo
* Declares LeoWaypointInputFileStreamContainer
*/
using namespace std;
namespace ns3
{
/**
* \ingroup leo
* \brief Wrapper around a stream of Waypoint
*/
class LeoWaypointInputFileStreamContainer : public Object
{
public:
/**
* \brief Get the type ID.
* \return the object TypeId
*/
static TypeId GetTypeId (void);
/// constructor
LeoWaypointInputFileStreamContainer ();
/// destructor
virtual ~LeoWaypointInputFileStreamContainer ();
/**
* constructor
*
* \param filePath path to waypoints file
* \param lastTime the time until which to read waypoints
*/
LeoWaypointInputFileStreamContainer (string filePath, Time lastTime);
/**
* \brief Get next waypoint
* \param [out] next waypoint
* \return true iff there are more waypoints
*/
bool GetNextSample (Waypoint &sample);
/**
* \brief Set the path to the waypoint file
* \param path path to the waypoint file
*/
void SetFile (const string path);
/**
* \brief Get the path to the waypoint file
* \return path to the waypoint file
*/
string GetFile () const;
/**
* \brief Set the path to the last time slot
* \param lastTime last time slot
*/
void SetLastTime (const Time lastTime);
/**
* \brief Get the last time slot
* \return last time slot
*/
Time GetLastTime () const;
private:
/// Path to the waypoints file
string m_filePath;
/// Time of the last timestamp
Time m_lastTime;
/// Waypoint file stream
ifstream m_input;
};

View file

@ -28,19 +28,27 @@
#include "ns3/leo-orbit.h"
/**
* \brief Builds a node container of nodes with LEO positions using a list of
* orbit definitions.
*
* Adds orbits with from a file for each node.
* \file
* \ingroup leo
*/
namespace ns3
{
/**
* \ingroup leo
* \brief Builds a node container of nodes with LEO positions using a list of
* orbit definitions.
*
* Adds orbits with from a file for each node.
*/
class LeoOrbitNodeHelper
{
public:
/// constructor
LeoOrbitNodeHelper ();
/// destructor
virtual ~LeoOrbitNodeHelper ();
/**
@ -73,6 +81,7 @@ public:
void SetAttribute (std::string name, const AttributeValue &value);
private:
/// Factory for nodes
ObjectFactory m_nodeFactory;
};

View file

@ -25,12 +25,34 @@
#ifndef NDS_CACHE_HELPER_
#define NDS_CACHE_HELPER_
/**
* \file
* \ingroup leo
* Declares NdCacheHelper
*/
namespace ns3 {
/**
* \ingroup leo
* \brief Neighbor Cache helper fills the neighbor cache
*/
class NdCacheHelper
{
public:
/**
* \brief Fill the cache of devices with addresses
* \param devices devices
* \param interfaces interfaces that have addresses
*/
void Install (NetDeviceContainer &devices, Ipv6InterfaceContainer &interfaces) const;
/**
* \brief Fill the cache of devices with addresses
* \param devicesSrc devices
* \param devicesDst devices
* \param interfaces interfaces that have addresses
*/
void Install (NetDeviceContainer &devicesSrc, NetDeviceContainer &devicesDst, Ipv6InterfaceContainer &interfaces) const;
};

View file

@ -27,38 +27,46 @@
#include "ns3/leo-input-fstream-container.h"
/**
* \brief Builds a node container with a waypoint mobility model
*
* Adds waypoints from file for each node.
* The node satId must must correspond to the NORAD id from Celestrack.
* \file
* \ingroup leo
*/
namespace ns3
{
/**
* \ingroup leo
* \brief Builds a node container with a waypoint mobility model
*
* Adds waypoints from file for each node.
* The node satId must must correspond to the NORAD id from Celestrack.
*/
class LeoSatNodeHelper
{
public:
/// constructor
LeoSatNodeHelper ();
/// destructor
virtual ~LeoSatNodeHelper ();
/**
*
* \brief Install the nodes
* \param nodeIds paths to satellite to waypoint files
* \returns a node container containing nodes using the specified attributes
*/
NodeContainer Install (std::vector<std::string> &wpFiles);
/**
* Set an attribute for each node
*
* \brief Set an attribute for each node
* \param name name of the attribute
* \param value value of the attribute
*/
void SetAttribute (std::string name, const AttributeValue &value);
private:
/// Satellite nodes
ObjectFactory m_satNodeFactory;
/// Stream of waypoints
LeoWaypointInputFileStreamContainer m_fileStreamContainer;
};