kopia lustrzana https://github.com/Hamlib/Hamlib
Fix caching math...helps when you get the units right...nanoseconds...not microseconds
https://github.com/Hamlib/Hamlib/issues/228pull/236/head
rodzic
baa3787bc5
commit
b244fe234c
16
src/misc.c
16
src/misc.c
|
@ -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; }
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Ładowanie…
Reference in New Issue