diff options
-rw-r--r-- | fxotune.c | 16 |
1 files changed, 13 insertions, 3 deletions
@@ -100,12 +100,22 @@ static int debug = 0; static int ensure_silence(struct silence_info *info) { struct timeval tv; - long elapsedms; + long int elapsedms; gettimeofday(&tv, NULL); - elapsedms = ((tv.tv_sec - info->last_reset.tv_sec) * 1000L + (tv.tv_usec - info->last_reset.tv_usec)); + + if (info->last_reset.tv_sec == 0) { + /* this is the first request, we will force it to run */ + elapsedms = -1; + } else { + /* this is not the first request, we will compute elapsed time */ + elapsedms = ((tv.tv_sec - info->last_reset.tv_sec) * 1000L + (tv.tv_usec - info->last_reset.tv_usec) / 1000L); + } + if (debug > 4) { + fprintf(stdout, "Reset line request received - elapsed ms = %li / reset after = %ld\n", elapsedms, info->reset_after * 1000L); + } - if (elapsedms < info->reset_after * 1000) + if (elapsedms > 0 && elapsedms < info->reset_after * 1000L) return 0; if (debug > 1){ |