72 lines
1.6 KiB
C
72 lines
1.6 KiB
C
|
|
#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);
|
||
|
|
|
||
|
|
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 */
|