mirror of
https://github.com/espressif/openthread.git
synced 2026-08-24 03:09:52 +00:00
[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:
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user