[PATCH] wscan: improved frontend autodetection

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Currently wscan will not autodetect frontends which which have frontend != 0,
i.e. it only detects /dev/dvb/adapterN/frontend0 where N=0-3.

Since multiple frontends per adapter are supported in 2.6.28, this means the correct
frontend may not be found. For example with the HVR4000, DVB-T is always at frontend1.

The attached patch fixes this, searching for frontend 0-3 for each adapter 0-3.

Signed-off-by: Hans Werner <hwerner4@xxxxxx>.


-- 
Release early, release often.

GMX Download-Spiele: Preizsturz! Alle Puzzle-Spiele Deluxe über 60% billiger.
http://games.entertainment.gmx.net/de/entertainment/games/download/puzzle/index.html
diff -Nur w_scan-20080815/scan.c w_scan-20080815_fixautodetection/scan.c
--- w_scan-20080815/scan.c	2008-08-16 09:02:01.000000000 +0100
+++ w_scan-20080815_fixautodetection/scan.c	2008-11-06 12:24:40.000000000 +0000
@@ -2579,7 +2579,7 @@
 {
 	char frontend_devname [80];
 	int adapter = 999, frontend = 0, demux = 0;
-	int opt, i;
+	int opt, i, j;
 	int frontend_fd;
 	int fe_open_mode;
 	int frontend_type = FE_OFDM;
@@ -2716,18 +2716,19 @@
 		info("Info: using DVB adapter auto detection.\n");
 		fe_open_mode = O_RDWR | O_NONBLOCK;
 		for (i=0; i < 4; i++) {
-		  snprintf (frontend_devname, sizeof(frontend_devname),  		"/dev/dvb/adapter%i/frontend0", i);
-		  if ((frontend_fd = open (frontend_devname, fe_open_mode)) < 0) {
+		  for (j=0; j < 4; j++) {
+		    snprintf (frontend_devname, sizeof(frontend_devname), "/dev/dvb/adapter%i/frontend%i", i, j);
+		    if ((frontend_fd = open (frontend_devname, fe_open_mode)) < 0) {
 		  	info("Info: unable to open frontend %s'\n", frontend_devname);
 			continue;
 			}
-		/* determine FE type and caps */
-		if (ioctl(frontend_fd, FE_GET_INFO, &fe_info) == -1) {
+		    /* determine FE type and caps */
+		    if (ioctl(frontend_fd, FE_GET_INFO, &fe_info) == -1) {
 			info("   ERROR: unable to determine frontend type\n");
 			close (frontend_fd);
 			continue;
-			}		  
-		if (fe_info.type==frontend_type) {
+			}
+		    if (fe_info.type == frontend_type) {
 			if (fe_info.type == FE_OFDM) 
 			  info("   Found DVB-T frontend. Using adapter %s\n",frontend_devname);
                         else if (fe_info.type == FE_ATSC)
@@ -2736,9 +2737,11 @@
 			  info("   Found DVB-C frontend. Using adapter %s\n",frontend_devname);                     
 			close (frontend_fd);
 			adapter=i;
+			frontend=j;
 			break;
-			} 		
+			}
 
+		  }
 		}
 	}
 	snprintf (frontend_devname, sizeof(frontend_devname),
_______________________________________________
linux-dvb mailing list
linux-dvb@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

[Index of Archives]     [Linux Media]     [Video 4 Linux]     [Asterisk]     [Samba]     [Xorg]     [Xfree86]     [Linux USB]

  Powered by Linux