[pcap] fix pcap callback for TX frames (#10678)

This commit fixes the pcap callback for TX frames:

* Report the tx frame on each tx started callback, so that
  retransmissions can be captured.
* Set the RSSI to be invalid for TX frames.
This commit is contained in:
Yakun Xu
2024-09-06 12:21:03 -07:00
committed by GitHub
parent 4459c54069
commit a887530e0d
2 changed files with 9 additions and 8 deletions
+5 -5
View File
@@ -473,11 +473,6 @@ void SubMac::BeginTransmit(void)
SetState(kStateTransmit);
if (mPcapCallback.IsSet())
{
mPcapCallback.Invoke(&mTransmitFrame, true);
}
error = Get<Radio>().Transmit(mTransmitFrame);
if (error == kErrorInvalidState && mTransmitFrame.mInfo.mTxInfo.mTxDelay > 0)
@@ -497,6 +492,11 @@ exit:
void SubMac::HandleTransmitStarted(TxFrame &aFrame)
{
if (mPcapCallback.IsSet())
{
mPcapCallback.Invoke(&aFrame, true);
}
if (ShouldHandleAckTimeout() && aFrame.GetAckRequest())
{
StartTimer(kAckTimeout);
+4 -3
View File
@@ -4600,9 +4600,10 @@ void NcpBase::HandlePcapFrame(const otRadioFrame *aFrame, bool aIsTx)
SuccessOrExit(mEncoder.WriteData(aFrame->mPsdu, aFrame->mLength));
// Append metadata (rssi, etc)
SuccessOrExit(mEncoder.WriteInt8(aFrame->mInfo.mRxInfo.mRssi)); // RSSI
SuccessOrExit(mEncoder.WriteInt8(-128)); // Noise floor (Currently unused)
SuccessOrExit(mEncoder.WriteUint16(flags)); // Flags
SuccessOrExit(
mEncoder.WriteInt8((aIsTx ? static_cast<int8_t>(OT_RADIO_RSSI_INVALID) : aFrame->mInfo.mRxInfo.mRssi))); // RSSI
SuccessOrExit(mEncoder.WriteInt8(-128)); // Noise floor (Currently unused)
SuccessOrExit(mEncoder.WriteUint16(flags)); // Flags
SuccessOrExit(mEncoder.OpenStruct()); // PHY-data
// Empty for now