From 987a83184b1b236a1cef9ecdd126dbf941bf2e71 Mon Sep 17 00:00:00 2001 From: sh123 Date: Tue, 26 Oct 2021 15:34:08 +0300 Subject: [PATCH] Improve and refactor --- kiss_processor.cpp | 4 ++-- loraprs_service.cpp | 32 ++++++++++++++++++-------------- loraprs_service.h | 1 + 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/kiss_processor.cpp b/kiss_processor.cpp index f67ff2d..111b911 100644 --- a/kiss_processor.cpp +++ b/kiss_processor.cpp @@ -221,12 +221,12 @@ bool Processor::receiveByteRaw(byte rxByte) } isRawIdle_ = false; } - onRigTx(rxByte); // NOTE, TNC2 uses \n as a packet delimiter if (rxByte == '\n') { - onRigTx('\0'); onRigTxEnd(); isRawIdle_ = true; + } else { + onRigTx(rxByte); } return true; } diff --git a/loraprs_service.cpp b/loraprs_service.cpp index 76554a0..d8416e2 100644 --- a/loraprs_service.cpp +++ b/loraprs_service.cpp @@ -447,13 +447,29 @@ bool Service::sendAX25ToLora(const AX25::Payload &payload) } void Service::onRigPacket(void *packet, int packetLength) -{ +{ + if (config_.EnableAutoFreqCorrection) { + performFrequencyCorrection(); + } + if (config_.KissEnableExtensions) { +#ifdef USE_RADIOLIB + sendSignalReportEvent(radio_->getRSSI(), radio_->getSNR()); +#else + sendSignalReportEvent(LoRa.packetRssi(), LoRa.packetSnr()); +#endif + } + if (!config_.IsClientMode) { + processIncomingRawPacketAsServer((const byte*)packet, packetLength); + } +} + +void Service::performFrequencyCorrection() { #ifdef USE_RADIOLIB long frequencyErrorHz = radio_->getFrequencyError(); #else long frequencyErrorHz = LoRa.packetFrequencyError(); #endif - if (config_.EnableAutoFreqCorrection && abs(frequencyErrorHz) > config_.AutoFreqCorrectionDeltaHz) { + if (abs(frequencyErrorHz) > config_.AutoFreqCorrectionDeltaHz) { config_.LoraFreq -= frequencyErrorHz; LOG_INFO("Correcting frequency:", frequencyErrorHz); #ifdef USE_RADIOLIB @@ -470,18 +486,6 @@ void Service::onRigPacket(void *packet, int packetLength) } #endif } - - if (config_.KissEnableExtensions) { -#ifdef USE_RADIOLIB - sendSignalReportEvent(radio_->getRSSI(), radio_->getSNR()); -#else - sendSignalReportEvent(LoRa.packetRssi(), LoRa.packetSnr()); -#endif - } - - if (!config_.IsClientMode) { - processIncomingRawPacketAsServer((const byte*)packet, packetLength); - } } #ifndef USE_RADIOLIB diff --git a/loraprs_service.h b/loraprs_service.h index dd94a94..e234685 100644 --- a/loraprs_service.h +++ b/loraprs_service.h @@ -61,6 +61,7 @@ private: void sendToAprsis(const String &aprsMessage); bool sendAX25ToLora(const AX25::Payload &payload); void processIncomingRawPacketAsServer(const byte *packet, int packetLength); + void performFrequencyCorrection(); inline bool needsAprsis() const { return !config_.IsClientMode // only in server mode