📄 wireless_comm_signal.hpp
字号:
#ifndef WIRELESS_COMM_SIGNAL_H #define WIRELESS_COMM_SIGNAL_H #include <boost/shared_ptr.hpp> #include "signal.hpp" #include "packet.hpp" class SimTime; class WirelessCommSignal : public Signal { friend ostream& operator<< (ostream& s, const WirelessCommSignal& rhs); public: typedef boost::shared_ptr<WirelessCommSignal> WirelessCommSignalPtr; static inline WirelessCommSignalPtr create( const Location& location, double dbStrength, double wavelength, double transmitterGain, PacketPtr packet); static inline WirelessCommSignalPtr create( const WirelessCommSignal& rhs); inline PacketPtr getPacketPtr() const; inline double getWavelength() const; inline double getTransmitterGain() const; SimTime getDuration() const; inline void setChannelId(t_uint channelId); inline t_uint getChannelId() const; protected: WirelessCommSignal(const Location& location, double dbStrength, double wavelength, double transmitterGain, PacketPtr packet); WirelessCommSignal(const WirelessCommSignal& rhs); virtual SignalPtr clone() const; private: static const t_uint m_DEFAULT_CHANNEL_ID = 0; PacketPtr m_packetPtr; double m_wavelength; double m_transmitterGain; t_uint m_channelId; WirelessCommSignal& operator= (const WirelessCommSignal& rhs); }; typedef boost::shared_ptr<WirelessCommSignal> WirelessCommSignalPtr; typedef boost::shared_ptr<WirelessCommSignal const> ConstWirelessCommSignalPtr; // Inline Functions inline WirelessCommSignalPtr WirelessCommSignal::create( const Location& location, double dbStrength, double wavelength, double transmitterGain, PacketPtr packet) { WirelessCommSignalPtr p(new WirelessCommSignal(location, dbStrength, wavelength, transmitterGain, packet)); return p; } inline WirelessCommSignalPtr WirelessCommSignal::create( const WirelessCommSignal& rhs) { WirelessCommSignalPtr p = boost::dynamic_pointer_cast<WirelessCommSignal>(rhs.clone()); // If the shared_ptr is empty, then the cast failed. assert(p.get() != 0); return p; } inline PacketPtr WirelessCommSignal::getPacketPtr() const { return m_packetPtr; } inline double WirelessCommSignal::getWavelength() const { return m_wavelength; } inline double WirelessCommSignal::getTransmitterGain() const { return m_transmitterGain; } inline void WirelessCommSignal::setChannelId(t_uint channelId) { m_channelId = channelId; } inline t_uint WirelessCommSignal::getChannelId() const { return m_channelId; } // Overloaded Operators inline ostream& operator<< (ostream& s, const WirelessCommSignal& rhs) { return s << "Wireless signal state (" << static_cast<Signal>(rhs) << "), packet=(" << *(rhs.m_packetPtr) << ")"; } // The assignment operator is now disabled via a private modifier. /* inline WirelessCommSignal& WirelessCommSignal::operator= (const WirelessCommSignal& rhs) { if(this == &rhs) return *this; Signal::operator=(rhs); m_packetPtr = Packet::create(*rhs.m_packetPtr); return *this; } */ #endif // WIRELESS_COMM_SIGNAL_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -