#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 net); void SetQueue(Ptr> queue); virtual bool IsReadyToTransmit(); virtual void TransmitStart(Ptr p, Time txTime); virtual void TransmitComplete(Ptr p); virtual void UpdateTransmissionGate(bool IsOpen); Time GetHardwareLatency(); protected: Ptr m_net; Ptr> m_queue; bool m_transmissionGateIsOpen; bool m_MultidropMode; Callback ReadyToTransmitCallback; private: Time m_minLatencyOverhead; Time m_maxLatencyOverhead; }; } #endif /* TSN_TRANSMISSION_SELECTION_ALGO_H */