Fix caching math...helps when you get the units right...nanoseconds...not microseconds

https://github.com/Hamlib/Hamlib/issues/228
pull/236/head
mdblack98 2020-05-02 17:32:37 -05:00
rodzic baa3787bc5
commit b244fe234c
2 zmienionych plików z 13 dodań i 9 usunięć

Wyświetl plik

@ -1267,7 +1267,10 @@ int HAMLIB_API elapsed_ms(struct timespec *start, int option)
switch (option)
{
case ELAPSED_GET:
if (start->tv_nsec == 0) { return 1000000; } // if we haven't done SET yet
if (start->tv_nsec == 0) { // if we haven't done SET yet
clock_gettime(CLOCK_REALTIME, start);
return 1000 * 1000;
}
clock_gettime(CLOCK_REALTIME, &stop);
break;
@ -1275,16 +1278,17 @@ int HAMLIB_API elapsed_ms(struct timespec *start, int option)
clock_gettime(CLOCK_REALTIME, start);
rig_debug(RIG_DEBUG_TRACE, "%s: after gettime, start = %ld,%ld\n", __func__,
(long)start->tv_sec, (long)start->tv_nsec);
return 999 * 1000; // so we can tell the difference in debug where we came from
break;
case ELAPSED_INVALIDATE: // we take care of this below
case ELAPSED_INVALIDATE:
start->tv_sec -= 3600*24*365; // let's back off 1 year -- should expire most elapsed measurements
break;
}
elapsed_msec = ((stop.tv_sec - start->tv_sec) + (stop.tv_nsec/1e9 -
start->tv_nsec/1e9)) / 1e3;
elapsed_msec = ((stop.tv_sec - start->tv_sec) + ((stop.tv_nsec -
start->tv_nsec) / 1e6)) / 1e3;
rig_debug(RIG_DEBUG_TRACE, "%s: elapse_secs=%g\n", __func__, elapsed_msec);
rig_debug(RIG_DEBUG_TRACE, "%s: elapsed_secs=%g\n", __func__, elapsed_msec);
if (elapsed_msec < 0 || option == ELAPSED_INVALIDATE) { return 1000000; }

Wyświetl plik

@ -1345,7 +1345,7 @@ int HAMLIB_API rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
}
else
{
rig_debug(RIG_DEBUG_TRACE, "%s: cache miss age=%dms\n", __func__, cache_ms);
rig_debug(RIG_DEBUG_TRACE, "%s: cache miss age=%dms, cached_vfo=%s, asked_vfo=%s\n", __func__, cache_ms, rig_strvfo(rig->state.cache.vfo_freq), rig_strvfo(vfo));
}
caps = rig->caps;
@ -1410,7 +1410,7 @@ int HAMLIB_API rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
cache_ms = elapsed_ms(&(rig->state.cache.time_freq), ELAPSED_SET);
rig_debug(RIG_DEBUG_TRACE, "%s: cache reset age=%dm, vfo=%s, freq=%g\n",
rig_debug(RIG_DEBUG_TRACE, "%s: cache reset age=%dms, vfo=%s, freq=%g\n",
__func__, cache_ms, rig_strvfo(vfo), *freq);
rig->state.cache.freq = *freq;
rig->state.cache.vfo_freq = vfo;
@ -1812,7 +1812,7 @@ int HAMLIB_API rig_set_vfo(RIG *rig, vfo_t vfo)
}
// we need to update our internal freq to avoid getting detected as twiddling
if (caps->get_freq) { retcode = rig_get_freq(rig, RIG_VFO_CURR, &curr_freq); }
if (caps->get_freq) { retcode = rig_get_freq(rig, vfo, &curr_freq); }
rig->state.cache.vfo = vfo;
// expire several cached items when we switch VFOs