Replace Sleep with changed interval

This commit is contained in:
Arvo Järve 2021-07-27 11:09:04 +03:00
parent 556a818d9b
commit 2fedeca652
2 changed files with 27 additions and 29 deletions

View file

@ -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);

View file

@ -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_;