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;
}
check-frontends.sh
Description: Bourne shell script
pgpNr5Np2W0F4.pgp
Description: PGP signature
_______________________________________________ linux-dvb mailing list linux-dvb@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
