Hi all

Since I tend to leave my nova-t card streaming for excessive periods of
time, to test signal strength, I wrote a patch against CVS version of
dvbtune. Ive added two command line switches
        -d      causes each line to be prefixed with the date in c-locale
                %c and in seconds since epoche:

1042164232      Fri Jan 10 02:03:52 2003        Signal=10794, Verror=516, SNR=54741dB, 
BlockErrors=0, (S|L|C|V|SY|)

        -e      Filters lines where BlockErrors > 0

Both make it easy to log when errors occured.. a copy of gnuplot later and
its nice and easy to see when things were bad :)

Hope someone else finds it useful!

Patch is as follows:

diff -BNru dvbtune/dvbtune.c dvbtune.new/dvbtune.c
--- dvbtune/dvbtune.c   Tue Oct 22 18:32:39 2002
+++ dvbtune.new/dvbtune.c       Tue Dec 24 18:56:42 2002
@@ -46,6 +46,8 @@
 #include <fcntl.h>
 #include <unistd.h>

+#include <time.h>
+
 // DVB includes:
 #ifdef NEWSTRUCT
 #include <linux/dvb/osd.h>
@@ -1053,7 +1055,9 @@
   int do_info=0;
   int do_scan=0;
   int do_monitor=0;
-
+  int only_errors=0;
+  int date_prefix=0;
+
   unsigned int freq=0;
   char pol=0;
   unsigned int srate=0;
@@ -1097,6 +1101,8 @@

     fprintf(stderr,"-x          Attempt to auto-find other transponders (experimental 
- DVB-S only)\n");
     fprintf(stderr,"-m          Monitor the reception quality\n");
+    fprintf(stderr,"-d            Prefix monitor lines with date and time\n");
+    fprintf(stderr,"-e            Only output actual error data\n");
     fprintf(stderr,"-n dpid     Add network interface and receive MPE on PID dpid\n");
     fprintf(stderr,"\n");
     return(-1);
@@ -1110,6 +1116,10 @@
         do_info=1;
       } else if (strcmp(argv[i],"-m")==0) { //
         do_monitor=1;
+      } else if (strcmp(argv[i],"-e")==0) { //
+        only_errors=1;
+      } else if (strcmp(argv[i],"-d")==0) { //
+        date_prefix=1;
       } else if (strcmp(argv[i],"-n")==0) { //
         i++;
         dpid=atoi(argv[i]);
@@ -1254,6 +1264,16 @@
                 FEReadSNR(fd_frontend, &snr);
                 FEReadUncorrectedBlocks(fd_frontend, &uncorr);
                 ioctl(fd_frontend,FE_READ_STATUS,&festatus);
+               if (!only_errors || uncorr) {
+                 if (date_prefix) {
+                   time_t datetime;
+                   struct tm *datepre;
+                   char dateprebuf[1024];
+                   time(&datetime);
+                   datepre=localtime(&datetime);
+                   strftime(dateprebuf,1024,"%s\t%c\t",datepre);
+                   fprintf(stderr,"%s",dateprebuf);
+                 }
                 fprintf(stderr,"Signal=%d, Verror=%d, SNR=%ddB, BlockErrors=%d, (", 
strength, ber, snr, uncorr);
 #ifndef NEWSTRUCT
                if (festatus & FE_HAS_POWER) fprintf(stderr,"P|");
@@ -1266,7 +1286,7 @@
                if (festatus & FE_HAS_SYNC) fprintf(stderr,"SY|");
                fprintf(stderr,")\n");
                 sleep(1);
-        }
+               }}
   }



Chris Pitchford <[EMAIL PROTECTED]>



-- 
Info:
To unsubscribe send a mail to [EMAIL PROTECTED] with "unsubscribe linux-dvb" as 
subject.

Reply via email to