[Pcsclite-cvs-commit] r2433 - trunk/Drivers/ccid/contrib/Kobil_mIDentity_switch

Ludovic Rousseau rousseau at alioth.debian.org
Sun Feb 25 11:51:52 CET 2007


Author: rousseau
Date: 2007-02-25 11:51:52 +0100 (Sun, 25 Feb 2007)
New Revision: 2433

Added:
   trunk/Drivers/ccid/contrib/Kobil_mIDentity_switch/Kobil_mIDentity_switch.c
Removed:
   trunk/Drivers/ccid/contrib/Kobil_mIDentity_switch/midswitch.c
Modified:
   trunk/Drivers/ccid/contrib/Kobil_mIDentity_switch/Makefile.am
Log:
rename midswitch{.c,} in Kobil_mIDentity_switch{.c,}


Copied: trunk/Drivers/ccid/contrib/Kobil_mIDentity_switch/Kobil_mIDentity_switch.c (from rev 2432, trunk/Drivers/ccid/contrib/Kobil_mIDentity_switch/midswitch.c)

Modified: trunk/Drivers/ccid/contrib/Kobil_mIDentity_switch/Makefile.am
===================================================================
--- trunk/Drivers/ccid/contrib/Kobil_mIDentity_switch/Makefile.am	2007-02-25 10:47:39 UTC (rev 2432)
+++ trunk/Drivers/ccid/contrib/Kobil_mIDentity_switch/Makefile.am	2007-02-25 10:51:52 UTC (rev 2433)
@@ -1,3 +1,3 @@
-sbin_PROGRAMS = midswitch
-midswitch_SOURCES = midswitch.c
-midswitch_LDADD = -lusb
+sbin_PROGRAMS = Kobil_mIDentity_switch
+Kobil_mIDentity_switch_SOURCES = Kobil_mIDentity_switch.c
+Kobil_mIDentity_switch_LDADD = -lusb

Deleted: trunk/Drivers/ccid/contrib/Kobil_mIDentity_switch/midswitch.c
===================================================================
--- trunk/Drivers/ccid/contrib/Kobil_mIDentity_switch/midswitch.c	2007-02-25 10:47:39 UTC (rev 2432)
+++ trunk/Drivers/ccid/contrib/Kobil_mIDentity_switch/midswitch.c	2007-02-25 10:51:52 UTC (rev 2433)
@@ -1,199 +0,0 @@
-/*
-    Activate the smartcard interface on the kobil midentity usb device
-    Copyright (C) 2006  Norbert Federa <norbert.federa at neoware.com>
-
-    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.,
-    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Author:	Norbert Federa <norbert.federa at neoware.com>
-Date:   2006-04-06
-
-
-Description:
-
-This tool is needed to activate the smartcard interface on the kobil midentity
-usb device (vendor 0x04D6 id 0x4081)
-
-Kobil's own implementation was a kernel usb driver which did just send a
-usb_control_msg in the probe routine.
-
-We do the same via libusb and call this program from our /sbin/hotblug script
-if the mIDentity gets added.
-
-The kobil switcher driver was found inside this zip ...
-http://www.kobil.com/download/partner/KOBIL_mIDentity_SDK_Build_20060320_RELEASE.zip
-... under Interfaces/Linux/module_with_binary_final.tar.gz.
-
-Here the interesting part of the kernel driver inside the probe function:
-
-        if (dev->descriptor.idVendor == KOBIL_VENDOR_ID){
-                printk("!!!!! DEVICE FOUND !!! !\n");
-		ret = usb_control_msg(dev,
-		send_pipe,
-		0x09,
-		0x22,
-		0x0200,
-		0x0001,
-		switchCmd,
-		sizeof(switchCmd),
-		5000);
-	}
-
-Initally the it did not work with libusb because the ioctl gets ignored with
-the used RequestType of 0x22 in combination with index 0x0001, but index 0x0002
-worked.  See usb/devio.c functions  proc_control() ->  check_ctrlrecip() ->
-findintfep() in order to understand why.
-*/
-
-#include <stdio.h>
-#include <string.h>
-#include <usb.h>
-#include <errno.h>
-
-
-#define KOBIL_VENDOR_ID		0x0D46
-#define MID_DEVICE_ID 		0x4081
-#define KOBIL_TIMEOUT		5000
-#define VAL_STARTUP_4080        1
-#define VAL_STARTUP_4000        2
-#define VAL_STARTUP_4020        3
-#define VAL_STARTUP_40A0        4
-#define HIDCMD_SWITCH_DEVICE    0x0004
-
-#define bmRequestType           0x22
-#define bRequest                0x09
-#define wValue                  0x0200
-#define wIndex                  0x0002  // this was originally 0x0001
-
-
-static int kobil_midentity_control_msg(usb_dev_handle *usb)
-{
-    int ret;
-
-    char switchCmd[10];
-
-    unsigned char Sleep = 1;
-    unsigned char hardDisk = 1;
-
-    unsigned char param = ((hardDisk)<<4) | (Sleep);
-
-    memset(switchCmd, 0x0, sizeof(switchCmd));
-    switchCmd[0] = HIDCMD_SWITCH_DEVICE>>8;
-    switchCmd[1] = HIDCMD_SWITCH_DEVICE;
-    switchCmd[5] = VAL_STARTUP_4000;
-    switchCmd[9] = param;
-
-	ret = usb_control_msg(usb, bmRequestType, bRequest, wValue, wIndex,
-		switchCmd, sizeof(switchCmd), KOBIL_TIMEOUT);
-
-    return(!(ret==sizeof(switchCmd)));
-}
-
-
-static int kobil_midentity_claim_interface(usb_dev_handle *usb, int ifnum)
-{
-    int rv;
-
-    printf("claiming interface #%d ...\n", ifnum);
-    rv = usb_claim_interface(usb, ifnum);
-    if (rv == 0)
-	{
-		printf("success\n");
-		return(rv);
-    }
-
-    printf("failed with error %d, trying to detach kernel driver ....\n", rv);
-    rv = usb_detach_kernel_driver_np(usb, ifnum);
-    if (rv == 0)
-    {
-		printf("success, claiming interface again ...");
-		rv = usb_claim_interface(usb, ifnum);
-		if (rv == 0)
-		{
-			printf("success\n");
-			return(rv);
-		}
-    }
-    printf("failed with error %d, giving up.\n", rv);
-    return(rv);
-}
-
-
-int main(int argc, char *argv[])
-{
-    struct usb_bus *bus;
-    struct usb_device *dev = NULL;
-    struct usb_device *found_dev = NULL;
-    usb_dev_handle *usb = NULL;
-    int rv;
-
-    usb_init();
-
-    usb_find_busses();
-    usb_find_devices();
-
-	for (bus = usb_busses; bus; bus = bus->next)
-	{
-		for (dev = bus->devices; dev; dev = dev->next)
-		{
-			printf("vendor/product: %04X %04X\n",
-				dev->descriptor.idVendor, dev->descriptor.idProduct);
-			if (dev->descriptor.idVendor == KOBIL_VENDOR_ID
-				&& dev->descriptor.idProduct ==MID_DEVICE_ID)
-			{
-				found_dev = dev;
-			}
-		}
-	}
-
-    if (found_dev == NULL)
-	{
-		printf("device not found. aborting.\n");
-		exit(1);
-    }
-
-	printf("Device found, opening ... ");
-	usb = usb_open(found_dev);
-	if (!usb)
-	{
-		printf("failed, aborting.\n");
-		exit(2);
-	}
-	printf("success\n");
-
-	rv = kobil_midentity_claim_interface(usb, 0);
-	if (rv < 0)
-	{
-		usb_close(usb);
-		exit(3);
-	}
-	rv = kobil_midentity_claim_interface(usb, 1);
-	if (rv < 0)
-	{
-		usb_close(usb);
-		exit(3);
-	}
-
-	printf("Activating the CCID configuration .... ");
-	rv = kobil_midentity_control_msg(usb);
-	if (rv == 0)
-		printf("success\n");
-	else
-		printf("failed with error %d, giving up.\n", rv);
-
-    usb_close(usb);
-
-    return 0;
-}
-




More information about the Pcsclite-cvs-commit mailing list