From 9a87ec73536e9791b0f982e3cbe1a9a249b3cca3 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Sun, 2 Jan 2022 11:05:32 -0800 Subject: [PATCH] Count tx airtime only after it's sent by the radio --- src/mesh/RadioLibInterface.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/mesh/RadioLibInterface.cpp b/src/mesh/RadioLibInterface.cpp index cb77d9ec3..4455b971c 100644 --- a/src/mesh/RadioLibInterface.cpp +++ b/src/mesh/RadioLibInterface.cpp @@ -101,7 +101,6 @@ ErrorCode RadioLibInterface::send(MeshPacket *p) // Sometimes when testing it is useful to be able to never turn on the xmitter #ifndef LORA_DISABLE_SENDING printPacket("enqueuing for send", p); - uint32_t xmitMsec = getPacketTime(p); DEBUG_MSG("txGood=%d,rxGood=%d,rxBad=%d\n", txGood, rxGood, rxBad); ErrorCode res = txQueue.enqueue(p) ? ERRNO_OK : ERRNO_UNKNOWN; @@ -111,10 +110,6 @@ ErrorCode RadioLibInterface::send(MeshPacket *p) return res; } - // Count the packet toward our TX airtime utilization. - // We only count it if it can be added to the TX queue. - airTime->logAirtime(TX_LOG, xmitMsec); - // We want all sending/receiving to be done by our daemon thread, We use a delay here because this packet might have been sent // in response to a packet we just received. So we want to make sure the other side has had a chance to reconfigure its radio startTransmitTimer(true); @@ -188,6 +183,10 @@ void RadioLibInterface::onNotify(uint32_t notification) MeshPacket *txp = txQueue.dequeue(); assert(txp); startSend(txp); + + // Packet has been sent, count it toward our TX airtime utilization. + uint32_t xmitMsec = getPacketTime(txp); + airTime->logAirtime(TX_LOG, xmitMsec); } } else { // DEBUG_MSG("done with txqueue\n");