hi i changed femon to accept an option for the number of printed lines; there is also a script attached which uses this to convenient print out the status of all dvb cards in a system! :-) i think, this script should be added to dvb-apps. patch is again http://www.linuxtv.org/downloads/linuxtv-dvb-1.1.1.tar.bz2 please reply in case of problems accepting the patch! mfg hermann
--- linuxtv-dvb-apps-1.1.1----REDHAT_COMPILED_BINS_SIND_OK/util/szap/femon.c 2007-07-27 11:49:40.629571000 +0200 +++ linuxtv-dvb-apps-1.1.1/util/szap/femon.c 2007-07-27 13:21:01.044889878 +0200 @@ -50,6 +50,8 @@ static char *usage_str = "\nusage: femon [options]\n" " -a number : use given adapter (default 0)\n" + " -c number : the number of printed lines before exit (default 0)\n" + " : 0 = infinite\n" " -f number : use given frontend (default 0)\n\n"; @@ -61,13 +63,13 @@ static void usage(void) static -int check_frontend (int fe_fd) +int check_frontend (int fe_fd, int count) { fe_status_t status; uint16_t snr, signal; uint32_t ber, uncorrected_blocks; - - do { + /* will stop after 2^32 lines = 2^32 seconds -> that is long enough! */ + for ( ; count != 0 ; count-- ) { ioctl(fe_fd, FE_READ_STATUS, &status); ioctl(fe_fd, FE_READ_SIGNAL_STRENGTH, &signal); ioctl(fe_fd, FE_READ_SNR, &snr); @@ -82,14 +84,14 @@ int check_frontend (int fe_fd) printf("\n"); usleep(1000000); - } while (1); + } return 0; } static -int do_mon(unsigned int adapter, unsigned int frontend) +int do_mon(unsigned int adapter, unsigned int frontend, int count) { char fedev[128]; int fefd; @@ -115,7 +117,7 @@ int do_mon(unsigned int adapter, unsigne printf("FE: %s (%s)\n", fe_info.name, fe_info.type == FE_QPSK ? "SAT" : fe_info.type == FE_QAM ? "CABLE": "TERRESTRIAL"); - check_frontend (fefd); + check_frontend (fefd, count); close(fefd); @@ -125,9 +127,8 @@ int do_mon(unsigned int adapter, unsigne int main(int argc, char *argv[]) { unsigned int adapter = 0, frontend = 0; - int opt; - - while ((opt = getopt(argc, argv, "hlrn:a:f:d:")) != -1) { + int opt, count = -1; + while ((opt = getopt(argc, argv, "hlrn:a:c:f:d:")) != -1) { switch (opt) { case '?': @@ -137,12 +138,18 @@ int main(int argc, char *argv[]) case 'a': adapter = strtoul(optarg, NULL, 0); break; + case 'c': + count = strtol(optarg, NULL, 0); + if ( count <= 0 ) { + count = -1; + } + break; case 'f': frontend = strtoul(optarg, NULL, 0); } } - do_mon(adapter, frontend); + do_mon(adapter, frontend, count); return FALSE; }
Attachment:
check-frontends.sh
Description: Bourne shell script
Attachment:
pgpEp5QG65t7X.pgp
Description: PGP signature
_______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb