https://bugs.kde.org/show_bug.cgi?id=410094

--- Comment #13 from James Lancaster <deathstal...@gmail.com> ---
So different periods do affect how often it gets triggered. 

However, when I tried set at down at 100ms (really more like 200-250ish) and
locally 17/25 instances encounter it. If it's at 1 second, maybe 1/10 do. 

I did try last night, with the timer idea, set for 1 second (oneshot and
isactive checks right after the m_hasSlewStarted.) That *masks* the issue, but
the erroneous IPS_BUSY is still being processed. Which has to be somewhere
where kstars is setting it internally, because it's not on the wire. (As shown
with wireshark)


Solving: 
I do see nvp->s = IPS_BUSY in indiproperty.cpp, could that or something like
that be causing it? (I haven't yet gone through and checked why that's being
set. Actually, that might make sense if it were: it's in sendText, and that
seems like there might be when updating, but not something actually passed to
INDI? )


As far as masking the issue: 
Thinking on it, I'm not sure that the Timer is a good idea, because in the
event that the slew is < timer, only one IPS_OK, should be emitted. Hrm. 

Oh, an idea that might mask it better, and not mess up like the solution that
works for me: The settle timer is ALSO updated if IPS_BUSY is noted? (Or the
IPS_OK, which starts it now) is called. (Note that this was come up with on the
fly and I haven't tested.)

QTimer maybeMasking; in header
When ALIGN_SYNCING is called, it sets up. 
maybeMasking.setSingleShot();
maybeMasking.setInterval(delaySpin->value());
connect(&maybeMasking, &QTimer::timeout, this, &Ekos::Align::captureAndSolve);

However, it doesn't start it, that's done with:
ALIGN_SLEWING, where currently it has this: 
                            if (delaySpin->value() >= DELAY_THRESHOLD_NOTIFY)
                                appendLogText(i18n("Settling..."));
                            QTimer::singleShot(delaySpin->value(), this,
&Ekos::Align::captureAndSolve);

Replace that with 
                            if (delaySpin->value() >= DELAY_THRESHOLD_NOTIFY)
                                appendLogText(i18n("Settling..."));
                            maybeMasking.start()


Then in IPS_BUSY it becomes :
case IPS_BUSY:
    m_wasSlewStarted = true;
    if (maybeMasking.isActive()){
        maybeMasking.start()
        if (showbug410094 == true) 
          appendLogText(i18n("Bug 410094 masking..."));
    }

Which would reset it. (And if the optional and silly showbug... is shown, it
would also leave a log of when it happened.) 


As an aside, how many other drivers can use the mount model? I know Eqmod can,
but I'm not sure of others to compare with just to make sure that the INDI
driver isn't the cause, which I'm 99%+ sure isn't the case because of
wireshark, but still?

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to