|
View:
New views
1 Messages
—
Rating Filter:
Alert me
|
|
|
Erkennung der PCMCIA-Reader mit HALHallo Martin,
anbei ein Patch, der dafür sorgt, dass die PCMCIA-Reader auch mit HAL wieder funktionieren. Hier eine kurze Erklärung, wozu die Änderungen nötig sind (Zeilennummern beziehen sich auf den Code ohne Patch): 1. Änderung: src/lib/server/common/halscanner.c, Zeilen 101ff Diese Änderung ist nötig, weil das UDI-Attribut info.subsystem beim PCMCIA-Reader auf "pcmcia" gesetzt ist. Der Code geht also davon aus, dass ein busType gefunden wurde und verzweigt in Zeile 103 in den IF-Teil. Der ELSE-Teil wird übersprungen, d.h. insbesondere der Code von Zeile 180 bis 299 wird für meinen Reader gar nicht durchlaufen, obwohl genau hier die PCMCIA-Reader erkannt werden sollen. 2. Änderung: src/lib/server/common/halscanner.c, Zeilen 274ff Variablendeklaration, muss nicht erklärt werden, oder? 3. Änderung: src/lib/server/common/halscanner.c, Zeilen 287ff Der Sysfs-Pfad des PCMCIA-Readers ist (bei mir) im UDI-Attribut linux.sysfs_path untergebracht. Davon der Teil hinter dem letzten '/' entspricht dem Devicename, wie er zum Beispiel auch bei den USB-Geräten ermittelt wird (vgl. z.B. halscanner.c Zeilen 160ff). 4. Änderung: src/lib/server/common/halscanner.c, Zeilen 294ff Hier werden der neu ermittelte Sysfs-Pfad und Devicename im neuen LC_DEVICE gesetzt. Anschließend noch eine nette Debug-Ausgabe, was für ein Leser von HAL gefunden wurde. Ich habe den Patch bei mir getestet, und seit dem funktioniert bei mir wieder mein Kartenleser. Es wäre schön, wenn der Patch seinen Weg ins SVN findet. Schöne Grüße Micha P.S.: Den Patch hab ich auch an Ticket #11 im Tracker angehängt. https://devel.aqbanking.de/trac/libchipcard/ticket/11 Index: src/lib/server/common/halscanner.c =================================================================== --- src/lib/server/common/halscanner.c (Revision 510) +++ src/lib/server/common/halscanner.c (Arbeitskopie) @@ -98,6 +98,9 @@ const char *busType; busType=libhal_device_get_property_string(ctx, udi, "info.subsystem", NULL); + if (busType && (strcasecmp(busType, "usb")!=0)) + busType=NULL; /* non-USB devices are handled below */ + if (busType==NULL) busType=libhal_device_get_property_string(ctx, udi, "info.bus", NULL); if (busType) { @@ -271,6 +274,8 @@ int busPos; int vendorId; int productId; + char *path; + char *name = NULL; busPos=libhal_device_get_property_int(ctx, udi, @@ -284,6 +289,15 @@ udi, "pcmcia.card_id", NULL); + path=libhal_device_get_property_string(ctx, + udi, + "linux.sysfs_path", + NULL); + if (path) { + name=strrchr(path, '/'); + if (name) + name++; + } d=LC_Device_new(LC_Device_BusType_Pcmcia, 0, busPos, @@ -291,8 +305,14 @@ LC_Device_SetDevicePos(d, count++); LC_Device_SetHalPath(d, udi); + if (path) + LC_Device_SetPath(d, path); + if (name) + LC_Device_SetDeviceName(d, name); /* all set, add device */ + DBG_DEBUG(0, "Adding device %d (%04x/%04x) with path '%s' and name '%s' (UDI: '%s')", + busPos, vendorId, productId, path, name, udi); LC_Device_List_Add(d, dl); } /* if PCMCIA */ } /* if subsys */ ------------------------------------------------------------------------------ Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are powering Web 2.0 with engaging, cross-platform capabilities. Quickly and easily build your RIAs with Flex Builder, the Eclipse(TM)based development software that enables intelligent coding and step-through debugging. Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com _______________________________________________ Libchipcard-devel mailing list Libchipcard-devel@... https://lists.sourceforge.net/lists/listinfo/libchipcard-devel |
| Free embeddable forum powered by Nabble | Forum Help |