Files
eden-sim/contrib/tsn/model/tsn-transmission-selection-algo.h

72 lines
1.6 KiB
C
Raw Permalink Normal View History

2025-12-01 15:56:02 +01:00
#ifndef TSN_TRANSMISSION_SELECTION_ALGO_H
#define TSN_TRANSMISSION_SELECTION_ALGO_H
#include "ns3/object.h"
#include "ns3/packet.h"
#include "ns3/nstime.h"
#include "ns3/tsn-net-device.h"
namespace ns3
{
class TsnNetDevice;
class TsnTransmissionSelectionAlgo: public Object
{
public:
/**
* \brief Get the TypeId
*
* \return The TypeId for this class
*/
static TypeId GetTypeId();
/**
* \brief Create a TsnTransmissionSelectionAlgo
*/
TsnTransmissionSelectionAlgo();
/**
* Destroy a TsnTransmissionSelectionAlgo
*
* This is the destructor for the TsnTransmissionSelectionAlgo.
*/
~TsnTransmissionSelectionAlgo();
// Delete copy constructor and assignment operator to avoid misuse
TsnTransmissionSelectionAlgo& operator=(const TsnTransmissionSelectionAlgo&) = delete;
TsnTransmissionSelectionAlgo(const TsnTransmissionSelectionAlgo&) = delete;
void SetTsnNetDevice(Ptr<TsnNetDevice> net);
void SetQueue(Ptr<Queue<Packet>> queue);
virtual bool IsReadyToTransmit();
virtual void TransmitStart(Ptr<Packet> p, Time txTime);
virtual void TransmitComplete(Ptr<Packet> p);
virtual void UpdateTransmissionGate(bool IsOpen);
2025-12-02 11:43:04 +01:00
virtual void Update();
2025-12-01 15:56:02 +01:00
Time GetHardwareLatency();
protected:
Ptr<TsnNetDevice> m_net;
Ptr<Queue<Packet>> m_queue;
bool m_transmissionGateIsOpen;
bool m_MultidropMode;
Callback<void> ReadyToTransmitCallback;
private:
Time m_minLatencyOverhead;
Time m_maxLatencyOverhead;
};
}
#endif /* TSN_TRANSMISSION_SELECTION_ALGO_H */