26 #include "ns3/core-module.h"
27 #include "ns3/dsr-module.h"
28 #include "ns3/internet-module.h"
30 #include "ns3/lr-wpan-mac.h"
31 #include "ns3/lte-module.h"
34 #include "ns3/mesh-module.h"
35 #include "ns3/mobility-module.h"
36 #include "ns3/network-module.h"
37 #include "ns3/olsr-module.h"
38 #include "ns3/sixlowpan-module.h"
39 #include "ns3/spectrum-module.h"
40 #include "ns3/stats-module.h"
41 #include "ns3/uan-module.h"
42 #include "ns3/wifi-phy-state-helper.h"
66 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
70 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
73 template <
typename T1,
typename T2,
typename T3,
typename T4>
76 template <
typename T1,
typename T2,
typename T3>
80 template <
typename T1,
typename T2>
83 template <
typename T1>
86 virtual void DoRun (
void);
102 std::set<std::string> dupes;
104 dupes.insert (
"LteRlc::NotifyTxTracedCallback");
105 dupes.insert (
"LteRlc::ReceiveTracedCallback");
106 dupes.insert (
"LteUeRrc::ImsiCidRntiTracedCallback");
107 dupes.insert (
"LteUeRrc::MibSibHandoverTracedCallback");
108 dupes.insert (
"WifiPhyStateHelper::RxEndErrorTracedCallback");
126 template <
typename T>
133 #define TYPENAME(T) \
136 TypeName < T > (int N) \
138 std::stringstream ss; \
139 ss << # T << "(" << N << ")"; \
216 std::cout <<
"with " << N <<
" args." << std::endl;
224 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
228 static void Sink (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
234 template <
typename T1,
typename T2,
typename T3,
typename T4>
238 static void Sink (T1 a1, T2 a2, T3 a3, T4 a4)
244 template <
typename T1,
typename T2,
typename T3>
248 static void Sink (T1 a1, T2 a2, T3 a3)
254 template <
typename T1,
typename T2>
258 static void Sink (T1 a1, T2 a2)
264 template <
typename T1>
290 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
304 std::cout << std::endl;
311 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
317 template <
typename U>
321 U
sink = TracedCbSink<T1, T2, T3, T4, T5>::Sink;
324 std::cout << TypeName<U> (N) <<
" invoked ";
326 m_cb (this->
m1, this->
m2, this->m3, this->m4, this->m5);
331 template <
typename T1,
typename T2,
typename T3,
typename T4>
338 template <
typename U>
342 U
sink = TracedCbSink<T1, T2, T3, T4, empty>::Sink;
345 std::cout << TypeName<U> (N) <<
" invoked ";
347 m_cb (this->
m1, this->
m2, this->m3, this->m4);
352 template <
typename T1,
typename T2,
typename T3>
359 template <
typename U>
363 U
sink = TracedCbSink<T1, T2, T3, empty, empty>::Sink;
366 std::cout << TypeName<U> (N) <<
" invoked ";
368 m_cb (this->
m1, this->
m2, this->m3);
373 template <
typename T1,
typename T2>
380 template <
typename U>
384 U
sink = TracedCbSink<T1, T2, empty, empty, empty>::Sink;
387 std::cout << TypeName<U> (N) <<
" invoked ";
389 m_cb (this->
m1, this->
m2);
394 template <
typename T1>
396 :
public CheckerBase<T1, empty, empty, empty, empty>
401 template <
typename U>
405 U
sink = TracedCbSink<T1, empty, empty, empty, empty>::Sink;
408 std::cout << TypeName<U> (N) <<
" invoked ";
416 :
TestCase (
"Check basic TracedCallback operation")
424 #define DUPE(U, T1) \
425 if (g_dupes.find ( # U ) == g_dupes.end ()) { \
426 NS_TEST_ASSERT_MSG_NE (0, 1, \
427 "expected to find " << # U << " in dupes."); } \
428 if (TypeName<U> (0) == TypeName<T1> (0)) { \
429 std::cout << # U << " matches " << # T1 << std::endl; } \
431 NS_TEST_ASSERT_MSG_EQ \
432 (TypeName<U> (0), TypeName<T1> (0), \
433 "the typedef " << # U << \
434 " used to match the typedef " << # T1 << \
435 " but no longer does. Please add a new CHECK call.")
437 #define CHECK(U, T1, T2, T3, T4, T5) \
438 CreateObject< Checker<T1, T2, T3, T4, T5> > ()->Invoke<U> ()
440 CHECK (dsr::DsrOptionSRHeader::TracedCallback,
444 CHECK (EpcUeNas::StateTracedCallback,
448 CHECK (Ipv4L3Protocol::DropTracedCallback,
452 CHECK (Ipv4L3Protocol::SentTracedCallback,
456 CHECK (Ipv4L3Protocol::TxRxTracedCallback,
460 CHECK (Ipv6L3Protocol::DropTracedCallback,
465 CHECK (Ipv6L3Protocol::SentTracedCallback,
469 CHECK (Ipv6L3Protocol::TxRxTracedCallback,
473 CHECK (LrWpanMac::SentTracedCallback,
477 CHECK (LrWpanMac::StateTracedCallback,
481 CHECK (LrWpanPhy::StateTracedCallback,
492 CHECK (LteEnbMac::UlSchedulingTracedCallback,
493 uint32_t, uint32_t, uint16_t, uint8_t, uint16_t);
495 CHECK (LteEnbPhy::ReportUeSinrTracedCallback,
496 uint16_t, uint16_t,
double, uint8_t,
499 CHECK (LteEnbPhy::ReportInterferenceTracedCallback,
503 CHECK (LteEnbRrc::ConnectionHandoverTracedCallback,
504 uint64_t, uint16_t, uint16_t,
507 CHECK (LteEnbRrc::HandoverStartTracedCallback,
508 uint64_t, uint16_t, uint16_t, uint16_t,
511 CHECK (LteEnbRrc::NewUeContextTracedCallback,
515 CHECK (LteEnbRrc::ReceiveReportTracedCallback,
519 CHECK (LtePdcp::PduRxTracedCallback,
520 uint16_t, uint8_t, uint32_t, uint64_t,
523 CHECK (LtePdcp::PduTxTracedCallback,
524 uint16_t, uint8_t, uint32_t,
527 DUPE (LteRlc::NotifyTxTracedCallback, LtePdcp::PduTxTracedCallback);
529 DUPE (LteRlc::ReceiveTracedCallback, LtePdcp::PduRxTracedCallback);
531 CHECK (LteUePhy::RsrpSinrTracedCallback,
532 uint16_t, uint16_t,
double,
double, uint8_t);
534 CHECK (LteUePhy::StateTracedCallback,
538 CHECK (LteUeRrc::CellSelectionTracedCallback,
542 DUPE (LteUeRrc::ImsiCidRntiTracedCallback, LteEnbRrc::ConnectionHandoverTracedCallback);
544 DUPE (LteUeRrc::MibSibHandoverTracedCallback, LteEnbRrc::HandoverStartTracedCallback);
546 CHECK (LteUeRrc::StateTracedCallback,
549 CHECK (Mac48Address::TracedCallback,
553 CHECK (MobilityModel::TracedCallback,
557 CHECK (olsr::RoutingProtocol::PacketTxRxTracedCallback,
561 CHECK (olsr::RoutingProtocol::TableChangeTracedCallback,
565 CHECK (Packet::AddressTracedCallback,
569 CHECK (Packet::Mac48AddressTracedCallback,
573 CHECK (Packet::SinrTracedCallback,
577 CHECK (Packet::SizeTracedCallback,
581 CHECK (Packet::TracedCallback,
585 CHECK (PacketBurst::TracedCallback,
589 CHECK (dot11s::PeerManagementProtocol::LinkOpenCloseTracedCallback,
593 CHECK (PhyReceptionStatParameters::TracedCallback,
597 CHECK (PhyTransmissionStatParameters::TracedCallback,
601 CHECK (SixLowPanNetDevice::DropTracedCallback,
606 CHECK (SixLowPanNetDevice::RxTxTracedCallback,
610 CHECK (SpectrumChannel::LossTracedCallback,
614 CHECK (SpectrumValue::TracedCallback,
618 CHECK (TimeSeriesAdaptor::OutputTracedCallback,
622 CHECK (UanMac::PacketModeTracedCallback,
626 CHECK (UanMacCw::QueueTracedCallback,
630 CHECK (UanMacRc::QueueTracedCallback,
634 CHECK (UanNetDevice::RxTxTracedCallback,
638 CHECK (UanPhy::TracedCallback,
642 CHECK (UeManager::StateTracedCallback,
645 CHECK (WifiMacHeader::TracedCallback,
649 CHECK (WifiPhyStateHelper::RxEndErrorTracedCallback,
653 CHECK (WifiPhyStateHelper::RxOkTracedCallback,
657 CHECK (WifiPhyStateHelper::StateTracedCallback,
661 CHECK (WifiPhyStateHelper::TxTracedCallback,
665 CHECK (WifiRemoteStationManager::PowerChangeTracedCallback,
669 CHECK (WifiRemoteStationManager::RateChangeTracedCallback,
681 :
TestSuite (
"traced-callback-typedef", SYSTEM)
TracedCallback< T1, T2, T3, T4 > m_cb
TracedCallback< T1, T2, T3 > m_cb
TracedCallback< T1, T2 > m_cb
TracedCallback< T1 > m_cb
TypeTraits< T3 >::BaseType m3
TypeTraits< T2 >::BaseType m2
TypeTraits< T5 >::BaseType m5
TypeTraits< T1 >::BaseType m1
TypeTraits< T4 >::BaseType m4
TracedCallback< T1, T2, T3, T4, T5 > m_cb
TracedCallbackTypedefTestCase()
virtual ~TracedCallbackTypedefTestCase()
virtual void DoRun(void)
Implementation to actually run this TestCase.
static int m_nArgs
Number of arguments passed to callback.
TracedCallbackTypedefTestSuite()
static void Sink(T1 a1, T2 a2)
static void Sink(T1 a1, T2 a2, T3 a3)
static void Sink(T1 a1, T2 a2, T3 a3, T4 a4)
static void Sink(T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
a polymophic address class
Class for representing data rates.
State
Definition of NAS states as per "LTE - From theory to practice", Section 3.2.3.2 "Connection Establis...
void(* StateTracedCallback)(const State oldState, const State newState)
TracedCallback signature for state change events.
DropReason
Reason why a packet has been dropped.
void(* DropTracedCallback)(const Ipv4Header &header, Ptr< const Packet > packet, DropReason reason, Ptr< Ipv4 > ipv4, uint32_t interface)
TracedCallback signature for packet drop events.
void(* TxRxTracedCallback)(Ptr< const Packet > packet, Ptr< Ipv4 > ipv4, uint32_t interface)
TracedCallback signature for packet transmission or reception events.
void(* SentTracedCallback)(const Ipv4Header &header, Ptr< const Packet > packet, uint32_t interface)
TracedCallback signature for packet send, forward, or local deliver events.
void(* SentTracedCallback)(const Ipv6Header &header, Ptr< const Packet > packet, uint32_t interface)
TracedCallback signature for packet sent, forwarded or local-delivered events.
DropReason
Reason why a packet has been dropped.
void(* DropTracedCallback)(const Ipv6Header &header, Ptr< const Packet > packet, DropReason reason, Ptr< Ipv6 > ipv6, uint32_t interface)
TracedCallback signature for packet drop events.
void(* TxRxTracedCallback)(Ptr< const Packet > packet, Ptr< Ipv6 > ipv6, uint32_t interface)
TracedCallback signature for packet transmission or reception events.
void(* StateTracedCallback)(LrWpanMacState oldState, LrWpanMacState newState)
TracedCallback signature for LrWpanMacState change events.
void(* SentTracedCallback)(Ptr< const Packet > packet, uint8_t retries, uint8_t backoffs)
TracedCallback signature for sent packets.
void(* StateTracedCallback)(Time time, LrWpanPhyEnumeration oldState, LrWpanPhyEnumeration newState)
TracedCallback signature for Trx state change events.
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.
void(* ReportUeSinrTracedCallback)(uint16_t cellId, uint16_t rnti, double sinrLinear, uint8_t componentCarrierId)
TracedCallback signature for the linear average of SRS SINRs.
void(* ReportInterferenceTracedCallback)(uint16_t cellId, Ptr< SpectrumValue > spectrumValue)
TracedCallback signature for the linear average of SRS SINRs.
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(* HandoverStartTracedCallback)(const uint64_t imsi, const uint16_t cellId, const uint16_t rnti, const uint16_t targetCid)
TracedCallback signature for handover start events.
void(* ConnectionHandoverTracedCallback)(const uint64_t imsi, const uint16_t cellId, const uint16_t rnti)
TracedCallback signature for connection and handover end events.
void(* NewUeContextTracedCallback)(const uint16_t cellId, const uint16_t rnti)
TracedCallback signature for new Ue Context 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.
void(* PduTxTracedCallback)(uint16_t rnti, uint8_t lcid, uint32_t size)
TracedCallback for PDU transmission event.
void(* StateTracedCallback)(uint16_t cellId, uint16_t rnti, State oldState, State newState)
TracedCallback signature for state transition events.
State
The states of the UE PHY entity.
void(* RsrpSinrTracedCallback)(uint16_t cellId, uint16_t rnti, double rsrp, double sinr, uint8_t componentCarrierId)
TracedCallback signature for cell RSRP and SINR report.
State
The states of the UE RRC entity.
void(* CellSelectionTracedCallback)(uint64_t imsi, uint16_t cellId)
TracedCallback signature for imsi, cellId and rnti events.
void(* StateTracedCallback)(uint64_t imsi, uint16_t cellId, uint16_t rnti, State oldState, State newState)
TracedCallback signature for state transition events.
void(* TracedCallback)(Mac48Address value)
TracedCallback signature for Mac48Address.
A class used for addressing MAC8 MAC's.
void(* TracedCallback)(Ptr< const MobilityModel > model)
TracedCallback signature.
A base class which provides memory management and object aggregation.
void(* TracedCallback)(Ptr< const PacketBurst > burst)
TracedCallback signature for Ptr<PacketBurst>
void(* SizeTracedCallback)(uint32_t oldSize, uint32_t newSize)
TracedCallback signature for changes in packet size.
void(* Mac48AddressTracedCallback)(Ptr< const Packet > packet, Mac48Address mac)
TracedCallback signature for packet and Mac48Address.
void(* AddressTracedCallback)(Ptr< const Packet > packet, const Address &address)
TracedCallback signature for packet and Address.
void(* SinrTracedCallback)(Ptr< const Packet > packet, double sinr)
TracedCallback signature for packet and SINR.
void(* TracedCallback)(Ptr< const Packet > packet)
TracedCallback signature for Ptr<Packet>
void(* DropTracedCallback)(DropReason reason, Ptr< const Packet > packet, Ptr< SixLowPanNetDevice > sixNetDevice, uint32_t ifindex)
TracedCallback signature fo packet drop events.
DropReason
Enumeration of the dropping reasons in SixLoWPAN.
void(* RxTxTracedCallback)(Ptr< const Packet > packet, Ptr< SixLowPanNetDevice > sixNetDevice, uint32_t ifindex)
TracedCallback signature for packet send/receive events.
void(* LossTracedCallback)(Ptr< const SpectrumPhy > txPhy, Ptr< const SpectrumPhy > rxPhy, double lossDb)
TracedCallback signature for path loss calculation events.
void(* TracedCallback)(Ptr< SpectrumValue > value)
TracedCallback signature for SpectrumValue.
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
Simulation virtual time values and global simulation resolution.
void(* OutputTracedCallback)(const double now, const double data)
TracedCallback signature for output trace.
void ConnectWithoutContext(const CallbackBase &callback)
Append a Callback to the chain (without a context).
void(* QueueTracedCallback)(Ptr< const Packet > packet, uint16_t proto)
TracedCallback signature for enqueue/dequeue of a packet.
void(* PacketModeTracedCallback)(Ptr< const Packet > packet, UanTxMode mode)
TracedCallback signature for packet reception/enqueue/dequeue events.
void(* QueueTracedCallback)(Ptr< const Packet > packet, uint32_t proto)
TracedCallback signature for dequeue of a packet.
void(* RxTxTracedCallback)(Ptr< const Packet > packet, Mac8Address address)
TracedCallback signature for MAC send/receive events.
void(* TracedCallback)(Ptr< const Packet > pkt, double sinr, UanTxMode mode)
TracedCallback signature for UanPhy packet send/receive events.
Abstraction of packet modulation information.
State
The state of the UeManager at the eNB RRC.
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.
represent a single transmission mode
void(* TxTracedCallback)(Ptr< const Packet > packet, WifiMode mode, WifiPreamble preamble, uint8_t power)
TracedCallback signature for transmit event.
void(* StateTracedCallback)(Time start, Time duration, WifiPhyState state)
TracedCallback signature for state changes.
void(* RxOkTracedCallback)(Ptr< const Packet > packet, double snr, WifiMode mode, WifiPreamble preamble)
TracedCallback signature for receive end OK event.
void(* PowerChangeTracedCallback)(double oldPower, double newPower, Mac48Address remoteAddress)
TracedCallback signature for power change events.
void(* RateChangeTracedCallback)(DataRate oldRate, DataRate newRate, Mac48Address remoteAddress)
TracedCallback signature for rate change events.
void(* LinkOpenCloseTracedCallback)(Mac48Address src, const Mac48Address dst)
TracedCallback signature for link open/close events.
make Callback use a separate empty type
void(* PacketTxRxTracedCallback)(const PacketHeader &header, const MessageList &messages)
TracedCallback signature for Packet transmit and receive events.
void(* TableChangeTracedCallback)(uint32_t size)
TracedCallback signature for routing table computation.
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
LrWpanMacState
MAC states.
LrWpanPhyEnumeration
IEEE802.15.4-2006 PHY Emumerations Table 18 in section 6.2.3.
WifiPreamble
The type of preamble to be used by an IEEE 802.11 transmission.
const double m1
First component modulus, 232 - 209.
const double m2
Second component modulus, 232 - 22853.
std::set< std::string > Duplicates(void)
Record typedefs which are identical to previously declared.
void SinkIt(unsigned int N)
Log that a callback was invoked.
std::set< std::string > g_dupes
Container for duplicate types.
std::string TypeName(int N)
Stringify the known TracedCallback type names.
std::vector< MessageHeader > MessageList
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Callback< R, Ts... > MakeCallback(R(T::*memPtr)(Ts...), OBJ objPtr)
Build Callbacks for class method members which take varying numbers of arguments and potentially retu...
MeasurementReport structure.
PhyReceptionStatParameters structure.
void(* TracedCallback)(const PhyReceptionStatParameters params)
TracedCallback signature.
PhyTransmissionStatParameters structure.
void(* TracedCallback)(const PhyTransmissionStatParameters params)
TracedCallback signature.
Inspect a type to deduce its features.
#define CHECK(U, T1, T2, T3, T4, T5)
static TracedCallbackTypedefTestSuite tracedCallbackTypedefTestSuite
WifiPhyState
The state of the PHY layer.