[hamradio-commits] [dump1090] 328/373: Add --stats-every <secs> option.

Matthew Ernisse mernisse-guest at moszumanska.debian.org
Thu Oct 23 14:58:33 UTC 2014


This is an automated email from the git hooks/post-receive script.

mernisse-guest pushed a commit to branch backport
in repository dump1090.

commit 10061675dede41ab05f92eed0d60dee1db991c27
Author: Oliver Jowett <oliver at mutability.co.uk>
Date:   Thu Sep 25 20:33:50 2014 +0100

    Add --stats-every <secs> option.
    
    Periodically displays and resets stats.
    Useful for unattended operation.
---
 dump1090.c | 119 ++++++++++++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 87 insertions(+), 32 deletions(-)

diff --git a/dump1090.c b/dump1090.c
index b3bef28..c129fd4 100644
--- a/dump1090.c
+++ b/dump1090.c
@@ -428,6 +428,7 @@ void showHelp(void) {
 "--aggressive             More CPU for more messages (two bits fixes, ...)\n"
 "--mlat                   display raw messages in Beast ascii mode\n"
 "--stats                  With --ifile print stats at exit. No other output\n"
+"--stats-every <seconds>  Show and reset stats every <seconds> seconds\n"
 "--onlyaddr               Show only ICAO addresses (testing purposes)\n"
 "--metric                 Use metric units (meters, km/h, ...)\n"
 "--snip <level>           Strip IQ file removing samples < level\n"
@@ -480,6 +481,77 @@ void showCopyright(void) {
   while (llTime >= time(NULL)) {}
 }
 #endif
+
+
+static void display_stats(void) {
+    int j;
+    time_t now = time(NULL);
+
+    printf("\n\n");
+    if (Modes.interactive)
+        interactiveShowData();
+
+    printf("Statistics as at %s", ctime(&now));
+
+    printf("%d ModeA/C detected\n",                           Modes.stat_ModeAC);
+    printf("%d valid Mode-S preambles\n",                     Modes.stat_valid_preamble);
+    printf("%d DF-?? fields corrected for length\n",          Modes.stat_DF_Len_Corrected);
+    printf("%d DF-?? fields corrected for type\n",            Modes.stat_DF_Type_Corrected);
+    printf("%d demodulated with 0 errors\n",                  Modes.stat_demodulated0);
+    printf("%d demodulated with 1 error\n",                   Modes.stat_demodulated1);
+    printf("%d demodulated with 2 errors\n",                  Modes.stat_demodulated2);
+    printf("%d demodulated with > 2 errors\n",                Modes.stat_demodulated3);
+    printf("%d with good crc\n",                              Modes.stat_goodcrc);
+    printf("%d with bad crc\n",                               Modes.stat_badcrc);
+    printf("%d errors corrected\n",                           Modes.stat_fixed);
+
+    Modes.stat_ModeAC =
+        Modes.stat_valid_preamble =
+        Modes.stat_DF_Len_Corrected =
+        Modes.stat_DF_Type_Corrected =
+        Modes.stat_demodulated0 =
+        Modes.stat_demodulated1 =
+        Modes.stat_demodulated2 =
+        Modes.stat_demodulated3 =
+        Modes.stat_goodcrc =
+        Modes.stat_badcrc =
+        Modes.stat_fixed = 0;
+
+    for (j = 0;  j < MODES_MAX_BITERRORS;  j++) {
+        printf("   %d with %d bit %s\n", Modes.stat_bit_fix[j], j+1, (j==0)?"error":"errors");
+        Modes.stat_bit_fix[j] = 0;
+    }
+
+    if (Modes.phase_enhance) {
+        printf("%d phase enhancement attempts\n",                 Modes.stat_out_of_phase);
+        printf("%d phase enhanced demodulated with 0 errors\n",   Modes.stat_ph_demodulated0);
+        printf("%d phase enhanced demodulated with 1 error\n",    Modes.stat_ph_demodulated1);
+        printf("%d phase enhanced demodulated with 2 errors\n",   Modes.stat_ph_demodulated2);
+        printf("%d phase enhanced demodulated with > 2 errors\n", Modes.stat_ph_demodulated3);
+        printf("%d phase enhanced with good crc\n",               Modes.stat_ph_goodcrc);
+        printf("%d phase enhanced with bad crc\n",                Modes.stat_ph_badcrc);
+        printf("%d phase enhanced errors corrected\n",            Modes.stat_ph_fixed);
+
+        Modes.stat_out_of_phase =
+            Modes.stat_ph_demodulated0 =
+            Modes.stat_ph_demodulated1 =
+            Modes.stat_ph_demodulated2 =
+            Modes.stat_ph_demodulated3 =
+            Modes.stat_ph_goodcrc =
+            Modes.stat_ph_badcrc =
+            Modes.stat_ph_fixed = 0;
+
+        for (j = 0;  j < MODES_MAX_BITERRORS;  j++) {
+            printf("   %d with %d bit %s\n", Modes.stat_ph_bit_fix[j], j+1, (j==0)?"error":"errors");
+            Modes.stat_ph_bit_fix[j] = 0;
+        }
+    }
+
+    printf("%d total usable messages\n",                      Modes.stat_goodcrc + Modes.stat_ph_goodcrc + Modes.stat_fixed + Modes.stat_ph_fixed);
+    fflush(stdout);
+}
+
+
 //
 //=========================================================================
 //
@@ -488,6 +560,8 @@ void showCopyright(void) {
 // from the net, refreshing the screen in interactive mode, and so forth
 //
 void backgroundTasks(void) {
+    static time_t next_stats;
+
     if (Modes.net) {
         modesReadFromClients();
     }    
@@ -501,6 +575,15 @@ void backgroundTasks(void) {
     if (Modes.interactive) {
         interactiveShowData();
     }
+
+    if (Modes.stats > 0) {
+        time_t now = time(NULL);
+        if (now > next_stats) {
+            if (next_stats != 0)
+                display_stats();
+            next_stats = now + Modes.stats;
+        }
+    }
 }
 //
 //=========================================================================
@@ -665,7 +748,9 @@ int main(int argc, char **argv) {
                 f++;
             }
         } else if (!strcmp(argv[j],"--stats")) {
-            Modes.stats = 1;
+            Modes.stats = -1;
+        } else if (!strcmp(argv[j],"--stats-every") && more) {
+            Modes.stats = atoi(argv[++j]);
         } else if (!strcmp(argv[j],"--snip") && more) {
             snipMode(atoi(argv[++j]));
             exit(0);
@@ -779,37 +864,7 @@ int main(int argc, char **argv) {
 
     // If --stats were given, print statistics
     if (Modes.stats) {
-        printf("\n\n");
-        if (Modes.interactive)
-            interactiveShowData();
-        printf("%d ModeA/C detected\n",                           Modes.stat_ModeAC);
-        printf("%d valid Mode-S preambles\n",                     Modes.stat_valid_preamble);
-        printf("%d DF-?? fields corrected for length\n",          Modes.stat_DF_Len_Corrected);
-        printf("%d DF-?? fields corrected for type\n",            Modes.stat_DF_Type_Corrected);
-        printf("%d demodulated with 0 errors\n",                  Modes.stat_demodulated0);
-        printf("%d demodulated with 1 error\n",                   Modes.stat_demodulated1);
-        printf("%d demodulated with 2 errors\n",                  Modes.stat_demodulated2);
-        printf("%d demodulated with > 2 errors\n",                Modes.stat_demodulated3);
-        printf("%d with good crc\n",                              Modes.stat_goodcrc);
-        printf("%d with bad crc\n",                               Modes.stat_badcrc);
-        printf("%d errors corrected\n",                           Modes.stat_fixed);
-        for (j = 0;  j < MODES_MAX_BITERRORS;  j++) {
-            printf("   %d with %d bit %s\n", Modes.stat_bit_fix[j], j+1, (j==0)?"error":"errors");
-        }
-        if (Modes.phase_enhance) {
-            printf("%d phase enhancement attempts\n",                 Modes.stat_out_of_phase);
-            printf("%d phase enhanced demodulated with 0 errors\n",   Modes.stat_ph_demodulated0);
-            printf("%d phase enhanced demodulated with 1 error\n",    Modes.stat_ph_demodulated1);
-            printf("%d phase enhanced demodulated with 2 errors\n",   Modes.stat_ph_demodulated2);
-            printf("%d phase enhanced demodulated with > 2 errors\n", Modes.stat_ph_demodulated3);
-            printf("%d phase enhanced with good crc\n",               Modes.stat_ph_goodcrc);
-            printf("%d phase enhanced with bad crc\n",                Modes.stat_ph_badcrc);
-            printf("%d phase enhanced errors corrected\n",            Modes.stat_ph_fixed);
-            for (j = 0;  j < MODES_MAX_BITERRORS;  j++) {
-                printf("   %d with %d bit %s\n", Modes.stat_ph_bit_fix[j], j+1, (j==0)?"error":"errors");
-            }
-        }
-        printf("%d total usable messages\n",                      Modes.stat_goodcrc + Modes.stat_ph_goodcrc + Modes.stat_fixed + Modes.stat_ph_fixed);
+        display_stats();
     }
 
     if (Modes.filename == NULL) {

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/dump1090.git



More information about the pkg-hamradio-commits mailing list