22 #include "ns3/core-module.h"
24 #include "ns3/dsr-module.h"
25 #include "ns3/internet-module.h"
27 #include "ns3/lr-wpan-mac.h"
28 #include "ns3/lte-module.h"
31 #include "ns3/mesh-module.h"
32 #include "ns3/mobility-module.h"
33 #include "ns3/network-module.h"
34 #include "ns3/olsr-module.h"
35 #include "ns3/sixlowpan-module.h"
36 #include "ns3/spectrum-module.h"
37 #include "ns3/stats-module.h"
38 #include "ns3/uan-module.h"
39 #include "ns3/wifi-module.h"
58 template <
typename T>
inline
59 std::string
TypeName (
int N) {
return "unknown"; }
62 template <> inline std::string \
63 TypeName < T > (int N) \
65 std::stringstream ss; \
66 ss << # T << "(" << N << ")"; \
135 std::set<std::string>
138 std::set<std::string> dupes;
140 #define dupename(T) dupes.insert (# T)
181 std::cout <<
"with " << N <<
" args." << std::endl;
189 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
193 static void Sink (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) {
SinkIt (5); }
196 template <
typename T1,
typename T2,
typename T3,
typename T4>
200 static void Sink (T1 a1, T2 a2, T3 a3, T4 a4) {
SinkIt (4); }
203 template <
typename T1,
typename T2,
typename T3>
210 template <
typename T1,
typename T2>
217 template <
typename T1>
226 template <
typename T>
244 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
256 if (
g_NArgs == 0) std::cout << std::endl;
263 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
269 template <
typename U>
273 U sink = TracedCbSink<T1, T2, T3, T4, T5>::Sink;
276 std::cout << TypeName<U> (N) <<
" invoked ";
278 m_cb (this->
m1, this->
m2, this->m3, this->m4, this->m5);
283 template <
typename T1,
typename T2,
typename T3,
typename T4>
290 template <
typename U>
294 U sink = TracedCbSink<T1, T2, T3, T4, empty>::Sink;
297 std::cout << TypeName<U> (N) <<
" invoked ";
299 m_cb (this->
m1, this->
m2, this->m3, this->m4);
305 template <
typename T1,
typename T2,
typename T3>
312 template <
typename U>
316 U sink = TracedCbSink<T1, T2, T3, empty, empty>::Sink;
319 std::cout << TypeName<U> (N) <<
" invoked ";
321 m_cb (this->
m1, this->
m2, this->m3);
326 template <
typename T1,
typename T2>
333 template <
typename U>
337 U sink = TracedCbSink<T1, T2, empty, empty, empty>::Sink;
340 std::cout << TypeName<U> (N) <<
" invoked ";
342 m_cb (this->
m1, this->
m2);
347 template <
typename T1>
349 :
public CheckerBase<T1, empty, empty, empty, empty>
354 template <
typename U>
358 U sink = TracedCbSink<T1, empty, empty, empty, empty>::Sink;
361 std::cout << TypeName<U> (N) <<
" invoked ";
368 virtual void DoRun (
void);
373 :
TestCase (
"Check basic TracedCallback operation")
381 #define DUPE(U, T1) \
382 if (g_dupes.find ( # U ) == g_dupes.end ()) \
383 NS_TEST_ASSERT_MSG_NE (0, 1, \
384 "expected to find " << # U << " in dupes."); \
385 if (TypeName<U> (0) == TypeName<T1> (0)) \
386 std::cout << # U << " matches " << # T1 << std::endl; \
388 NS_TEST_ASSERT_MSG_EQ \
389 (TypeName<U> (0), TypeName<T1> (0), \
390 "the typedef " << # U << \
391 " used to match the typedef " << # T1 << \
392 " but no longer does. Please add a new CHECK call.")
394 #define CHECK(U, T1, T2, T3, T4, T5) \
395 CreateObject< Checker<T1, T2, T3, T4, T5> > () -> Invoke<U> ()
397 CHECK (dsr::DsrOptionSRHeader::TracedCallback,
401 CHECK (EpcUeNas::StateTracedCallback,
405 CHECK (Ipv4L3Protocol::DropTracedCallback,
409 CHECK (Ipv4L3Protocol::SentTracedCallback,
413 CHECK (Ipv4L3Protocol::TxRxTracedCallback,
417 CHECK (Ipv6L3Protocol::DropTracedCallback,
422 CHECK (Ipv6L3Protocol::SentTracedCallback,
426 CHECK (Ipv6L3Protocol::TxRxTracedCallback,
430 CHECK (LrWpanMac::SentTracedCallback,
434 CHECK (LrWpanMac::StateTracedCallback,
438 CHECK (LrWpanPhy::StateTracedCallback,
449 CHECK (LteEnbMac::UlSchedulingTracedCallback,
450 uint32_t, uint32_t, uint16_t, uint8_t, uint16_t);
452 CHECK (LteEnbPhy::ReportUeSinrTracedCallback,
453 uint16_t, uint16_t,
double,
456 CHECK (LteEnbPhy::ReportInterferenceTracedCallback,
460 CHECK (LteEnbRrc::ConnectionHandoverTracedCallback,
461 uint64_t, uint16_t, uint16_t,
464 CHECK (LteEnbRrc::HandoverStartTracedCallback,
465 uint64_t, uint16_t, uint16_t, uint16_t,
468 CHECK (LteEnbRrc::NewUeContextTracedCallback,
472 CHECK (LteEnbRrc::ReceiveReportTracedCallback,
476 CHECK (LtePdcp::PduRxTracedCallback,
477 uint16_t, uint8_t, uint32_t, uint64_t,
480 CHECK (LtePdcp::PduTxTracedCallback,
481 uint16_t, uint8_t, uint32_t,
484 DUPE (LteRlc::NotifyTxTracedCallback, LtePdcp::PduTxTracedCallback);
486 DUPE (LteRlc::ReceiveTracedCallback, LtePdcp::PduRxTracedCallback);
488 CHECK (LteUePhy::RsrpSinrTracedCallback,
489 uint16_t, uint16_t,
double,
double,
492 CHECK (LteUePhy::RsrpRsrqTracedCallback,
493 uint16_t, uint16_t,
double,
double,
bool);
495 CHECK (LteUePhy::StateTracedCallback,
499 DUPE (LteUePowerControl::TxPowerTracedCallback, LteEnbPhy::ReportUeSinrTracedCallback);
501 CHECK (LteUeRrc::CellSelectionTracedCallback,
505 DUPE (LteUeRrc::ImsiCidRntiTracedCallback, LteEnbRrc::ConnectionHandoverTracedCallback);
507 DUPE (LteUeRrc::MibSibHandoverTracedCallback, LteEnbRrc::HandoverStartTracedCallback);
509 CHECK (LteUeRrc::StateTracedCallback,
512 CHECK (Mac48Address::TracedCallback,
516 CHECK (MobilityModel::TracedCallback,
520 CHECK (olsr::RoutingProtocol::PacketTxRxTracedCallback,
524 CHECK (olsr::RoutingProtocol::TableChangeTracedCallback,
528 CHECK (Packet::AddressTracedCallback,
532 CHECK (Packet::Mac48AddressTracedCallback,
536 CHECK (Packet::SinrTracedCallback,
540 CHECK (Packet::SizeTracedCallback,
544 CHECK (Packet::TracedCallback,
548 CHECK (PacketBurst::TracedCallback,
552 CHECK (dot11s::PeerManagementProtocol::LinkOpenCloseTracedCallback,
556 CHECK (PhyReceptionStatParameters::TracedCallback,
560 CHECK (PhyTransmissionStatParameters::TracedCallback,
564 CHECK (SixLowPanNetDevice::DropTracedCallback,
569 CHECK (SixLowPanNetDevice::RxTxTracedCallback,
573 CHECK (SpectrumChannel::LossTracedCallback,
577 CHECK (SpectrumValue::TracedCallback,
581 CHECK (TimeSeriesAdaptor::OutputTracedCallback,
585 CHECK (UanMac::PacketModeTracedCallback,
589 CHECK (UanMacCw::QueueTracedCallback,
593 CHECK (UanMacRc::QueueTracedCallback,
597 CHECK (UanNetDevice::RxTxTracedCallback,
601 CHECK (UanPhy::TracedCallback,
605 CHECK (UeManager::StateTracedCallback,
608 CHECK (WifiMacHeader::TracedCallback,
612 CHECK (WifiPhyStateHelper::RxEndErrorTracedCallback,
616 CHECK (WifiPhyStateHelper::RxOkTracedCallback,
620 CHECK (WifiPhyStateHelper::StateTracedCallback,
624 CHECK (WifiPhyStateHelper::TxTracedCallback,
628 CHECK (WifiRemoteStationManager::PowerChangeTracedCallback,
632 CHECK (WifiRemoteStationManager::RateChangeTracedCallback,
644 :
TestSuite (
"traced-callback-typedef", SYSTEM)
static void Sink(T1 a1, T2 a2, T3 a3, T4 a4)
void(* Mac48AddressTracedCallback)(Ptr< const Packet > packet, Mac48Address mac)
TracedCallback signature for packet and Mac48Address.
Simulation virtual time values and global simulation resolution.
static void Sink(T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
void(* StateTracedCallback)(Time time, LrWpanPhyEnumeration oldState, LrWpanPhyEnumeration newState)
TracedCallback signature for Trx state change events.
void(* MibSibHandoverTracedCallback)(uint64_t imsi, uint16_t cellId, uint16_t rnti, uint16_t otherCid)
TracedCallback signature for MIBRecieved, Sib1Received and HandoverStart events.
TracedCallback< T1, T2, T3 > m_cb
void(* QueueTracedCallback)(Ptr< const Packet > packet, uint32_t proto)
TracedCallback signature for dequeue of a packet.
void(* StateTracedCallback)(Time start, Time duration, WifiPhy::State state)
TracedCallback signature for state changes.
void(* QueueTracedCallback)(Ptr< const Packet > packet, uint16_t proto)
TracedCallback signature for enqueue/dequeue of a packet.
void(* StateTracedCallback)(const State oldState, const State newState)
TracedCallback signature for state change events.
void(* SizeTracedCallback)(uint32_t oldSize, uint32_t newSize)
TracedCallback signature for changes in packet size.
void(* TracedCallback)(Ptr< const Packet > packet)
TracedCallback signature for Ptr
TypeTraits< T5 >::BaseType m5
void(* RateChangeTracedCallback)(uint32_t rate, Mac48Address remoteAddress)
TracedCallback signature for rate change events.
void(* PduTxTracedCallback)(uint16_t rnti, uint8_t lcid, uint32_t size)
TracedCallback for PDU transmission event.
void(* TableChangeTracedCallback)(uint32_t size)
TracedCallback signature for routing table computation.
void(* ReportUeSinrTracedCallback)(uint16_t cellId, uint16_t rnti, double sinrLinear)
TracedCallback signature for the linear average of SRS SINRs.
static void Sink(T1 a1, T2 a2, T3 a3)
DropReason
Enumeration of the dropping reasons in SixLoWPAN.
void(* ReportInterferenceTracedCallback)(uint16_t cellId, Ptr< SpectrumValue > spectrumValue)
TracedCallback signature for the linear average of SRS SINRs.
State
The states of the UE PHY entity.
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
TracedCallback< T1 > m_cb
std::string TypeName(int N)
Stringify the known TracedCallback type names.
void(* StateTracedCallback)(uint64_t imsi, uint16_t cellId, uint16_t rnti, State oldState, State newState)
TracedCallback signature for state transition events.
a polymophic address class
DropReason
Reason why a packet has been dropped.
TracedCallback< T1, T2, T3, T4, T5 > m_cb
void(* ImsiCidRntiTracedCallback)(uint64_t imsi, uint16_t cellId, uint16_t rnti)
TracedCallback signature for imsi, cellId and rnti events.
void(* PacketModeTracedCallback)(Ptr< const Packet > packet, UanTxMode mode)
TracedCallback signature for packet reception/enqueue/dequeue events.
WifiPreamble
The type of preamble to be used by an IEEE 802.11 transmission.
void(* StateTracedCallback)(uint16_t cellId, uint16_t rnti, State oldState, State newState)
TracedCallback signature for state transition events.
make Callback use a separate empty type
void(* AddressTracedCallback)(Ptr< const Packet > packet, const Address &address)
TracedCallback signature for packet and Address.
void AddTestCase(TestCase *testCase, enum TestDuration duration)
Add an individual child TestCase to this test suite.
void(* DropTracedCallback)(const Ipv6Header &header, Ptr< const Packet > packet, DropReason reason, Ptr< Ipv6 > ipv6, uint32_t interface)
TracedCallback signature for packet drop events.
void(* RxOkTracedCallback)(Ptr< const Packet > packet, double snr, WifiMode mode, WifiPreamble preamble)
TracedCallback signature for receive end ok event.
A class used for addressing UAN MAC's.
void(* TxRxTracedCallback)(Ptr< const Packet > packet, Ptr< Ipv6 > ipv6, uint32_t interface)
TracedCallback signature for packet transmission or reception events.
Abstraction of packet modulation information.
void(* PduRxTracedCallback)(const uint16_t rnti, const uint8_t lcid, const uint32_t size, const uint64_t delay)
TracedCallback signature for PDU receive event.
TracedCallback< T1, T2, T3, T4 > m_cb
virtual ~TracedCallbackTypedefTestCase()
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
void(* TxTracedCallback)(Ptr< const Packet > packet, WifiMode mode, WifiPreamble preamble, uint8_t power)
TracedCallback signature for transmit event.
void(* SinrTracedCallback)(Ptr< const Packet > packet, double sinr)
TracedCallback signature for packet and SINR.
void(* LossTracedCallback)(Ptr< SpectrumPhy > txPhy, Ptr< SpectrumPhy > rxPhy, double lossDb)
TracedCallback signature for path loss calculation events.
void(* TracedCallback)(Ptr< SpectrumValue > value)
TracedCallback signature for SpectrumValue.
void SinkIt(unsigned int N)
Log that a callback was invoked.
virtual void DoRun(void)
Implementation to actually run this TestCase.
void(* TracedCallback)(const PhyReceptionStatParameters params)
TracedCallback signature.
TracedCallback< T1, T2 > m_cb
void(* TracedCallback)(Mac48Address value)
TracedCallback signature for Mac48Address.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
State
The state of the UeManager at the eNB RRC.
void(* LinkOpenCloseTracedCallback)(Mac48Address src, const Mac48Address dst)
TracedCallback signature for link open/close events.
std::set< std::string > g_dupes
Container for duplicate types.
void(* ReceiveReportTracedCallback)(uint64_t imsi, uint16_t cellId, uint16_t rnti, LteRrcSap::MeasurementReport report)
TracedCallback signature for receive measurement report events.
void(* NewUeContextTracedCallback)(uint16_t cellId, uint16_t rnti)
TracedCallback signature for new Ue Context events.
void(* RxTxTracedCallback)(Ptr< const Packet > packet, UanAddress address)
TracedCallback signature for MAC send/receive events.
void(* UlSchedulingTracedCallback)(uint32_t frame, uint32_t subframe, uint16_t rnti, uint8_t mcs, uint16_t tbsSize)
TracedCallback signature for UL scheduling events.
TypeTraits< T4 >::BaseType m4
std::vector< MessageHeader > MessageList
static TracedCallbackTypedefTestSuite tracedCallbackTypedefTestSuite
TracedCallbackTypedefTestCase()
TypeTraits< typename TypeTraits< T >::ReferencedType >::NonConstType Type
void(* DropTracedCallback)(DropReason reason, Ptr< const Packet > packet, Ptr< SixLowPanNetDevice > sixNetDevice, uint32_t ifindex)
TracedCallback signature for.
void(* OutputTracedCallback)(const double now, const double data)
TracedCallback signature for output trace.
void(* SentTracedCallback)(const Ipv6Header &header, Ptr< const Packet > packet, uint32_t interface)
TracedCallback signature for packet sent, forwarded or local-delivered events.
int g_NArgs
Number of arguments passed to callback.
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
void(* SentTracedCallback)(const Ipv4Header &header, Ptr< const Packet > packet, uint32_t interface)
TracedCallback signature for packet send, forward, or local deliver events.
State
The states of the UE RRC entity.
void(* TracedCallback)(Ptr< const Packet > pkt, double sinr, UanTxMode mode)
TracedCallback signature for UanPhy packet send/receive events.
void(* PacketTxRxTracedCallback)(const PacketHeader &header, const MessageList &messages)
TracedCallback signature for Packet transmit and receive events.
TypeTraits< T3 >::BaseType m3
void(* TracedCallback)(Ptr< const PacketBurst > burst)
TracedCallback signature for Ptr
void(* RxEndErrorTracedCallback)(Ptr< const Packet > packet, double snr, bool isEndOfFrame)
TracedCallback signature for receive end error event.
void(* TracedCallback)(Ptr< const MobilityModel > model)
TracedCallback signature.
TracedCallbackTypedefTestSuite()
void ConnectWithoutContext(const CallbackBase &callback)
Append a Callback to the chain (without a context).
State
Definition of NAS states as per "LTE - From theory to practice", Section 3.2.3.2 "Connection Establis...
void(* RsrpRsrqTracedCallback)(uint16_t rnti, uint16_t cellId, double rsrp, double rsrq, bool isServingCell)
TracedCallback signature for cell RSRP and RSRQ.
void(* RxTxTracedCallback)(Ptr< const Packet > packet, Ptr< SixLowPanNetDevice > sixNetDevice, uint32_t ifindex)
TracedCallback signature for packet send/receive events.
void(* StateTracedCallback)(uint64_t imsi, uint16_t cellId, uint16_t rnti, State oldState, State newState)
TracedCallback signature for state transition events.
static void Sink(T1 a1, T2 a2)
Inspect a type to deduce its features.
void(* TracedCallback)(const PhyTransmissionStatParameters params)
TracedCallback signature.
const double m2
Second component modulus, 232 - 22853.
void(* HandoverStartTracedCallback)(uint64_t imsi, uint16_t cellId, uint16_t rnti, uint16_t targetCid)
TracedCallback signature for handover start events.
void(* PowerChangeTracedCallback)(uint8_t power, Mac48Address remoteAddress)
TracedCallback signature for power change events.
void(* NotifyTxTracedCallback)(uint16_t rnti, uint8_t lcid, uint32_t bytes)
TracedCallback signature for NotifyTxOpportunity events.
LrWpanMacState
MAC states.
void(* StateTracedCallback)(LrWpanMacState oldState, LrWpanMacState newState)
TracedCallback signature for LrWpanMacState change events.
TypeTraits< T1 >::BaseType m1
LrWpanPhyEnumeration
IEEE802.15.4-2006 PHY Emumerations Table 18 in section 6.2.3.
A base class which provides memory management and object aggregation.
void(* TxRxTracedCallback)(Ptr< const Packet > packet, Ptr< Ipv4 > ipv4, uint32_t interface)
TracedCallback signature for packet transmission or reception events.
void(* RsrpSinrTracedCallback)(uint16_t cellId, uint16_t rnti, double rsrp, double sinr)
TracedCallback signature for cell RSRP and SINR report.
State
The state of the PHY layer.
const double m1
First component modulus, 232 - 209.
std::set< std::string > Duplicates(void)
Record typedefs which are identical to previously declared.
void(* CellSelectionTracedCallback)(uint64_t imsi, uint16_t cellId)
TracedCallback signature for imsi, cellId and rnti events.
TypeTraits< T2 >::BaseType m2
#define CHECK(U, T1, T2, T3, T4, T5)
void(* SentTracedCallback)(Ptr< const Packet > packet, uint8_t retries, uint8_t backoffs)
TracedCallback signature for sent packets.
void(* ConnectionHandoverTracedCallback)(uint64_t imsi, uint16_t cellId, uint16_t rnti)
TracedCallback signature for connection and handover end events.
Non-const non-reference type.
DropReason
Reason why a packet has been dropped.
void(* ReceiveTracedCallback)(uint16_t rnti, uint8_t lcid, uint32_t bytes, uint64_t delay)
TracedCallback signature for.
void(* DropTracedCallback)(const Ipv4Header &header, Ptr< const Packet > packet, DropReason reason, Ptr< Ipv4 > ipv4, uint32_t interface)
TracedCallback signature for packet drop events.