From 2fedeca652f061891abd42aaa0b8ef73bba59c0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arvo=20J=C3=A4rve?= Date: Tue, 27 Jul 2021 11:09:04 +0300 Subject: [PATCH] Replace Sleep with changed interval --- PollingTransceiver.cpp | 55 ++++++++++++++++++++---------------------- PollingTransceiver.hpp | 1 + 2 files changed, 27 insertions(+), 29 deletions(-) diff --git a/PollingTransceiver.cpp b/PollingTransceiver.cpp index 9ffdd176..ae2e8f6b 100644 --- a/PollingTransceiver.cpp +++ b/PollingTransceiver.cpp @@ -19,6 +19,7 @@ namespace PollingTransceiver::PollingTransceiver (int poll_interval, QObject * parent) : TransceiverBase {parent} , interval_ { (poll_interval & 0x7fff) == 0 ? 500 : (poll_interval & 0x7fff) * 1000} + , set_interval_ {interval_} , poll_timer_ {nullptr} , ft4_mode_ {false} , fast_mode_ {interval_ == 500} @@ -89,25 +90,13 @@ void PollingTransceiver::do_post_start (JTDXDateTime * jtdxtime) fprintf (pFile,"%s Poll start ms %lld %d\n",m_jtdxtime->currentDateTimeUtc2().toString("hh:mm:ss.zzz").toStdString().c_str(),ms,sec); fclose (pFile); #endif - if (fast_mode_) { - if (ms < 300) - QThread::msleep (300 - ms); - else if (ms > 330 && ms < 800 ) - QThread::msleep (800 - ms); - else if (ms > 830) - QThread::msleep (1300 - ms); - } - else if (ft4_mode_ && (sec == 5 || sec == 6 || sec == 7 || sec == 8 || sec == 9 || sec == 10 || sec == 11)) { - if (ms < 800) - QThread::msleep (800-ms); - else if (ms > 830) - QThread::msleep (1800-ms); + if (ft4_mode_ && (sec == 7 || sec == 8 || sec == 9 || sec == 10 || sec == 11 || sec == 12 || sec == 13)) { + if (ms < 500) + interval_ = 500; } else { - if (ms < 300) - QThread::msleep (300-ms); - else if (ms > 330) - QThread::msleep (1300-ms); + if (ms > 500) + interval_ = 500; } start_timer (); if (!next_state_.online ()) @@ -213,7 +202,7 @@ void PollingTransceiver::handle_timeout () if (m_jtdxtime == nullptr) { #if JTDX_DEBUG_TO_FILE FILE * pFile = fopen (debug_file_.c_str(),"a"); - fprintf(pFile," Poll start retries=%d fast_mode=%d ft4_mode=%d\n",retries_,fast_mode_,ft4_mode_); + fprintf(pFile," Poll start interval= %d retries=%d fast_mode=%d ft4_mode=%d\n",interval_,retries_,fast_mode_,ft4_mode_); fclose (pFile); #endif offline ("Polling destroyed"); @@ -222,26 +211,34 @@ void PollingTransceiver::handle_timeout () { int sec = m_jtdxtime->currentDateTimeUtc2().toString("ss").toInt() % 15; auto ms = m_jtdxtime->currentMSecsSinceEpoch2() % 1000; -// printf("%s %d Poll start retries=%d fast_mode=%d ft4_mode=%d sec=%d ms=%lld\n",m_jtdxtime->currentDateTimeUtc2().toString("hh:mm:ss.zzz").toStdString().c_str(),sec,retries_,fast_mode_,ft4_mode_,sec,ms); +// printf("%s %d Poll start interval=%d retries=%d fast_mode=%d ft4_mode=%d sec=%d ms=%lld\n",m_jtdxtime->currentDateTimeUtc2().toString("hh:mm:ss.zzz").toStdString().c_str(),sec,interval_,retries_,fast_mode_,ft4_mode_,sec,ms); #if JTDX_DEBUG_TO_FILE FILE * pFile = fopen (debug_file_.c_str(),"a"); - fprintf(pFile,"%s %d Poll start retries=%d fast_mode=%d ft4_mode=%d sec=%d ms=%lld\n",m_jtdxtime->currentDateTimeUtc2().toString("hh:mm:ss.zzz").toStdString().c_str(),sec,retries_,fast_mode_,ft4_mode_,sec,ms); + fprintf(pFile,"%s %d Poll start interval=%d retries=%d fast_mode=%d ft4_mode=%d sec=%d ms=%lld\n",m_jtdxtime->currentDateTimeUtc2().toString("hh:mm:ss.zzz").toStdString().c_str(),sec,interval_,retries_,fast_mode_,ft4_mode_,sec,ms); fclose (pFile); #endif if (!ft4_mode_ && !fast_mode_) { - if (ms < 300) {poll_timer_->stop (); QThread::msleep (300 - ms); poll_timer_->start (interval_);} - else if (ms > 330) {poll_timer_->stop (); QThread::msleep (1300 - ms); poll_timer_->start (interval_);} - } else if (!fast_mode_) { - if ((sec == 6 || sec == 7 || sec == 8 || sec == 9 || sec == 10 || sec == 11 || sec == 12) && ms < 800) { - poll_timer_->stop (); QThread::msleep (800 - ms); poll_timer_->start (interval_); - } else if (sec == 13 || sec == 14 || sec == 0 || sec == 1 || sec == 2 || sec == 3 || sec == 4 || sec == 5) { - if (ms < 300) {poll_timer_->stop (); QThread::msleep (300 - ms); poll_timer_->start (interval_);} - else if (ms > 330) {poll_timer_->stop (); QThread::msleep (1300 - ms); poll_timer_->start (interval_);} + if (ms >= 500) interval_ = 500; else interval_ = set_interval_; + } else if (ft4_mode_) { + if (sec == 7 || sec == 8 || sec == 9 || sec == 10 || sec == 11 || sec == 12) { + if (ms < 500) interval_ = 500; else interval_ = set_interval_; + } else if (sec == 6){ + if (ms < 500) interval_ = 1500; else interval_ = set_interval_; + } else if (sec == 13){ + if (ms >= 500) interval_ = 1500; else interval_ = set_interval_; + } else { + if (ms >= 500) interval_ = 500; else interval_ = set_interval_; } + } + if (interval_ != poll_timer_->interval()) { + poll_timer_->stop (); + poll_timer_->start (interval_); +// printf("New interval %d ",interval_); } + // printf("%s %d Poll start retries=%d fast_mode=%d ft4_mode=%d sec=%d ms=%lld\n",m_jtdxtime->currentDateTimeUtc2().toString("hh:mm:ss.zzz").toStdString().c_str(),sec,retries_,fast_mode_,ft4_mode_,sec,ms); do_poll (); // tell sub-classes to update our state -// printf("%s %d Poll end ",m_jtdxtime->currentDateTimeUtc2().toString("hh:mm:ss.zzz").toStdString().c_str(),sec); + printf("%s %d Poll end ",m_jtdxtime->currentDateTimeUtc2().toString("hh:mm:ss.zzz").toStdString().c_str(),sec); #if JTDX_DEBUG_TO_FILE pFile = fopen (debug_file_.c_str(),"a"); fprintf(pFile,"%s %d Poll end ",m_jtdxtime->currentDateTimeUtc2().toString("hh:mm:ss.zzz").toStdString().c_str(),sec); diff --git a/PollingTransceiver.hpp b/PollingTransceiver.hpp index 224fdc2f..22891b85 100644 --- a/PollingTransceiver.hpp +++ b/PollingTransceiver.hpp @@ -59,6 +59,7 @@ private: Q_SLOT void handle_timeout (); int interval_; // polling interval in milliseconds + int set_interval_; QTimer * poll_timer_; bool ft4_mode_; bool fast_mode_;