Add more useful error output in radio interfaces (#3615)

* Add more useful error output in radio interfaces

* trunk
This commit is contained in:
Jonathan Bennett 2024-04-14 00:29:42 -05:00 committed by GitHub
parent f1a1834ee2
commit 0a246bfe9b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 36 additions and 8 deletions

View File

@ -128,12 +128,18 @@ bool RF95Interface::reconfigure()
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING); RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
err = lora->setSyncWord(syncWord); err = lora->setSyncWord(syncWord);
if (err != RADIOLIB_ERR_NONE)
LOG_ERROR("Radiolib error %d when attempting RF95 setSyncWord!\n", err);
assert(err == RADIOLIB_ERR_NONE); assert(err == RADIOLIB_ERR_NONE);
err = lora->setCurrentLimit(currentLimit); err = lora->setCurrentLimit(currentLimit);
if (err != RADIOLIB_ERR_NONE)
LOG_ERROR("Radiolib error %d when attempting RF95 setCurrentLimit!\n", err);
assert(err == RADIOLIB_ERR_NONE); assert(err == RADIOLIB_ERR_NONE);
err = lora->setPreambleLength(preambleLength); err = lora->setPreambleLength(preambleLength);
if (err != RADIOLIB_ERR_NONE)
LOG_ERROR("Radiolib error %d when attempting RF95 setPreambleLength!\n", err);
assert(err == RADIOLIB_ERR_NONE); assert(err == RADIOLIB_ERR_NONE);
err = lora->setFrequency(getFreq()); err = lora->setFrequency(getFreq());
@ -164,6 +170,8 @@ void RF95Interface::addReceiveMetadata(meshtastic_MeshPacket *mp)
void RF95Interface::setStandby() void RF95Interface::setStandby()
{ {
int err = lora->standby(); int err = lora->standby();
if (err != RADIOLIB_ERR_NONE)
LOG_ERROR("Radiolib error %d when attempting RF95 standby!\n", err);
assert(err == RADIOLIB_ERR_NONE); assert(err == RADIOLIB_ERR_NONE);
isReceiving = false; // If we were receiving, not any more isReceiving = false; // If we were receiving, not any more
@ -185,6 +193,8 @@ void RF95Interface::startReceive()
setTransmitEnable(false); setTransmitEnable(false);
setStandby(); setStandby();
int err = lora->startReceive(); int err = lora->startReceive();
if (err != RADIOLIB_ERR_NONE)
LOG_ERROR("Radiolib error %d when attempting RF95 startReceive!\n", err);
assert(err == RADIOLIB_ERR_NONE); assert(err == RADIOLIB_ERR_NONE);
isReceiving = true; isReceiving = true;
@ -205,6 +215,8 @@ bool RF95Interface::isChannelActive()
// LOG_DEBUG("Channel is busy!\n"); // LOG_DEBUG("Channel is busy!\n");
return true; return true;
} }
if (result != RADIOLIB_ERR_WRONG_MODEM)
LOG_ERROR("Radiolib error %d when attempting RF95 isChannelActive!\n", result);
assert(result != RADIOLIB_ERR_WRONG_MODEM); assert(result != RADIOLIB_ERR_WRONG_MODEM);
// LOG_DEBUG("Channel is free!\n"); // LOG_DEBUG("Channel is free!\n");

View File

@ -181,12 +181,18 @@ template <typename T> bool SX126xInterface<T>::reconfigure()
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING); RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
err = lora.setSyncWord(syncWord); err = lora.setSyncWord(syncWord);
if (err != RADIOLIB_ERR_NONE)
LOG_ERROR("Radiolib error %d when attempting SX126X setSyncWord!\n", err);
assert(err == RADIOLIB_ERR_NONE); assert(err == RADIOLIB_ERR_NONE);
err = lora.setCurrentLimit(currentLimit); err = lora.setCurrentLimit(currentLimit);
if (err != RADIOLIB_ERR_NONE)
LOG_ERROR("Radiolib error %d when attempting SX126X setCurrentLimit!\n", err);
assert(err == RADIOLIB_ERR_NONE); assert(err == RADIOLIB_ERR_NONE);
err = lora.setPreambleLength(preambleLength); err = lora.setPreambleLength(preambleLength);
if (err != RADIOLIB_ERR_NONE)
LOG_ERROR("Radiolib error %d when attempting SX126X setPreambleLength!\n", err);
assert(err == RADIOLIB_ERR_NONE); assert(err == RADIOLIB_ERR_NONE);
err = lora.setFrequency(getFreq()); err = lora.setFrequency(getFreq());
@ -197,6 +203,8 @@ template <typename T> bool SX126xInterface<T>::reconfigure()
power = SX126X_MAX_POWER; power = SX126X_MAX_POWER;
err = lora.setOutputPower(power); err = lora.setOutputPower(power);
if (err != RADIOLIB_ERR_NONE)
LOG_ERROR("Radiolib error %d when attempting SX126X setOutputPower!\n", err);
assert(err == RADIOLIB_ERR_NONE); assert(err == RADIOLIB_ERR_NONE);
startReceive(); // restart receiving startReceive(); // restart receiving
@ -215,10 +223,8 @@ template <typename T> void SX126xInterface<T>::setStandby()
int err = lora.standby(); int err = lora.standby();
if (err != RADIOLIB_ERR_NONE) { if (err != RADIOLIB_ERR_NONE)
LOG_DEBUG("SX126x standby failed with error %d\n", err); LOG_DEBUG("SX126x standby failed with error %d\n", err);
}
assert(err == RADIOLIB_ERR_NONE); assert(err == RADIOLIB_ERR_NONE);
isReceiving = false; // If we were receiving, not any more isReceiving = false; // If we were receiving, not any more
@ -260,6 +266,8 @@ template <typename T> void SX126xInterface<T>::startReceive()
int err = lora.startReceiveDutyCycleAuto(preambleLength, 8, int err = lora.startReceiveDutyCycleAuto(preambleLength, 8,
RADIOLIB_SX126X_IRQ_RX_DEFAULT | RADIOLIB_SX126X_IRQ_PREAMBLE_DETECTED | RADIOLIB_SX126X_IRQ_RX_DEFAULT | RADIOLIB_SX126X_IRQ_PREAMBLE_DETECTED |
RADIOLIB_SX126X_IRQ_HEADER_VALID); RADIOLIB_SX126X_IRQ_HEADER_VALID);
if (err != RADIOLIB_ERR_NONE)
LOG_ERROR("Radiolib error %d when attempting SX126X startReceiveDutyCycleAuto!\n", err);
assert(err == RADIOLIB_ERR_NONE); assert(err == RADIOLIB_ERR_NONE);
isReceiving = true; isReceiving = true;
@ -279,7 +287,8 @@ template <typename T> bool SX126xInterface<T>::isChannelActive()
result = lora.scanChannel(); result = lora.scanChannel();
if (result == RADIOLIB_LORA_DETECTED) if (result == RADIOLIB_LORA_DETECTED)
return true; return true;
if (result != RADIOLIB_ERR_WRONG_MODEM)
LOG_ERROR("Radiolib error %d when attempting SX126X scanChannel!\n", result);
assert(result != RADIOLIB_ERR_WRONG_MODEM); assert(result != RADIOLIB_ERR_WRONG_MODEM);
return false; return false;

View File

@ -126,9 +126,13 @@ template <typename T> bool SX128xInterface<T>::reconfigure()
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING); RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
err = lora.setSyncWord(syncWord); err = lora.setSyncWord(syncWord);
if (err != RADIOLIB_ERR_NONE)
LOG_ERROR("Radiolib error %d when attempting SX128X setSyncWord!\n", err);
assert(err == RADIOLIB_ERR_NONE); assert(err == RADIOLIB_ERR_NONE);
err = lora.setPreambleLength(preambleLength); err = lora.setPreambleLength(preambleLength);
if (err != RADIOLIB_ERR_NONE)
LOG_ERROR("Radiolib error %d when attempting SX128X setPreambleLength!\n", err);
assert(err == RADIOLIB_ERR_NONE); assert(err == RADIOLIB_ERR_NONE);
err = lora.setFrequency(getFreq()); err = lora.setFrequency(getFreq());
@ -139,6 +143,8 @@ template <typename T> bool SX128xInterface<T>::reconfigure()
power = SX128X_MAX_POWER; power = SX128X_MAX_POWER;
err = lora.setOutputPower(power); err = lora.setOutputPower(power);
if (err != RADIOLIB_ERR_NONE)
LOG_ERROR("Radiolib error %d when attempting SX128X setOutputPower!\n", err);
assert(err == RADIOLIB_ERR_NONE); assert(err == RADIOLIB_ERR_NONE);
startReceive(); // restart receiving startReceive(); // restart receiving
@ -162,10 +168,8 @@ template <typename T> void SX128xInterface<T>::setStandby()
int err = lora.standby(); int err = lora.standby();
if (err != RADIOLIB_ERR_NONE) { if (err != RADIOLIB_ERR_NONE)
LOG_ERROR("SX128x standby failed with error %d\n", err); LOG_ERROR("SX128x standby failed with error %d\n", err);
}
assert(err == RADIOLIB_ERR_NONE); assert(err == RADIOLIB_ERR_NONE);
#if ARCH_PORTDUINO #if ARCH_PORTDUINO
if (settingsMap[rxen] != RADIOLIB_NC) { if (settingsMap[rxen] != RADIOLIB_NC) {
@ -255,6 +259,8 @@ template <typename T> void SX128xInterface<T>::startReceive()
lora.startReceive(RADIOLIB_SX128X_RX_TIMEOUT_INF, RADIOLIB_SX128X_IRQ_RX_DEFAULT | RADIOLIB_SX128X_IRQ_PREAMBLE_DETECTED | lora.startReceive(RADIOLIB_SX128X_RX_TIMEOUT_INF, RADIOLIB_SX128X_IRQ_RX_DEFAULT | RADIOLIB_SX128X_IRQ_PREAMBLE_DETECTED |
RADIOLIB_SX128X_IRQ_HEADER_VALID); RADIOLIB_SX128X_IRQ_HEADER_VALID);
if (err != RADIOLIB_ERR_NONE)
LOG_ERROR("Radiolib error %d when attempting SX128X startReceive!\n", err);
assert(err == RADIOLIB_ERR_NONE); assert(err == RADIOLIB_ERR_NONE);
isReceiving = true; isReceiving = true;
@ -274,7 +280,8 @@ template <typename T> bool SX128xInterface<T>::isChannelActive()
result = lora.scanChannel(); result = lora.scanChannel();
if (result == RADIOLIB_LORA_DETECTED) if (result == RADIOLIB_LORA_DETECTED)
return true; return true;
if (result != RADIOLIB_ERR_WRONG_MODEM)
LOG_ERROR("Radiolib error %d when attempting SX128X scanChannel!\n", result);
assert(result != RADIOLIB_ERR_WRONG_MODEM); assert(result != RADIOLIB_ERR_WRONG_MODEM);
return false; return false;