Skip to content

Commit

Permalink
[diag] Handle errors of TransmitPacket()
Browse files Browse the repository at this point in the history
`TransmitPacket()` should return an error from platform Radio
implementation, as for example Radio can be in incorrect state.

If error occurs, output it onto console.

Signed-off-by: Maciej Baczmanski <[email protected]>
  • Loading branch information
maciejbaczmanski committed Dec 20, 2024
1 parent 143ebbf commit 2910524
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 7 deletions.
22 changes: 16 additions & 6 deletions src/core/diags/factory_diags.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -457,9 +457,9 @@ Error Diags::ProcessSend(uint8_t aArgsLength, char *aArgs[])
VerifyOrExit(txLength >= OT_RADIO_FRAME_MIN_SIZE, error = kErrorInvalidArgs);
mTxLen = txLength;

Output("sending %#x packet(s), length %#x\r\n", static_cast<int>(mTxPackets), static_cast<int>(mTxLen));
TransmitPacket();
SuccessOrExit(error = TransmitPacket());

Output("sending %#x packet(s), length %#x\r\n", static_cast<int>(mTxPackets), static_cast<int>(mTxLen));
exit:
return error;
}
Expand Down Expand Up @@ -537,7 +537,7 @@ Error Diags::ProcessStop(uint8_t aArgsLength, char *aArgs[])
return kErrorNone;
}

void Diags::TransmitPacket(void)
Error Diags::TransmitPacket(void)
{
mTxPacket->mChannel = mChannel;

Expand All @@ -559,7 +559,7 @@ void Diags::TransmitPacket(void)
}

mDiagSendOn = true;
IgnoreError(Get<Radio>().Transmit(*static_cast<Mac::TxFrame *>(mTxPacket)));
return Get<Radio>().Transmit(*static_cast<Mac::TxFrame *>(mTxPacket));
}

Error Diags::ParseReceiveConfigFormat(const char *aFormat, ReceiveConfig &aConfig)
Expand Down Expand Up @@ -758,7 +758,11 @@ void Diags::AlarmFired(void)
{
uint32_t now = otPlatAlarmMilliGetNow();

TransmitPacket();
Error error = TransmitPacket();
if (error != kErrorNone)
{
Output("Packet transmission failed\r\ntatus %#x\r\n", error);
}
otPlatAlarmMilliStartAt(&GetInstance(), now, mTxPeriod);
}
else
Expand Down Expand Up @@ -841,6 +845,8 @@ void Diags::ReceiveDone(otRadioFrame *aFrame, Error aError)

void Diags::TransmitDone(Error aError)
{
Error error;

VerifyOrExit(mDiagSendOn);
mDiagSendOn = false;

Expand All @@ -859,7 +865,11 @@ void Diags::TransmitDone(Error aError)
}

VerifyOrExit(!mRepeatActive);
TransmitPacket();
error = TransmitPacket();
if (error != kErrorNone)
{
Output("Packet transmission failed\r\ntatus %#x\r\n", error);
}

exit:
return;
Expand Down
2 changes: 1 addition & 1 deletion src/core/diags/factory_diags.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ class Diags : public InstanceLocator, private NonCopyable
void OutputReceivedFrame(const otRadioFrame *aFrame);
bool ShouldHandleReceivedFrame(const otRadioFrame &aFrame) const;

void TransmitPacket(void);
Error TransmitPacket(void);
void Output(const char *aFormat, ...);
void AppendErrorResult(Error aError);
void ResetTxPacket(void);
Expand Down

0 comments on commit 2910524

Please sign in to comment.