Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package pcsc-acsccid for openSUSE:Factory 
checked in at 2023-08-04 15:04:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pcsc-acsccid (Old)
 and      /work/SRC/openSUSE:Factory/.pcsc-acsccid.new.22712 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "pcsc-acsccid"

Fri Aug  4 15:04:27 2023 rev:31 rq:1102285 version:1.1.10

Changes:
--------
--- /work/SRC/openSUSE:Factory/pcsc-acsccid/pcsc-acsccid.changes        
2023-03-24 15:21:47.823318408 +0100
+++ /work/SRC/openSUSE:Factory/.pcsc-acsccid.new.22712/pcsc-acsccid.changes     
2023-08-04 15:04:40.232746984 +0200
@@ -1,0 +2,27 @@
+Fri Aug  4 04:25:01 UTC 2023 - Godfrey Chung <godfrey.ch...@acs.com.hk>
+
+- Updated to version 1.1.10.
+  * Add the following readers support:
+    ACR40U ICC Reader
+    SCR FW_Upgrade
+    ACR1552 1S CL Reader
+    ACR1552 CL Reader
+    ACR1552 USB FW_Upgrade
+  * Enable ACR1552U-M1 (composite device) as multi-slot reader.
+  * Enable the 2nd interface of ACR1552U-M1 as SAM slot.
+  * Fix missing initialization in get_end_points().
+  * Update _usbDevice.has_interrupt in get_end_points().
+  * Initialize multislot for interrupt endpoint only in OpenUSBByName().
+  * Simplify the code for delaying the write operation.
+  * Allow ACR38 or the reader which needs write delay in WriteUSB().
+  * Check the packet size to avoid infinite loop in WriteUSB().
+  * Use #pragma pack(1) for all platforms in src/ifdhandler.c.
+- Replaced acsccid-1.1.9-libhal.patch with acsccid-1.1.10-libhal.patch.
+- Replaced acsccid-1.1.9-polling-thread.patch with
+  acsccid-1.1.10-polling-thread.patch.
+- Replaced acsccid-1.1.9-polling-unplug.patch with
+  acsccid-1.1.10-polling-unplug.patch.
+- Replaced acsccid-1.1.9-libusb-1.0.8.patch with
+  acsccid-1.1.10-libusb-1.0.8.patch.
+
+-------------------------------------------------------------------

Old:
----
  acsccid-1.1.9-libhal.patch
  acsccid-1.1.9-libusb-1.0.8.patch
  acsccid-1.1.9-polling-thread.patch
  acsccid-1.1.9-polling-unplug.patch
  acsccid-1.1.9.tar.bz2

New:
----
  acsccid-1.1.10-libhal.patch
  acsccid-1.1.10-libusb-1.0.8.patch
  acsccid-1.1.10-polling-thread.patch
  acsccid-1.1.10-polling-unplug.patch
  acsccid-1.1.10.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ pcsc-acsccid.spec ++++++
--- /var/tmp/diff_new_pack.XjGWre/_old  2023-08-04 15:04:41.116752494 +0200
+++ /var/tmp/diff_new_pack.XjGWre/_new  2023-08-04 15:04:41.124752544 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package pcsc-acsccid
 #
-# Copyright (c) 2023 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2023 SUSE LLC
 # Copyright (c) 2023 Advanced Card Systems Ltd.
 #
 # All modifications and additions to the file contributed by third parties
@@ -42,7 +42,7 @@
 %if 0%{?suse_version} >= 1140
 BuildRequires:  pkgconfig(udev)
 %endif
-Version:        1.1.9
+Version:        1.1.10
 Release:        0
 URL:            http://acsccid.sourceforge.net/
 Summary:        PCSC Driver for ACS CCID Based Smart Card Readers
@@ -51,14 +51,14 @@
 Source:         
http://downloads.sourceforge.net/%{_name}/%{_name}-%{version}.tar.bz2
 Source1:        %{name}-rpmlintrc
 %if 0%{?sles_version} == 11
-# PATCH-FIX-SLE acsccid-1.1.9-libhal.patch godfrey.ch...@acs.com.hk -- Fix the 
compatibility with libhal.
-Patch0:         %{_name}-1.1.9-libhal.patch
-# PATCH-FIX-SLE acsccid-1.1.9-polling-thread.patch godfrey.ch...@acs.com.hk -- 
Add polling thread support for slot status.
-Patch1:         %{_name}-1.1.9-polling-thread.patch
-# PATCH-FIX-SLE acsccid-1.1.9-polling-unplug.patch godfrey.ch...@acs.com.hk -- 
Let pcsc-lite delay the polling if the reader is unplugged.
-Patch2:         %{_name}-1.1.9-polling-unplug.patch
-# PATCH-FIX-SLE acsccid-1.1.9-libusb-1.0.8.patch godfrey.ch...@acs.com.hk -- 
Fix the compatibility with libusb 1.0.8.
-Patch3:         %{_name}-1.1.9-libusb-1.0.8.patch
+# PATCH-FIX-SLE acsccid-1.1.10-libhal.patch godfrey.ch...@acs.com.hk -- Fix 
the compatibility with libhal.
+Patch0:         %{_name}-1.1.10-libhal.patch
+# PATCH-FIX-SLE acsccid-1.1.10-polling-thread.patch godfrey.ch...@acs.com.hk 
-- Add polling thread support for slot status.
+Patch1:         %{_name}-1.1.10-polling-thread.patch
+# PATCH-FIX-SLE acsccid-1.1.10-polling-unplug.patch godfrey.ch...@acs.com.hk 
-- Let pcsc-lite delay the polling if the reader is unplugged.
+Patch2:         %{_name}-1.1.10-polling-unplug.patch
+# PATCH-FIX-SLE acsccid-1.1.10-libusb-1.0.8.patch godfrey.ch...@acs.com.hk -- 
Fix the compatibility with libusb 1.0.8.
+Patch3:         %{_name}-1.1.10-libusb-1.0.8.patch
 %endif
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 Requires:       pcsc-lite >= %{pcsc_lite_ver}
@@ -87,6 +87,8 @@
 Enhances:       modalias(usb:v072FpB000d*dc*dsc*dp*ic*isc*ip*)
 Enhances:       modalias(usb:v072FpB501d*dc*dsc*dp*ic*isc*ip*)
 Enhances:       modalias(usb:v072FpB504d*dc*dsc*dp*ic*isc*ip*)
+Enhances:       modalias(usb:v072FpB506d*dc*dsc*dp*ic*isc*ip*)
+Enhances:       modalias(usb:v072FpB505d*dc*dsc*dp*ic*isc*ip*)
 Enhances:       modalias(usb:v072Fp90D2d*dc*dsc*dp*ic*isc*ip*)
 Enhances:       modalias(usb:v072Fp8306d*dc*dsc*dp*ic*isc*ip*)
 Enhances:       modalias(usb:v072Fp2011d*dc*dsc*dp*ic*isc*ip*)
@@ -147,6 +149,9 @@
 Enhances:       modalias(usb:v072Fp222Cd*dc*dsc*dp*ic*isc*ip*)
 Enhances:       modalias(usb:v072Fp220Cd*dc*dsc*dp*ic*isc*ip*)
 Enhances:       modalias(usb:v072Fp2258d*dc*dsc*dp*ic*isc*ip*)
+Enhances:       modalias(usb:v072Fp2303d*dc*dsc*dp*ic*isc*ip*)
+Enhances:       modalias(usb:v072Fp2308d*dc*dsc*dp*ic*isc*ip*)
+Enhances:       modalias(usb:v072Fp2302d*dc*dsc*dp*ic*isc*ip*)
 Enhances:       modalias(usb:v072Fp2301d*dc*dsc*dp*ic*isc*ip*)
 Enhances:       modalias(usb:v072Fp2300d*dc*dsc*dp*ic*isc*ip*)
 Enhances:       modalias(usb:v072Fp0102d*dc*dsc*dp*ic*isc*ip*)

++++++ acsccid-1.1.9-libhal.patch -> acsccid-1.1.10-libhal.patch ++++++
--- /work/SRC/openSUSE:Factory/pcsc-acsccid/acsccid-1.1.9-libhal.patch  
2023-03-24 15:21:47.751318033 +0100
+++ 
/work/SRC/openSUSE:Factory/.pcsc-acsccid.new.22712/acsccid-1.1.10-libhal.patch  
    2023-08-04 15:04:39.952745239 +0200
@@ -1,8 +1,8 @@
-Index: acsccid-1.1.9/src/ccid_usb.c
+Index: acsccid-1.1.10/src/ccid_usb.c
 ===================================================================
---- acsccid-1.1.9.orig/src/ccid_usb.c
-+++ acsccid-1.1.9/src/ccid_usb.c
-@@ -283,13 +283,48 @@ status_t OpenUSBByName(unsigned int read
+--- acsccid-1.1.10.orig/src/ccid_usb.c
++++ acsccid-1.1.10/src/ccid_usb.c
+@@ -284,13 +284,48 @@ status_t OpenUSBByName(unsigned int read
                        return STATUS_UNSUCCESSFUL;
                }
  

++++++ acsccid-1.1.9-libusb-1.0.8.patch -> acsccid-1.1.10-libusb-1.0.8.patch 
++++++
--- /work/SRC/openSUSE:Factory/pcsc-acsccid/acsccid-1.1.9-libusb-1.0.8.patch    
2023-03-24 15:21:47.759318075 +0100
+++ 
/work/SRC/openSUSE:Factory/.pcsc-acsccid.new.22712/acsccid-1.1.10-libusb-1.0.8.patch
        2023-08-04 15:04:39.980745413 +0200
@@ -1,8 +1,8 @@
-Index: acsccid-1.1.9/src/ccid_usb.c
+Index: acsccid-1.1.10/src/ccid_usb.c
 ===================================================================
---- acsccid-1.1.9.orig/src/ccid_usb.c
-+++ acsccid-1.1.9/src/ccid_usb.c
-@@ -192,6 +192,59 @@ static struct _bogus_firmware Bogus_firm
+--- acsccid-1.1.10.orig/src/ccid_usb.c
++++ acsccid-1.1.10/src/ccid_usb.c
+@@ -193,6 +193,59 @@ static struct _bogus_firmware Bogus_firm
  /* data rates supported by the secondary slots on the GemCore Pos Pro & SIM 
Pro */
  unsigned int SerialCustomDataRates[] = { GEMPLUS_CUSTOM_DATA_RATES, 0 };
  

++++++ acsccid-1.1.9-polling-thread.patch -> 
acsccid-1.1.10-polling-thread.patch ++++++
--- /work/SRC/openSUSE:Factory/pcsc-acsccid/acsccid-1.1.9-polling-thread.patch  
2023-03-24 15:21:47.771318138 +0100
+++ 
/work/SRC/openSUSE:Factory/.pcsc-acsccid.new.22712/acsccid-1.1.10-polling-thread.patch
      2023-08-04 15:04:40.040745787 +0200
@@ -1,8 +1,8 @@
-Index: acsccid-1.1.9/src/ifdhandler.c
+Index: acsccid-1.1.10/src/ifdhandler.c
 ===================================================================
---- acsccid-1.1.9.orig/src/ifdhandler.c
-+++ acsccid-1.1.9/src/ifdhandler.c
-@@ -441,7 +441,7 @@ EXTERNAL RESPONSECODE IFDHCloseChannel(D
+--- acsccid-1.1.10.orig/src/ifdhandler.c
++++ acsccid-1.1.10/src/ifdhandler.c
+@@ -433,7 +433,7 @@ EXTERNAL RESPONSECODE IFDHCloseChannel(D
  
  
  #if !defined(TWIN_SERIAL)
@@ -11,7 +11,7 @@
  {
        int reader_index;
  
-@@ -458,7 +458,7 @@ static RESPONSECODE IFDHPolling(DWORD Lu
+@@ -450,7 +450,7 @@ static RESPONSECODE IFDHPolling(DWORD Lu
  
  /* on an ICCD device the card is always inserted
   * so no card movement will ever happen: just do nothing */
@@ -20,7 +20,7 @@
  {
        int reader_index;
  
-@@ -492,6 +492,16 @@ static RESPONSECODE IFDHStopPolling(DWOR
+@@ -484,6 +484,16 @@ static RESPONSECODE IFDHStopPolling(DWOR
        (void)InterruptStop(reader_index);
        return IFD_SUCCESS;
  }
@@ -37,7 +37,7 @@
  #endif
  
  
-@@ -708,7 +718,7 @@ EXTERNAL RESPONSECODE IFDHGetCapabilitie
+@@ -701,7 +711,7 @@ EXTERNAL RESPONSECODE IFDHGetCapabilitie
                                {
                                        *Length = sizeof(void *);
                                        if (Value)
@@ -46,7 +46,7 @@
                                }
  
                                if ((PROTOCOL_ICCD_A == 
ccid_desc->bInterfaceProtocol)
-@@ -716,7 +726,7 @@ EXTERNAL RESPONSECODE IFDHGetCapabilitie
+@@ -709,7 +719,7 @@ EXTERNAL RESPONSECODE IFDHGetCapabilitie
                                {
                                        *Length = sizeof(void *);
                                        if (Value)
@@ -55,7 +55,7 @@
                                }
                        }
                        break;
-@@ -768,6 +778,44 @@ EXTERNAL RESPONSECODE IFDHGetCapabilitie
+@@ -761,6 +771,44 @@ EXTERNAL RESPONSECODE IFDHGetCapabilitie
                                }
                        }
                        break;

++++++ acsccid-1.1.9-polling-unplug.patch -> 
acsccid-1.1.10-polling-unplug.patch ++++++
--- /work/SRC/openSUSE:Factory/pcsc-acsccid/acsccid-1.1.9-polling-unplug.patch  
2023-03-24 15:21:47.779318179 +0100
+++ 
/work/SRC/openSUSE:Factory/.pcsc-acsccid.new.22712/acsccid-1.1.10-polling-unplug.patch
      2023-08-04 15:04:40.080746036 +0200
@@ -1,8 +1,8 @@
-Index: acsccid-1.1.9/src/ccid_usb.c
+Index: acsccid-1.1.10/src/ccid_usb.c
 ===================================================================
---- acsccid-1.1.9.orig/src/ccid_usb.c
-+++ acsccid-1.1.9/src/ccid_usb.c
-@@ -1874,6 +1874,8 @@ int InterruptRead(int reader_index, int
+--- acsccid-1.1.10.orig/src/ccid_usb.c
++++ acsccid-1.1.10/src/ccid_usb.c
+@@ -1923,6 +1923,8 @@ int InterruptRead(int reader_index, int
                libusb_free_transfer(transfer);
                DEBUG_CRITICAL2("libusb_submit_transfer failed: %s",
                        libusb_error_name(ret));
@@ -11,7 +11,7 @@
                return IFD_COMMUNICATION_ERROR;
        }
  
-@@ -1893,6 +1895,8 @@ int InterruptRead(int reader_index, int
+@@ -1942,6 +1944,8 @@ int InterruptRead(int reader_index, int
                        libusb_free_transfer(transfer);
                        DEBUG_CRITICAL2("libusb_handle_events failed: %s",
                                libusb_error_name(ret));
@@ -20,7 +20,7 @@
                        return IFD_COMMUNICATION_ERROR;
                }
        }
-@@ -1947,7 +1951,10 @@ int InterruptRead(int reader_index, int
+@@ -1996,7 +2000,10 @@ int InterruptRead(int reader_index, int
                        DEBUG_COMM4("InterruptRead (%d/%d): %d",
                                usbDevice[reader_index].bus_number,
                                usbDevice[reader_index].device_address, ret);

++++++ acsccid-1.1.9.tar.bz2 -> acsccid-1.1.10.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/acsccid-1.1.9/ChangeLog new/acsccid-1.1.10/ChangeLog
--- old/acsccid-1.1.9/ChangeLog 2023-03-15 09:49:50.000000000 +0100
+++ new/acsccid-1.1.10/ChangeLog        2023-08-01 10:01:24.000000000 +0200
@@ -1,3 +1,70 @@
+2023-08-01  Godfrey Chung <godfrey.ch...@acs.com.hk>
+
+       * README: Update README for v1.1.10.
+
+2023-08-01  Godfrey Chung <godfrey.ch...@acs.com.hk>
+
+       * configure.ac: Update the version to 1.1.10 in configure.ac.
+
+2023-08-01  Godfrey Chung <godfrey.ch...@acs.com.hk>
+
+       * src/ifdhandler.c: Use #pragma pack(1) for all platforms in
+       src/ifdhandler.c.
+
+2023-07-31  Godfrey Chung <godfrey.ch...@acs.com.hk>
+
+       * src/ccid_usb.c: Check the packet size to avoid infinite loop in
+       WriteUSB().
+
+2023-07-31  Godfrey Chung <godfrey.ch...@acs.com.hk>
+
+       * src/ccid_usb.c: Allow ACR38 or the reader which needs write delay
+       in WriteUSB().  Other readers do single write in order to improve the 
efficiency.
+
+2023-07-28  Godfrey Chung <godfrey.ch...@acs.com.hk>
+
+       * src/ccid.c, src/ccid.h, src/ccid_usb.c: Simplify the code for
+       delaying the write operation.
+
+2023-07-27  Godfrey Chung <godfrey.ch...@acs.com.hk>
+
+       * src/ccid_usb.c: Detect a card on macOS for interrupt endpoint only
+       in OpenUSBByName().
+
+2023-07-27  Godfrey Chung <godfrey.ch...@acs.com.hk>
+
+       * src/ccid_usb.c: Initialize multislot for interrupt endpoint only
+       in OpenUSBByName().
+
+2023-07-27  Godfrey Chung <godfrey.ch...@acs.com.hk>
+
+       * src/ccid_usb.c: Update _usbDevice.has_interrupt in
+       get_end_points().  Set _usbDevice.has_interrupt to TRUE if the reader 
has interrupt
+       endpoint, otherwise FALSE.
+
+2023-07-27  Godfrey Chung <godfrey.ch...@acs.com.hk>
+
+       * src/ccid_usb.c: Fix missing initialization in get_end_points().  Some 
readers may not have interrupt endpoint and this endpoint
+       address from last reader will be used.
+
+2023-07-25  Godfrey Chung <godfrey.ch...@acs.com.hk>
+
+       * src/supported_readers.txt: Add supported readers.  ACR40U ICC Reader 
SCR FW_Upgrade
+
+2023-07-24  Godfrey Chung <godfrey.ch...@acs.com.hk>
+
+       * src/ccid_usb.c: Enable the 2nd interface of ACR1552U-M1 as SAM
+       slot.
+
+2023-07-24  Godfrey Chung <godfrey.ch...@acs.com.hk>
+
+       * src/ccid.h, src/ccid_usb.c, src/ifdhandler.c: Enable ACR1552U-M1
+       (composite device) as multi-slot reader.
+
+2023-07-24  Godfrey Chung <godfrey.ch...@acs.com.hk>
+
+       * src/supported_readers.txt: Add supported readers.  ACR1552 1S CL 
Reader ACR1552 CL Reader ACR1552 USB FW_Upgrade
+
 2023-03-15  Godfrey Chung <godfrey.ch...@acs.com.hk>
 
        * README: Update README for v1.1.9.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/acsccid-1.1.9/README new/acsccid-1.1.10/README
--- old/acsccid-1.1.9/README    2023-03-15 09:45:30.000000000 +0100
+++ new/acsccid-1.1.10/README   2023-08-01 09:58:22.000000000 +0200
@@ -70,7 +70,9 @@
 072F B117 ACR39U-W1           Z_ACS ACR39U-W1 Edge Reader
 072F B000 ACR3901U            ACS ACR3901 ICC Reader
 072F B501 ACR40T              ACS ACR40T ICC Reader
-072F B504 ACR40 BL            ACS ACR40 FW_Upgrade
+072F B504 ACR40T BL           ACS ACR40 FW_Upgrade
+072F B506 ACR40U              ACS ACR40U ICC Reader
+072F B505 ACR40U BL           ACS SCR FW_Upgrade
 072F 90D2 ACR83U-A1           ACS ACR83U
 072F 8306 ACR85               ACS ACR85 PINPad Reader
 072F 2011 ACR88U              ACS ACR88U
@@ -134,6 +136,9 @@
 072F 222C ACR1283L-D2         ACS ACR1283 CL Reader
 072F 220C ACR1283 Bootloader  ACS ACR1283U FW Upgrade
 072F 2258 ACR1311U-N1         ACS ACR1311 PICC Reader
+072F 2303 ACR1552U-M1         ACS ACR1552 1S CL Reader
+072F 2308 ACR1552U-M2         ACS ACR1552 CL Reader
+072F 2302 ACR1552U BL         ACS ACR1552 USB FW_Upgrade
 072F 2301 ACR1581U-C1         ACS ACR1581 1S Dual Reader
 072F 2300 ACR1581U-C1 BL      ACS ACR1581 USB FW_Upgrade
 072F 0102 AET62               ACS AET62 PICC Reader
@@ -165,6 +170,24 @@
 History
 -------
 
+v1.1.10 (1/8/2023)
+- Add the following readers support:
+  ACR40U ICC Reader
+  SCR FW_Upgrade
+  ACR1552 1S CL Reader
+  ACR1552 CL Reader
+  ACR1552 USB FW_Upgrade
+- Enable ACR1552U-M1 (composite device) as multi-slot reader.
+- Enable the 2nd interface of ACR1552U-M1 as SAM slot.
+- Fix missing initialization in get_end_points().
+- Update _usbDevice.has_interrupt in get_end_points().
+- Initialize multislot for interrupt endpoint only in OpenUSBByName().
+- Detect a card on macOS for interrupt endpoint only in OpenUSBByName().
+- Simplify the code for delaying the write operation.
+- Allow ACR38 or the reader which needs write delay in WriteUSB().
+- Check the packet size to avoid infinite loop in WriteUSB().
+- Use #pragma pack(1) for all platforms in src/ifdhandler.c.
+
 v1.1.9 (15/3/2023)
 - Add the following readers support:
   APG8201-B2RO
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/acsccid-1.1.9/configure new/acsccid-1.1.10/configure
--- old/acsccid-1.1.9/configure 2023-03-15 09:49:07.000000000 +0100
+++ new/acsccid-1.1.10/configure        2023-08-01 10:00:25.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for acsccid 1.1.9.
+# Generated by GNU Autoconf 2.71 for acsccid 1.1.10.
 #
 #
 # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
@@ -618,8 +618,8 @@
 # Identity of this package.
 PACKAGE_NAME='acsccid'
 PACKAGE_TARNAME='acsccid'
-PACKAGE_VERSION='1.1.9'
-PACKAGE_STRING='acsccid 1.1.9'
+PACKAGE_VERSION='1.1.10'
+PACKAGE_STRING='acsccid 1.1.10'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -1401,7 +1401,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures acsccid 1.1.9 to adapt to many kinds of systems.
+\`configure' configures acsccid 1.1.10 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1472,7 +1472,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of acsccid 1.1.9:";;
+     short | recursive ) echo "Configuration of acsccid 1.1.10:";;
    esac
   cat <<\_ACEOF
 
@@ -1613,7 +1613,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-acsccid configure 1.1.9
+acsccid configure 1.1.10
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -1969,7 +1969,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by acsccid $as_me 1.1.9, which was
+It was created by acsccid $as_me 1.1.10, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -3240,7 +3240,7 @@
 
 # Define the identity of the package.
  PACKAGE='acsccid'
- VERSION='1.1.9'
+ VERSION='1.1.10'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -17204,7 +17204,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by acsccid $as_me 1.1.9, which was
+This file was extended by acsccid $as_me 1.1.10, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17272,7 +17272,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-acsccid config.status 1.1.9
+acsccid config.status 1.1.10
 configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/acsccid-1.1.9/configure.ac 
new/acsccid-1.1.10/configure.ac
--- old/acsccid-1.1.9/configure.ac      2023-03-15 09:45:30.000000000 +0100
+++ new/acsccid-1.1.10/configure.ac     2023-08-01 09:58:22.000000000 +0200
@@ -4,7 +4,7 @@
 # Require autoconf 2.61
 AC_PREREQ([2.69])
 
-AC_INIT([acsccid], [1.1.9])
+AC_INIT([acsccid], [1.1.10])
 AC_CONFIG_SRCDIR(src/ifdhandler.c)
 AC_CONFIG_AUX_DIR([config])
 AM_INIT_AUTOMAKE(1.8 dist-bzip2 no-dist-gzip foreign subdir-objects)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/acsccid-1.1.9/src/ccid.c 
new/acsccid-1.1.10/src/ccid.c
--- old/acsccid-1.1.9/src/ccid.c        2023-03-15 09:45:30.000000000 +0100
+++ new/acsccid-1.1.10/src/ccid.c       2023-08-01 09:58:22.000000000 +0200
@@ -644,6 +644,12 @@
                                                
ccid_descriptor->dwMaxCCIDMessageLength = 320;
                                        }
                                }
+
+                               /*
+                                * Fix APG8201 which cannot receive the command 
properly.
+                                * Set write delay to 10 ms.
+                                */
+                               ccid_descriptor->writeDelay = 10;
                        }
                case ACS_APG8201Z:
                        ccid_descriptor->wLcdLayout = 0x0210;
@@ -697,6 +703,12 @@
                                        ccid_descriptor->firmwareFixEnabled = 
(firmwareVersion == 0x0001);
                                        DEBUG_INFO2("Firmware fix enabled: %d", 
ccid_descriptor->firmwareFixEnabled);
                                }
+
+                               /*
+                                * Fix ACR85 ICC which cannot receive the 
command properly.
+                                * Set write delay to 10 ms.
+                                */
+                               ccid_descriptor->writeDelay = 10;
                        }
                        break;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/acsccid-1.1.9/src/ccid.h 
new/acsccid-1.1.10/src/ccid.h
--- old/acsccid-1.1.9/src/ccid.h        2023-03-15 09:45:30.000000000 +0100
+++ new/acsccid-1.1.10/src/ccid.h       2023-08-01 09:58:22.000000000 +0200
@@ -180,6 +180,9 @@
 
        // True if it is a SAM slot
        int isSamSlot;
+
+       /* Write delay in milliseconds */
+       int writeDelay;
 } _ccid_descriptor;
 
 /* Features from dwFeatures */
@@ -314,6 +317,7 @@
 #define ACS_ACR1283_4S_CL_READER               0x072f2213
 #define ACS_ACR1283_CL_READER                  0x072f222C
 #define ACS_ACR1283U_FW_UPGRADE                        0x072f220C
+#define ACS_ACR1552_1S_CL_READER               0x072f2303
 #define ACS_ACR1581_1S_DUAL_READER             0x072f2301
 #define ACS_AET62_PICC_READER                  0x072f0102
 #define ACS_AET62_1SAM_PICC_READER             0x072f0103
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/acsccid-1.1.9/src/ccid_usb.c 
new/acsccid-1.1.10/src/ccid_usb.c
--- old/acsccid-1.1.9/src/ccid_usb.c    2023-03-15 09:45:30.000000000 +0100
+++ new/acsccid-1.1.10/src/ccid_usb.c   2023-08-01 09:58:22.000000000 +0200
@@ -90,6 +90,7 @@
        int bulk_in;
        int bulk_out;
        int interrupt;
+       int has_interrupt;
 
        /* Number of slots using the same device */
        int real_nb_opened_slots;
@@ -471,7 +472,8 @@
                                        || (ACS_ACR1252_1S_CL_READER == 
readerID)
                                        || (ACS_ACR1252IMP_1S_CL_READER == 
readerID)
                                        || (ACS_WALLETMATE_1S_CL_READER == 
readerID)
-                                       || (ACS_ACR1581_1S_DUAL_READER == 
readerID))
+                                       || (ACS_ACR1581_1S_DUAL_READER == 
readerID)
+                                       || (ACS_ACR1552_1S_CL_READER == 
readerID))
                                {
                                                /*
                                                 * We can't talk to the two 
CCID interfaces
@@ -519,7 +521,8 @@
                                                || (ACS_ACR1251K_DUAL_READER == 
readerID)
                                                || (ACS_ACR1252_1S_CL_READER == 
readerID)
                                                || (ACS_ACR1252IMP_1S_CL_READER 
== readerID)
-                                               || (ACS_WALLETMATE_1S_CL_READER 
== readerID))
+                                               || (ACS_WALLETMATE_1S_CL_READER 
== readerID)
+                                               || (ACS_ACR1552_1S_CL_READER == 
readerID))
                                                /* only 2 interfaces for this 
device */
                                                max_interface_number = 1;
 
@@ -790,7 +793,8 @@
                                        || (ACS_ACR1252_1S_CL_READER == 
readerID)
                                        || (ACS_ACR1252IMP_1S_CL_READER == 
readerID)
                                        || (ACS_WALLETMATE_1S_CL_READER == 
readerID)
-                                       || (ACS_ACR1581_1S_DUAL_READER == 
readerID))
+                                       || (ACS_ACR1581_1S_DUAL_READER == 
readerID)
+                                       || (ACS_ACR1552_1S_CL_READER == 
readerID))
                                {
                                        /* use the next interface for the next 
"slot" */
                                        static_interface = interface + 1;
@@ -992,7 +996,14 @@
 #ifdef __APPLE__
                                usbDevice[reader_index].multislot_extension = 
NULL;
 #else
-                               usbDevice[reader_index].multislot_extension = 
Multi_CreateFirstSlot(reader_index);
+                               /*
+                                * If the reader has interrupt endpoint, init 
the multislot
+                                * stuff.
+                                */
+                               if (usbDevice[reader_index].has_interrupt)
+                                       
usbDevice[reader_index].multislot_extension = 
Multi_CreateFirstSlot(reader_index);
+                               else
+                                       
usbDevice[reader_index].multislot_extension = NULL;
 #endif
 
                                libusb_free_config_descriptor(config_desc);
@@ -1041,13 +1052,17 @@
                                // Initialize isSamSlot
                                usbDevice[reader_index].ccid.isSamSlot = FALSE;
 
+                               /* Initialize the write delay. */
+                               usbDevice[reader_index].ccid.writeDelay = 0;
+
                                // The 2nd interface (composite device) is a 
SAM slot
                                if ((readerID == ACS_ACR1281_1S_PICC_READER) ||
                                        (readerID == ACS_ACR1251_1S_CL_READER) 
||
                                        (readerID == ACS_ACR1251U_C) ||
                                        (readerID == ACS_ACR1252_1S_CL_READER) 
||
                                        (readerID == 
ACS_ACR1252IMP_1S_CL_READER) ||
-                                       (readerID == 
ACS_WALLETMATE_1S_CL_READER))
+                                       (readerID == 
ACS_WALLETMATE_1S_CL_READER) ||
+                                       (readerID == ACS_ACR1552_1S_CL_READER))
                                {
                                        if (interface == 1)
                                                
usbDevice[reader_index].ccid.isSamSlot = TRUE;
@@ -1093,9 +1108,13 @@
                                        goto end2;
                                }
 
-                               /* Disable card detection thread for 
APG8201-B2. */
+                               /*
+                                * Disable card detection thread for APG8201-B2 
or the reader
+                                * which does not have interrupt endpoint.
+                                */
                                if ((usbDevice[reader_index].ccid.readerID == 
ACS_APG8201_B2)
-                                       || 
(usbDevice[reader_index].ccid.readerID == ACS_APG8201_B2RO))
+                                       || 
(usbDevice[reader_index].ccid.readerID == ACS_APG8201_B2RO)
+                                       || 
(!usbDevice[reader_index].has_interrupt))
                                {
                                        goto end;
                                }
@@ -1180,60 +1199,83 @@
        int rv;
        int actual_length;
        char debug_header[] = "-> 121234 ";
-       int pos;
-       int len;
-       int delayed = FALSE;
+       _ccid_descriptor *ccid_descriptor = get_ccid_descriptor(reader_index);
 
        (void)snprintf(debug_header, sizeof(debug_header), "-> %06X ",
                (int)reader_index);
 
-       // Fix APG8201 and ACR85 ICC cannot receive command properly
-       // Add delay for APG8201 and ACR85 ICC
-       if ((usbDevice[reader_index].ccid.readerID == ACS_APG8201) ||
-               (usbDevice[reader_index].ccid.readerID == 
ACS_ACR85_PINPAD_READER_ICC))
-       {
-               delayed = TRUE;
-       }
-
        // Workaround for ACR122U reader
        usbDevice[reader_index].last_write_size = length;
 
-       // Send command by dividing number of packets
-       pos = 0;
-       while (length > 0)
+       if ((ccid_descriptor->bInterfaceProtocol == PROTOCOL_ACR38)
+               || (usbDevice[reader_index].ccid.writeDelay > 0))
        {
-               if (length > usbDevice[reader_index].bulkOutMaxPacketSize)
-                       len = usbDevice[reader_index].bulkOutMaxPacketSize;
-               else
-                       len = length;
+               int pos;
+               int len;
 
-               DEBUG_XXD(debug_header, buffer + pos, len);
+               // Send command by dividing number of packets
+               pos = 0;
+               while (length > 0)
+               {
+                       if (length > 
usbDevice[reader_index].bulkOutMaxPacketSize)
+                               len = 
usbDevice[reader_index].bulkOutMaxPacketSize;
+                       else
+                               len = length;
 
-               rv = libusb_bulk_transfer(usbDevice[reader_index].dev_handle,
-                       usbDevice[reader_index].bulk_out, buffer + pos, len,
-                       &actual_length, USB_WRITE_TIMEOUT);
+                       if (len <= 0)
+                       {
+                               DEBUG_CRITICAL2("invalid packet size: %d", len);
+                               return STATUS_UNSUCCESSFUL;
+                       }
 
-               if (rv < 0)
-               {
-                       DEBUG_CRITICAL5("write failed (%d/%d): %d %s",
-                               usbDevice[reader_index].bus_number,
-                               usbDevice[reader_index].device_address, rv, 
libusb_error_name(rv));
+                       DEBUG_XXD(debug_header, buffer + pos, len);
 
-                       if (LIBUSB_ERROR_NO_DEVICE == rv)
-                               return STATUS_NO_SUCH_DEVICE;
+                       rv = 
libusb_bulk_transfer(usbDevice[reader_index].dev_handle,
+                               usbDevice[reader_index].bulk_out, buffer + pos, 
len,
+                               &actual_length, USB_WRITE_TIMEOUT);
 
-                       return STATUS_UNSUCCESSFUL;
-               }
+                       if (rv < 0)
+                       {
+                               DEBUG_CRITICAL5("write failed (%d/%d): %d %s",
+                                       usbDevice[reader_index].bus_number,
+                                       usbDevice[reader_index].device_address, 
rv, libusb_error_name(rv));
 
-               if (delayed)
-               {
-                       // Delay 10 ms
-                       if (length > 
usbDevice[reader_index].bulkOutMaxPacketSize)
-                               usleep(10 * 1000);
+                               if (LIBUSB_ERROR_NO_DEVICE == rv)
+                                       return STATUS_NO_SUCH_DEVICE;
+
+                               return STATUS_UNSUCCESSFUL;
+                       }
+
+                       /* Delay the write operation. */
+                       if ((usbDevice[reader_index].ccid.writeDelay > 0)
+                               && (length > 
usbDevice[reader_index].bulkOutMaxPacketSize))
+                       {
+                               usleep(usbDevice[reader_index].ccid.writeDelay 
* 1000);
+                       }
+
+                       pos += len;
+                       length -= len;
                }
 
-               pos += len;
-               length -= len;
+               return STATUS_SUCCESS;
+       }
+
+       DEBUG_XXD(debug_header, buffer, length);
+
+       rv = libusb_bulk_transfer(usbDevice[reader_index].dev_handle,
+               usbDevice[reader_index].bulk_out, buffer, length,
+               &actual_length, USB_WRITE_TIMEOUT);
+
+       if (rv < 0)
+       {
+               DEBUG_CRITICAL5("write failed (%d/%d): %d %s",
+                       usbDevice[reader_index].bus_number,
+                       usbDevice[reader_index].device_address, rv, 
libusb_error_name(rv));
+
+               if (LIBUSB_ERROR_NO_DEVICE == rv)
+                       return STATUS_NO_SUCH_DEVICE;
+
+               return STATUS_UNSUCCESSFUL;
        }
 
        return STATUS_SUCCESS;
@@ -1550,6 +1592,12 @@
 
        usb_interface = get_ccid_usb_interface(desc, &num);
 
+       usbdevice->bulk_in = 0;
+       usbdevice->bulk_out = 0;
+       usbdevice->interrupt = 0;
+       usbdevice->has_interrupt = FALSE;
+       usbdevice->bulkOutMaxPacketSize = 0;
+
        /*
         * 3 Endpoints maximum: Interrupt In, Bulk In, Bulk Out
         */
@@ -1561,6 +1609,7 @@
                {
                        usbdevice->interrupt =
                                
usb_interface->altsetting->endpoint[i].bEndpointAddress;
+                       usbdevice->has_interrupt = TRUE;
                        continue;
                }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/acsccid-1.1.9/src/ifdhandler.c 
new/acsccid-1.1.10/src/ifdhandler.c
--- old/acsccid-1.1.9/src/ifdhandler.c  2023-03-15 09:45:30.000000000 +0100
+++ new/acsccid-1.1.10/src/ifdhandler.c 2023-08-01 09:58:22.000000000 +0200
@@ -59,11 +59,7 @@
 
 #include <iconv.h>
 
-#if defined(__APPLE__) | defined(sun)
 #pragma pack(1)
-#else
-#pragma pack(push, 1)
-#endif
 
 /* Structure for FEATURE_WRITE_DISPLAY */
 typedef struct _WRITE_DISPLAY
@@ -92,11 +88,7 @@
        uint16_t wLcdMaxLines;          /* Maximum number of lines that can be 
used */
 } DISPLAY_PROPERTIES, *PDISPLAY_PROPERTIES;
 
-#if defined(__APPLE__) | defined(sun)
 #pragma pack()
-#else
-#pragma pack(pop)
-#endif
 
 /* Array of structures to hold the ATR and other state value of each slot */
 static CcidDesc CcidSlots[CCID_DRIVER_MAX_READERS];
@@ -618,7 +610,8 @@
                                                || (ACS_ACR1251K_DUAL_READER == 
readerID)
                                                || (ACS_ACR1252_1S_CL_READER == 
readerID)
                                                || (ACS_ACR1252IMP_1S_CL_READER 
== readerID)
-                                               || (ACS_WALLETMATE_1S_CL_READER 
== readerID))
+                                               || (ACS_WALLETMATE_1S_CL_READER 
== readerID)
+                                               || (ACS_ACR1552_1S_CL_READER == 
readerID))
                                                *Value = 2;
 
                                        /* 3 CCID interfaces */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/acsccid-1.1.9/src/supported_readers.txt 
new/acsccid-1.1.10/src/supported_readers.txt
--- old/acsccid-1.1.9/src/supported_readers.txt 2023-03-15 09:45:30.000000000 
+0100
+++ new/acsccid-1.1.10/src/supported_readers.txt        2023-08-01 
09:58:22.000000000 +0200
@@ -65,6 +65,10 @@
 0x072f:0xb501:ACS ACR40T ICC Reader
 0x072f:0xb504:ACS ACR40 FW_Upgrade
 
+# ACR40U
+0x072f:0xb506:ACS ACR40U ICC Reader
+0x072f:0xb505:ACS SCR FW_Upgrade
+
 # ACR83U-A1
 0x072f:0x90d2:ACS ACR83U
 
@@ -233,6 +237,11 @@
 # ACR1311U-N1
 0x072f:0x2258:ACS ACR1311 PICC Reader
 
+# ACR1552U-M1/M2
+0x072f:0x2303:ACS ACR1552 1S CL Reader
+0x072f:0x2308:ACS ACR1552 CL Reader
+0x072f:0x2302:ACS ACR1552 USB FW_Upgrade
+
 # ACR1581U-C1
 0x072f:0x2301:ACS ACR1581 1S Dual Reader
 0x072f:0x2300:ACS ACR1581 USB FW_Upgrade

Reply via email to