diff --git a/src/lr-wpan/model/lr-wpan-mac.cc b/src/lr-wpan/model/lr-wpan-mac.cc index 76b08fa22..c3cb8d16b 100644 --- a/src/lr-wpan/model/lr-wpan-mac.cc +++ b/src/lr-wpan/model/lr-wpan-mac.cc @@ -83,6 +83,9 @@ LrWpanMac::GetTypeId (void) .AddTraceSource ("MacState", "The state of LrWpan Mac", MakeTraceSourceAccessor (&LrWpanMac::m_macStateLogger)) + .AddTraceSource ("MacSentPkt", + "Trace source reporting some information about the sent packet", + MakeTraceSourceAccessor (&LrWpanMac::m_sentPktTrace)) ; return tid; } @@ -669,6 +672,15 @@ LrWpanMac::RemoveFirstTxQElement (void) { TxQueueElement *txQElement = m_txQueue.front (); Ptr p = txQElement->txQPkt; + + Ptr pkt = p->Copy (); + LrWpanMacHeader hdr; + pkt->RemoveHeader (hdr); + if (hdr.GetShortDstAddr () != Mac16Address ("ff:ff")) + { + m_sentPktTrace (p, m_retransmission+1, 0); + } + txQElement->txQPkt = 0; delete txQElement; m_txQueue.pop_front (); diff --git a/src/lr-wpan/model/lr-wpan-mac.h b/src/lr-wpan/model/lr-wpan-mac.h index 584e7f178..dfee4e00c 100644 --- a/src/lr-wpan/model/lr-wpan-mac.h +++ b/src/lr-wpan/model/lr-wpan-mac.h @@ -312,6 +312,17 @@ private: bool PrepareRetransmission (void); void CheckQueue (void); + /** + * The trace source fired when packets are considered as successfully sent + * or the transmission has been given up. + * Only non-broadcast packets are traced. + * + * The data should represent: + * packet, number of retries, total number of csma backoffs (not currently implemented) + * + * \see class CallBackTraceSource + */ + TracedCallback, uint8_t, uint8_t > m_sentPktTrace; TracedCallback, bool> m_macTxQueueTrace; /**