From 24be8c471201136cff8c1166e77b40b000cb7fa1 Mon Sep 17 00:00:00 2001
From: Greg Frost <gregfrost1@bigpond.com>
Date: Sat, 25 Jul 2009 15:33:59 +0930
Subject: tweaker: merge pci and usb tuner detection code

---
 abs/core-testing/tweaker/PKGBUILD          |   2 +-
 abs/core-testing/tweaker/bin/twk_tuners.pl | 101 +++++------------------------
 2 files changed, 17 insertions(+), 86 deletions(-)

diff --git a/abs/core-testing/tweaker/PKGBUILD b/abs/core-testing/tweaker/PKGBUILD
index dbbe914..e25ef9f 100644
--- a/abs/core-testing/tweaker/PKGBUILD
+++ b/abs/core-testing/tweaker/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=tweaker
 pkgver=1
-pkgrel=43
+pkgrel=44
 pkgdesc="applies tweaks to the baseline configuration and attempts to optimize settings for the hardware it finds"
 arch=('i686' 'x86_64')
 
diff --git a/abs/core-testing/tweaker/bin/twk_tuners.pl b/abs/core-testing/tweaker/bin/twk_tuners.pl
index ff62b5e..22c6a23 100755
--- a/abs/core-testing/tweaker/bin/twk_tuners.pl
+++ b/abs/core-testing/tweaker/bin/twk_tuners.pl
@@ -105,11 +105,8 @@ my @capture_card_patterns = (
 #    [ "bt878-based frame grabbers", [".*0400.*109e.*036e.*", ".*0480.*109e.*0878.*"],
 #      ["V4L", ["NTSC"]]],
     
-    );
-
-# USB patterns
+    # USB patterns
 
-my @usb_capture_patterns = (
     [ "Dvico Dual Digital 4 rev2", [".* 0fe9:db98 .*"],
       ["DVB", ["DVB-T"]]],
     );
@@ -153,11 +150,8 @@ sub implement_option {
     if (connect_to_db("DBI:mysql:$dbconnectionstring")) {
 	my $logger = get_logger('tweaker.script');
 	
-	# Get a list of all PCI devices for later processing
-	my @lspci = split('\n', execute_shell_command("lspci -mn"));
-
-	# Get a list of all USB devices for later processing
-	my @lsusb = split('\n', execute_shell_command("lsusb"));
+	# Get a list of all PCI and USB devices for later processing
+	my @device_list = split('\n', execute_shell_command("lspci -mn ; lsusb"));
 
 	# Iterate through the list of known tuner cards, then the list of known network tuners.
 	# For each known tuner, configure a safe default for it if it's found.  Set up
@@ -346,22 +340,22 @@ sub implement_option {
 
 	# Configure each supported tuner/capture device detected on the system.
 
-	# built-in, PCI, or PCI Express
-	$logger->debug("Processing built-in, PCI, or PCI Express devices...");
-	for my $pci_device (@lspci) {
-	    $logger->debug("DEVICE: $pci_device");
+	# built-in, PCI, PCI Express, or USB
+	$logger->debug("Processing built-in, PCI, PCI Express or USB devices...");
+	for my $a_device (@device_list) {
+	    $logger->debug("DEVICE: $a_device");
 	    my $match=0;
 
-	    for my $pci_device_data (@capture_card_patterns) {
-		$logger->debug("\tIs there a @$pci_device_data[0] at this location?");
+	    for my $device_data (@capture_card_patterns) {
+		$logger->debug("\tIs there a @$device_data[0] at this location?");
 
-		for my $patterns (@$pci_device_data[1]) {
+		for my $patterns (@$device_data[1]) {
 		    for my $pattern (@$patterns) {
 			if ($match) {
 			    next;
 			} else {
 			    $logger->debug("\t\tPATTERN: $pattern");
-			    $match += ($pci_device =~ m/$pattern/i);
+			    $match += ($a_device =~ m/$pattern/i);
 			    if ($match) {
 				$global_device_count++; # 1-indexed
 				
@@ -372,10 +366,10 @@ sub implement_option {
 				# The sub_types are used to populate the videosource table.
 				# The device type and "best" sub_type are used to set the 'sourceid' field of the cardinput table.
 
-				for my $typeblock (@$pci_device_data[2]) {
-				    my $pci_device_type = @$typeblock[0];
-				    $logger->debug("\t\tDEVICE TYPE: $pci_device_type"); # e.g. "DVB", "MPEG", etc.
-				    $cardtypes{$pci_device_type}++;
+				for my $typeblock (@$device_data[2]) {
+				    my $device_type = @$typeblock[0];
+				    $logger->debug("\t\tDEVICE TYPE: $device_type"); # e.g. "DVB", "MPEG", etc.
+				    $cardtypes{$device_type}++;
 				    my $sourceid = -1;
 				    for my $sub_types (@$typeblock[1]) {
 					for my $sub_type (@$sub_types) {
@@ -395,7 +389,7 @@ sub implement_option {
 				    #
 				    # POPULATE capturecard table
 				    #
-				    my $defaultinput = make_capturecard_SQL($global_device_count, $cardtypes{$pci_device_type}-1, $pci_device_type, -1);
+				    my $defaultinput = make_capturecard_SQL($global_device_count, $cardtypes{$device_type}-1, $device_type, -1);
 
 				    #
 				    # POPULATE cardinput table
@@ -465,69 +459,6 @@ sub implement_option {
 	    close(SHELL2);
 	} # else: don't scan the internet!
 	
-	# USB devices
-	$logger->debug("Processing USB devices...");
-	for my $usb_device (@lsusb) {
-	    $logger->debug("DEVICE: $usb_device");
-	    my $match=0;
-
-	    for my $usb_device_data (@usb_capture_patterns) {
-		$logger->debug("\tIs there a @$usb_device_data[0] at this location?");
-
-		for my $patterns (@$usb_device_data[1]) {
-		    for my $pattern (@$patterns) {
-			if ($match) {
-			    next;
-			} else {
-			    $logger->debug("\t\tPATTERN: $pattern");
-			    $match += ($usb_device =~ m/$pattern/i);
-			    if ($match) {
-				$global_device_count++; # 1-indexed
-				
-				$logger->debug("\t\tfound one!");
-				# Each device has a device type (e.g. MPEG, DVB, V4L) that it supports, and a
-				# list of sub_types (e.g. PAL, NTSC, DVB-S, DVB-T, DVB-C, ATSC, QAM).
-				# The device type is used to configure the capturecard table and the cardinput table.
-				# The sub_types are used to populate the videosource table.
-				# The device type and "best" sub_type are used to set the 'sourceid' field of the cardinput table.
-
-				for my $typeblock (@$usb_device_data[2]) {
-				    my $usb_device_type = @$typeblock[0];
-				    $logger->debug("\t\tDEVICE TYPE: $usb_device_type"); # e.g. "DVB", "MPEG", etc.
-				    $cardtypes{$usb_device_type}++;
-				    my $sourceid = -1;
-				    for my $sub_types (@$typeblock[1]) {
-					for my $sub_type (@$sub_types) {
-					    $logger->debug("\t\tSUB-TYPE: $sub_type\n"); # e.g. "DVB-S", "QAM", etc.
-					    # ensure that the videosource table has an entry for each sub_type
-					    # that this device supports; use the "best" one for the device by
-					    # default
-
-					    #
-					    # POPULATE videosource table
-					    #
-					    $sourceid = max(verify_or_make_videosource_SQL($sub_type), $sourceid);
-					}
-				    }
-				    $logger->debug("\t\t\"BEST\" SOURCE ID: $sourceid\n");
-
-				    #
-				    # POPULATE capturecard table
-				    #
-				    my $defaultinput = make_capturecard_SQL($global_device_count, $cardtypes{$usb_device_type}-1, $usb_device_type, -1);
-
-				    #
-				    # POPULATE cardinput table
-				    #
-				    make_cardinput_SQL($global_device_count, $sourceid, $defaultinput, 0);
-				}
-			    }
-			}
-		    }
-		}
-	    }
-	}
-
 	# Filesystem Tweaks for tuners
 	# This only works with the Nova-T-500 card, but it doesn't hurt any other cards
 	execute_shell_command("echo \"#switch on onboard amplifier on Nova-T-500 card\" > /etc/modprobe.d/dvb-usb-dib0700");
-- 
cgit v0.12