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"
69 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
73 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
76 template <
typename T1,
typename T2,
typename T3,
typename T4>
79 template <
typename T1,
typename T2,
typename T3>
83 template <
typename T1,
typename T2>
86 template <
typename T1>
89 virtual void DoRun (
void);
102 std::set<std::string>
105 std::set<std::string> dupes;
107 dupes.insert (
"LteRlc::NotifyTxTracedCallback");
108 dupes.insert (
"LteRlc::ReceiveTracedCallback");
109 dupes.insert (
"LteUeRrc::ImsiCidRntiTracedCallback");
110 dupes.insert (
"LteUeRrc::MibSibHandoverTracedCallback");
111 dupes.insert (
"WifiPhyStateHelper::RxEndErrorTracedCallback");
129 template <
typename T>
136 #define TYPENAME(T) \
139 TypeName < T > (int N) \
141 std::stringstream ss; \
142 ss << # T << "(" << N << ")"; \
219 std::cout <<
"with " << N <<
" args." << std::endl;
227 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
231 static void Sink (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
237 template <
typename T1,
typename T2,
typename T3,
typename T4>
241 static void Sink (T1 a1, T2 a2, T3 a3, T4 a4)
247 template <
typename T1,
typename T2,
typename T3>
251 static void Sink (T1 a1, T2 a2, T3 a3)
257 template <
typename T1,
typename T2>
261 static void Sink (T1 a1, T2 a2)
267 template <
typename T1>
293 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
307 std::cout << std::endl;
314 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
320 template <
typename U>
324 U
sink = TracedCbSink<T1, T2, T3, T4, T5>::Sink;
327 std::cout << TypeName<U> (N) <<
" invoked ";
329 m_cb (this->
m1, this->
m2, this->m3, this->m4, this->m5);
334 template <
typename T1,
typename T2,
typename T3,
typename T4>
341 template <
typename U>
345 U
sink = TracedCbSink<T1, T2, T3, T4, empty>::Sink;
348 std::cout << TypeName<U> (N) <<
" invoked ";
350 m_cb (this->
m1, this->
m2, this->m3, this->m4);
355 template <
typename T1,
typename T2,
typename T3>
362 template <
typename U>
366 U
sink = TracedCbSink<T1, T2, T3, empty, empty>::Sink;
369 std::cout << TypeName<U> (N) <<
" invoked ";
371 m_cb (this->
m1, this->
m2, this->m3);
376 template <
typename T1,
typename T2>
383 template <
typename U>
387 U
sink = TracedCbSink<T1, T2, empty, empty, empty>::Sink;
390 std::cout << TypeName<U> (N) <<
" invoked ";
392 m_cb (this->
m1, this->
m2);
397 template <
typename T1>
399 :
public CheckerBase<T1, empty, empty, empty, empty>
404 template <
typename U>
408 U
sink = TracedCbSink<T1, empty, empty, empty, empty>::Sink;
411 std::cout << TypeName<U> (N) <<
" invoked ";
419 :
TestCase (
"Check basic TracedCallback operation")
427 #define DUPE(U, T1) \
428 if (g_dupes.find ( # U ) == g_dupes.end ()) { \
429 NS_TEST_ASSERT_MSG_NE (0, 1, \
430 "expected to find " << # U << " in dupes."); } \
431 if (TypeName<U> (0) == TypeName<T1> (0)) { \
432 std::cout << # U << " matches " << # T1 << std::endl; } \
434 NS_TEST_ASSERT_MSG_EQ \
435 (TypeName<U> (0), TypeName<T1> (0), \
436 "the typedef " << # U << \
437 " used to match the typedef " << # T1 << \
438 " but no longer does. Please add a new CHECK call.")
440 #define CHECK(U, T1, T2, T3, T4, T5) \
441 CreateObject< Checker<T1, T2, T3, T4, T5> > ()->Invoke<U> ()
443 CHECK (dsr::DsrOptionSRHeader::TracedCallback,
447 CHECK (EpcUeNas::StateTracedCallback,
451 CHECK (Ipv4L3Protocol::DropTracedCallback,
455 CHECK (Ipv4L3Protocol::SentTracedCallback,
459 CHECK (Ipv4L3Protocol::TxRxTracedCallback,
463 CHECK (Ipv6L3Protocol::DropTracedCallback,
468 CHECK (Ipv6L3Protocol::SentTracedCallback,
472 CHECK (Ipv6L3Protocol::TxRxTracedCallback,
476 CHECK (LrWpanMac::SentTracedCallback,
480 CHECK (LrWpanMac::StateTracedCallback,
484 CHECK (LrWpanPhy::StateTracedCallback,
495 CHECK (LteEnbMac::UlSchedulingTracedCallback,
496 uint32_t, uint32_t, uint16_t, uint8_t, uint16_t);
498 CHECK (LteEnbPhy::ReportUeSinrTracedCallback,
499 uint16_t, uint16_t,
double, uint8_t,
502 CHECK (LteEnbPhy::ReportInterferenceTracedCallback,
506 CHECK (LteEnbRrc::ConnectionHandoverTracedCallback,
507 uint64_t, uint16_t, uint16_t,
510 CHECK (LteEnbRrc::HandoverStartTracedCallback,
511 uint64_t, uint16_t, uint16_t, uint16_t,
514 CHECK (LteEnbRrc::NewUeContextTracedCallback,
518 CHECK (LteEnbRrc::ReceiveReportTracedCallback,
522 CHECK (LtePdcp::PduRxTracedCallback,
523 uint16_t, uint8_t, uint32_t, uint64_t,
526 CHECK (LtePdcp::PduTxTracedCallback,
527 uint16_t, uint8_t, uint32_t,
530 DUPE (LteRlc::NotifyTxTracedCallback, LtePdcp::PduTxTracedCallback);
532 DUPE (LteRlc::ReceiveTracedCallback, LtePdcp::PduRxTracedCallback);
534 CHECK (LteUePhy::RsrpSinrTracedCallback,
535 uint16_t, uint16_t,
double,
double, uint8_t);
537 CHECK (LteUePhy::StateTracedCallback,
541 CHECK (LteUeRrc::CellSelectionTracedCallback,
545 DUPE (LteUeRrc::ImsiCidRntiTracedCallback, LteEnbRrc::ConnectionHandoverTracedCallback);
547 DUPE (LteUeRrc::MibSibHandoverTracedCallback, LteEnbRrc::HandoverStartTracedCallback);
549 CHECK (LteUeRrc::StateTracedCallback,
552 CHECK (Mac48Address::TracedCallback,
556 CHECK (MobilityModel::TracedCallback,
560 CHECK (olsr::RoutingProtocol::PacketTxRxTracedCallback,
564 CHECK (olsr::RoutingProtocol::TableChangeTracedCallback,
568 CHECK (Packet::AddressTracedCallback,
572 CHECK (Packet::Mac48AddressTracedCallback,
576 CHECK (Packet::SinrTracedCallback,
580 CHECK (Packet::SizeTracedCallback,
584 CHECK (Packet::TracedCallback,
588 CHECK (PacketBurst::TracedCallback,
592 CHECK (dot11s::PeerManagementProtocol::LinkOpenCloseTracedCallback,
596 CHECK (PhyReceptionStatParameters::TracedCallback,
600 CHECK (PhyTransmissionStatParameters::TracedCallback,
604 CHECK (SixLowPanNetDevice::DropTracedCallback,
609 CHECK (SixLowPanNetDevice::RxTxTracedCallback,
613 CHECK (SpectrumChannel::LossTracedCallback,
617 CHECK (SpectrumValue::TracedCallback,
621 CHECK (TimeSeriesAdaptor::OutputTracedCallback,
625 CHECK (UanMac::PacketModeTracedCallback,
629 CHECK (UanMacCw::QueueTracedCallback,
633 CHECK (UanMacRc::QueueTracedCallback,
637 CHECK (UanNetDevice::RxTxTracedCallback,
641 CHECK (UanPhy::TracedCallback,
645 CHECK (UeManager::StateTracedCallback,
648 CHECK (WifiMacHeader::TracedCallback,
652 CHECK (WifiPhyStateHelper::RxEndErrorTracedCallback,
656 CHECK (WifiPhyStateHelper::RxOkTracedCallback,
660 CHECK (WifiPhyStateHelper::StateTracedCallback,
664 CHECK (WifiPhyStateHelper::TxTracedCallback,
668 CHECK (WifiRemoteStationManager::PowerChangeTracedCallback,
672 CHECK (WifiRemoteStationManager::RateChangeTracedCallback,
684 :
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.
void(* UlSchedulingTracedCallback)(const uint32_t frame, const uint32_t subframe, const uint16_t rnti, const uint8_t mcs, const uint16_t tbsSize)
TracedCallback signature for UL scheduling events.
Simulation virtual time values and global simulation resolution.
MeasurementReport structure.
void(* ReportUeSinrTracedCallback)(uint16_t cellId, uint16_t rnti, double sinrLinear, uint8_t componentCarrierId)
TracedCallback signature for the linear average of SRS SINRs.
static void Sink(T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
void(* PowerChangeTracedCallback)(double oldPower, double newPower, Mac48Address remoteAddress)
TracedCallback signature for power change events.
void(* StateTracedCallback)(Time time, LrWpanPhyEnumeration oldState, LrWpanPhyEnumeration newState)
TracedCallback signature for Trx state change events.
void(* NewUeContextTracedCallback)(const uint16_t cellId, const uint16_t rnti)
TracedCallback signature for new Ue Context events.
void(* ConnectionHandoverTracedCallback)(const uint64_t imsi, const uint16_t cellId, const uint16_t rnti)
TracedCallback signature for connection and handover end events.
TracedCallback< T1, T2, T3 > m_cb
void(* QueueTracedCallback)(Ptr< const Packet > packet, uint32_t proto)
TracedCallback signature for dequeue of a packet.
void(* QueueTracedCallback)(Ptr< const Packet > packet, uint16_t proto)
TracedCallback signature for enqueue/dequeue of a packet.
void(* StateTracedCallback)(Time start, Time duration, WifiPhyState state)
TracedCallback signature for state changes.
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(* 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.
const double m1
First component modulus, 232 - 209.
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.
a polymophic address class
Class for representing data rates.
DropReason
Reason why a packet has been dropped.
TracedCallback< T1, T2, T3, T4, T5 > m_cb
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.
NS_ASSERT_MSG(false,"Ipv4AddressGenerator::MaskToIndex(): Impossible")
make Callback use a separate empty type
void(* AddressTracedCallback)(Ptr< const Packet > packet, const Address &address)
TracedCallback signature for packet and Address.
void(* DropTracedCallback)(const Ipv6Header &header, Ptr< const Packet > packet, DropReason reason, Ptr< Ipv6 > ipv6, uint32_t interface)
TracedCallback signature for packet drop events.
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
void(* RxOkTracedCallback)(Ptr< const Packet > packet, double snr, WifiMode mode, WifiPreamble preamble)
TracedCallback signature for receive end ok event.
void(* TxRxTracedCallback)(Ptr< const Packet > packet, Ptr< Ipv6 > ipv6, uint32_t interface)
TracedCallback signature for packet transmission or reception events.
void(* HandoverStartTracedCallback)(const uint64_t imsi, const uint16_t cellId, const uint16_t rnti, const uint16_t targetCid)
TracedCallback signature for handover start events.
static int m_nArgs
Number of arguments passed to callback.
Abstraction of packet modulation information.
void(* ReceiveReportTracedCallback)(const uint64_t imsi, const uint16_t cellId, const uint16_t rnti, const LteRrcSap::MeasurementReport report)
TracedCallback signature for receive measurement report events.
void(* PduRxTracedCallback)(const uint16_t rnti, const uint8_t lcid, const uint32_t size, const uint64_t delay)
TracedCallback signature for PDU receive event.
A class used for addressing MAC8 MAC's.
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(* RxTxTracedCallback)(Ptr< const Packet > packet, Mac8Address address)
TracedCallback signature for MAC send/receive events.
void(* StateTracedCallback)(const uint64_t imsi, const uint16_t cellId, const uint16_t rnti, const State oldState, const State newState)
TracedCallback signature for state transition events.
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.
PhyReceptionStatParameters structure.
State
The state of the UeManager at the eNB RRC.
void(* LinkOpenCloseTracedCallback)(Mac48Address src, const Mac48Address dst)
TracedCallback signature for link open/close events.
WifiPhyState
The state of the PHY layer.
std::set< std::string > g_dupes
Container for duplicate types.
TypeTraits< T4 >::BaseType m4
std::vector< MessageHeader > MessageList
static TracedCallbackTypedefTestSuite tracedCallbackTypedefTestSuite
TracedCallbackTypedefTestCase()
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.
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
Inspect a type to deduce its features.
void(* TracedCallback)(Ptr< const PacketBurst > burst)
TracedCallback signature for Ptr
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(* 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)
void(* TracedCallback)(const PhyTransmissionStatParameters params)
TracedCallback signature.
LrWpanMacState
MAC states.
DropReason
Reason why a packet has been dropped.
const double m2
Second component modulus, 232 - 22853.
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.
PhyTransmissionStatParameters structure.
std::set< std::string > Duplicates(void)
Record typedefs which are identical to previously declared.
void(* RateChangeTracedCallback)(DataRate oldRate, DataRate newRate, Mac48Address remoteAddress)
TracedCallback signature for rate change events.
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(* RsrpSinrTracedCallback)(uint16_t cellId, uint16_t rnti, double rsrp, double sinr, uint8_t componentCarrierId)
TracedCallback signature for cell RSRP and SINR report.
void(* DropTracedCallback)(const Ipv4Header &header, Ptr< const Packet > packet, DropReason reason, Ptr< Ipv4 > ipv4, uint32_t interface)
TracedCallback signature for packet drop events.