Fix crash if radio settings where changed while the radio was not initialized

This commit is contained in:
Thomas Basler 2023-03-09 18:57:22 +01:00
parent de2b7ab2d2
commit 83c623708f
3 changed files with 25 additions and 9 deletions

View File

@ -40,13 +40,8 @@ void HoymilesClass::initCMT(int8_t pin_sdio, int8_t pin_clk, int8_t pin_cs, int8
void HoymilesClass::loop()
{
HOY_SEMAPHORE_TAKE();
if (_radioNrf->isInitialized()) {
_radioNrf->loop();
}
if (_radioCmt->isInitialized()) {
_radioCmt->loop();
}
if (getNumInverters() > 0) {
if (millis() - _lastPoll > (_pollInterval * 1000)) {

View File

@ -357,6 +357,9 @@ void HoymilesRadio_CMT::init(int8_t pin_sdio, int8_t pin_clk, int8_t pin_cs, int
void HoymilesRadio_CMT::loop()
{
if (!_isInitialized) {
return;
}
enumCMTresult mCMTstate = cmtProcess();
if (mCMTstate != CMT_RX_DONE) { // Perform package parsing only if no packages are received
@ -450,6 +453,9 @@ void HoymilesRadio_CMT::loop()
bool HoymilesRadio_CMT::isConnected()
{
if (!_isInitialized) {
return false;
}
return _ChipConnected;
}

View File

@ -38,6 +38,10 @@ void HoymilesRadio_NRF::init(SPIClass* initialisedSpiBus, uint8_t pinCE, uint8_t
void HoymilesRadio_NRF::loop()
{
if (!_isInitialized) {
return;
}
EVERY_N_MILLIS(4)
{
switchRxCh();
@ -151,22 +155,35 @@ void HoymilesRadio_NRF::loop()
void HoymilesRadio_NRF::setPALevel(rf24_pa_dbm_e paLevel)
{
if (!_isInitialized) {
return;
}
_radio->setPALevel(paLevel);
}
void HoymilesRadio_NRF::setDtuSerial(uint64_t serial)
{
HoymilesRadio::setDtuSerial(serial);
if (!_isInitialized) {
return;
}
openReadingPipe();
}
bool HoymilesRadio_NRF::isConnected()
{
if (!_isInitialized) {
return false;
}
return _radio->isChipConnected();
}
bool HoymilesRadio_NRF::isPVariant()
{
if (!_isInitialized) {
return false;
}
return _radio->isPVariant();
}
@ -210,8 +227,6 @@ void HoymilesRadio_NRF::switchRxCh()
_radio->startListening();
}
void HoymilesRadio_NRF::sendEsbPacket(CommandAbstract* cmd)
{
cmd->incrementSendCount();