## Copyright (C) 2001-2005 Red Hat, Inc. ## Copyright (C) 2001, 2002 Than Ngo ## Copyright (C) 2001-2005 Harald Hoyer ## Copyright (C) 2001, 2002 Philipp Knirsch ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. import commands import os from netconfpkg.NC_functions import getRoot, ISDNCARDCONF, log from netconfpkg.conf import ConfShellVar TYPE = 0 IRQ = 1 IO = 2 IO1 = 3 IO2 = 4 MEM = 5 VENDOR_ID = 6 DEVICE_ID = 7 DRIVER_ID = 8 FIRMWARE = 9 MODUL = 10 _card = { # "ISDN Adapter" : [ type, irq, io, io1, io2, mem, vendor_id, # device_id, driver_id, firmware, module ] "ACER P10" : [ "30", "5", "0x300", "", "", "", "", "", "HiSax", "", "hisax" ], "ASUS COM ISDNLink ISA PnP" : [ "12", "", "", "", "", "", "ASU1690", "ASU1690", "HiSax", "", "hisax" ], "ASUS COM ISDNLink PCI" : [ "35", "", "", "", "", "", "", "", "HiSax", "", "hisax" ], "AVM A1 (Fritz)" : [ "5", "10", "0x300", "", "", "", "", "", "HiSax", "", "hisax" ], "AVM Fritz Card PCMCIA" : [ "", "", "", "", "", "", "", "", "", "", "avma1_cs" ], "AVM PCI (Fritz!PCI)" : [ "27", "", "", "", "", "", "1244", "0a00", "HiSax", "", "hisax" ], "AVM PCI (Fritz!PCI v2)" : [ "0", "", "", "", "", "", "1244", "0e00", "", "", "hisax_fcpcipnp" ], "AVM PnP" : [ "27", "", "", "", "", "", "AVM0900", "AVM0900", "HiSax", "", "hisax" ], "Billion ISDN P&P PCI 128k Cologne SE" : [ "35", "", "", "", "", "", "1397", "2bd0", "HiSax", "", "hisax" ], "Compaq ISDN S0 ISA" : [ "19", "5", "0x0000", "0x0000", "0x0000", "", "", "", "HiSax", "", "hisax" ], "Creatix Teles PnP" : [ "4", "", "", "", "", "", "", "", "HiSax", "", "hisax" ], "Dr. Neuhaus Niccy PnP" : [ "24", "", "", "", "", "", "", "", "HiSax", "", "hisax" ], "Dr. Neuhaus Niccy PCI" : [ "24", "", "", "", "", "", "1267", "1016", "HiSax", "", "hisax" ], "Dynalink 128PH PCI" : [ "36", "", "", "", "", "", "", "", "HiSax", "", "hisax" ], "Eicon.Diehl Diva ISA PnP" : [ "11", "", "", "", "", "", "", "", "HiSax", "", "hisax" ], "Eicon.Diehl Diva 20PRO PCI" : [ "11", "", "", "", "", "", "1133", "e001", "HiSax", "", "hisax" ], "Eicon.Diehl Diva 20 PCI" : [ "11", "", "", "", "", "", "1133", "e002", "HiSax", "", "hisax" ], "Eicon.Diehl Diva 20PRO_U PCI" : [ "11", "", "", "", "", "", "1133", "e003", "HiSax", "", "hisax" ], "Eicon.Diehl Diva 20_U PCI" : [ "11", "", "", "", "", "", "1133", "e004", "HiSax", "", "hisax" ], "ELSA PCC/PCF" : [ "6", "", "", "", "", "", "", "", "HiSax", "", "hisax" ], "ELSA Quickstep 1000" : [ "7", "5", "0x300", "", "", "", "ELS0133", "ELS0133", "HiSax", "", "hisax" ], "ELSA Quickstep 1000 PCI" : [ "18", "", "", "", "", "", "1048", "1000", "HiSax", "", "hisax" ], "ELSA Quickstep 3000 PCI" : [ "18", "", "", "", "", "", "1048", "3000", "HiSax", "", "hisax" ], "ELSA PCMCIA MicroLink cards" : [ "", "", "", "", "", "", "", "", "", "", "elsa_cs" ], "Gazel cards ISA" : [ "34", "5", "0x300", "", "", "", "", "", "HiSax", "", "hisax" ], "Gazel cards PCI" : [ "34", "", "", "", "", "", "10b5", "1030", "HiSax", "", "hisax" ], "HFC-2BS0 based cards ISA" : [ "13", "9", "0xd80", "", "", "", "", "", "HiSax", "", "hisax" ], "HFC-2BS0 based cards PCI" : [ "35", "", "", "", "", "", "1397", "2bd0", "HiSax", "", "hisax" ], "HST Saphir" : [ "31", "5", "0x300", "", "", "", "", "", "HiSax", "", "hisax" ], "ITK ix1-micro Rev.2" : [ "9", "9", "0xd80", "", "", "", "", "", "HiSax", "", "hisax" ], "MIC card" : [ "17", "9", "0xd80", "", "", "", "", "", "HiSax", "", "hisax" ], "NETjet PCI" : [ "20", "", "", "", "", "", "e159", "0001", "HiSax", "", "hisax" ], "Sedlbauer PC 104" : [ "15", "9", "0xd80", "", "", "", "", "", "HiSax", "", "hisax" ], "Sedlbauer Speed PCI" : [ "15", "", "", "", "", "", "", "", "HiSax", "", "hisax" ], "Sedlbauer Speed Card" : [ "15", "9", "0xd80", "", "", "", "", "", "HiSax", "", "hisax" ], "Sedlbauer Speed Fax+" : [ "28", "3", "0x200", "", "", "", "SAG0002", "SAG0002", "HiSax", "hisaxctrl HiSax 9 /usr/lib/isdn/ISAR.BIN", "hisax" ], "Sedlbauer Speed fax+ PCI" : [ "28", "", "", "", "", "", "e159", "0002", "HiSax", "hisaxctrl HiSax 9 /usr/lib/isdn/ISAR.BIN", "hisax" ], "Sedlbauer Speed Star PCMCIA Card" : [ "", "", "", "", "", "", "", "", "", "", "sedlbauer_cs" ], "Siemens I-Surf 1.0" : [ "29", "9", "0xd80", "", "", "0xd000", "", "", "HiSax", "", "hisax" ], "Telekom A4T" : [ "32", "", "", "", "", "", "", "", "HiSax", "", "hisax" ], "Teles 8.0" : [ "2", "9", "", "", "", "0xd800", "", "", "HiSax", "", "hisax" ], "Teles 16.0" : [ "1", "5", "0xd80", "", "", "0xd000", "", "", "HiSax", "", "hisax" ], "Teles 16.3" : [ "3", "9", "0xd80", "", "", "", "", "", "HiSax", "", "hisax" ], "Teles 16.3c PnP" : [ "14", "", "", "", "", "", "TAG2610", "TAG2610", "HiSax", "", "hisax" ], "Teles PCI" : [ "21", "", "", "", "", "", "", "", "HiSax", "", "hisax" ], "Teles PnP" : [ "4", "", "", "", "", "", "", "", "HiSax", "", "hisax" ], "Teles S0Box" : [ "25", "7", "0x378", "", "", "", "", "", "HiSax", "", "hisax" ], "USR Sportster intern" : [ "16", "9", "0xd80", "", "", "", "", "", "HiSax", "", "hisax" ], "W6692 based PCI cards" : [ "36", "", "", "", "", "", "1050", "6692", "HiSax", "", "hisax" ] } def getCards(): return _card class ConfISDN: keydict = { 'Description' : 'NAME', 'ModuleName' : 'MODULE', 'VendorId' : 'VENDOR_ID', 'Firmware' : 'FIRMWARE', 'Resources' : 'RESOURCES' } def __init__(self): self.Description = "" self.ChannelProtocol = "2" self.Type = "" self.IRQ = "" self.IoPort = "" self.IoPort1 = "" self.IoPort2 = "" self.Mem = "" self.VendorId = "" self.DeviceId = "" self.DriverId = "" self.Firmware = "" self.ModuleName = "" self.Resources = "" def get_value(self, s): if s.find("=") < 0: return "" s = s.split("=", 1)[1] s = s.replace("\"", "") return s.strip() def load(self, f = None): if not f: f = getRoot() + ISDNCARDCONF if not os.path.exists(f): return -1 mconf = ConfShellVar.ConfShellVar(filename = f) for selfkey in self.keydict.keys(): confkey = self.keydict[selfkey] if mconf.has_key(confkey): setattr(self, selfkey, mconf[confkey]) log.log(5, "RESOURCES=%s" % self.Resources) rlist = self.Resources.split(" ") for i in rlist: log.log(5, "%s" % i) if i.find("type=") == 0: self.Type = self.get_value(i) elif i.find("protocol=") == 0: self.ChannelProtocol = self.get_value(i) elif i.find("irq=") == 0: self.IRQ = self.get_value(i) elif i.find("id=") == 0: self.DriverId = self.get_value(i) elif i.find("io=") == 0 or i.find("io0=") == 0: self.IoPort = self.get_value(i) elif i.find("io1=") == 0: self.IoPort1 = self.get_value(i) elif i.find("io2=") == 0: self.IoPort2 = self.get_value(i) elif i.find("mem=") == 0: self.Mem = self.get_value(i) if len(rlist) and not self.Type: self.Type = '0' return 1 def save(self, f = None): if f == None: f = getRoot() + ISDNCARDCONF # we only support 1 ISDN card in this version if not self.Description: if os.path.exists(f): os.unlink(f) return conf = ConfShellVar.ConfShellVar(filename = f) rs = "" if self.Type: rs = rs + "protocol=" + str(self.ChannelProtocol) if self.Type == '0': pass else: rs = rs + " type=" + str(self.Type) if self.IRQ: rs = rs + " irq=" + str(self.IRQ) if self.DriverId: rs = rs + " id=" + str(self.DriverId) if self.IoPort: if (self.Type == "4" or self.Type == "19" or self.Type == "24"): rs = rs + " io0=" + str(self.IoPort) else: rs = rs + " io=" + str(self.IoPort) if self.IoPort1: rs = rs + " io1=" + str(self.IoPort1) if self.IoPort2: rs = rs + " io2=" + str(self.IoPort2) if self.Mem: rs = rs + " mem=" + str(self.Mem) else: rs = rs + "NONE" self.Resources = rs for selfkey in self.keydict.keys(): confkey = self.keydict[selfkey] if hasattr(self, selfkey): conf[confkey] = getattr(self, selfkey) else: conf[confkey] = "" conf.write() def cleanup(self, f = None): if f == None: f = getRoot() + ISDNCARDCONF # we only support 1 ISDN card in this version if not self.Description: if os.path.exists(f): os.unlink(f) return def detect(self): fpci = '/sbin/lspci' fpnp = '/proc/bus/isapnp/devices' found = 0 idl = [] if os.path.exists(fpci): pci_infos = commands.getoutput(fpci + ' -n 2>/dev/null') found = 1 if os.path.exists(fpnp): f = open(fpnp, 'r') line = f.readline() while line: idl.append(line.split()[1]) line = f.readline() f.close() found = 1 if found == 0: return for i in _card.keys(): if _card[i][VENDOR_ID] and _card[i][DEVICE_ID]: if pci_infos.find(_card[i][VENDOR_ID] + ':' + _card[i][DEVICE_ID]) >0: return {i : _card[i]} elif idl and idl.count(_card[i][VENDOR_ID] + _card[i][DEVICE_ID]) >0: return {i : _card[i]} def get_resource(self, name): if _card.has_key(name): # FIXME: remove Cardinfo self.Description = name self.Type = _card[name][TYPE] self.IRQ = _card[name][IRQ] self.IoPort = _card[name][IO] self.IoPort1 = _card[name][IO1] self.IoPort2 = _card[name][IO2] self.Mem = _card[name][MEM] self.VendorId = _card[name][VENDOR_ID] self.DeviceId = _card[name][DEVICE_ID] self.DriverId = _card[name][DRIVER_ID] self.Firmware = _card[name][FIRMWARE] self.ModuleName = _card[name][MODUL] __author__ = "Than Ngo "