From 65c3eb7481ba3d78ced475423ffb394797d77a67 Mon Sep 17 00:00:00 2001 From: sh123 Date: Sat, 10 Dec 2022 11:20:19 +0200 Subject: [PATCH] Do not clear dio action if it is not set --- loraprs_service.cpp | 7 +++++-- loraprs_service.h | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/loraprs_service.cpp b/loraprs_service.cpp index 6356794..f1d6497 100644 --- a/loraprs_service.cpp +++ b/loraprs_service.cpp @@ -12,6 +12,7 @@ Service::Service() , csmaSlotTime_(CfgCsmaSlotTimeMs) , csmaSlotTimePrev_(0) , rigCurrentTxPacketSize_(0) + , isIsrInstalled_(false) , serialBt_() , serialBLE_() , kissServer_(new WiFiServer(CfgKissPort)) @@ -226,13 +227,15 @@ void Service::setupRig(long loraFreq, long bw, int sf, int cr, int pwr, int sync #pragma message("Using SX126X") LOG_INFO("Using SX126X module"); rig_->setRfSwitchPins(config_.LoraPinSwitchRx, config_.LoraPinSwitchTx); - rig_->clearDio1Action(); + if (isIsrInstalled_) rig_->clearDio1Action(); rig_->setDio1Action(onRigIsrRxPacket); + isIsrInstalled_ = true; #else #pragma message("Using SX127X") LOG_INFO("Using SX127X module"); - radio_->clearDio0Action(); + if (isIsrInstalled_) radio_->clearDio0Action(); radio_->setDio0Action(onRigIsrRxPacket); + isIsrInstalled_ = true; #endif if (rigIsImplicitMode_) { diff --git a/loraprs_service.h b/loraprs_service.h index 9f66c19..ef91b87 100644 --- a/loraprs_service.h +++ b/loraprs_service.h @@ -154,6 +154,7 @@ private: static volatile bool rigIsRxIsrEnabled_; bool rigIsImplicitMode_; int rigCurrentTxPacketSize_; + bool isIsrInstalled_; CircularBuffer rigTxQueue_; CircularBuffer rigTxQueueIndex_; std::shared_ptr rig_;