So what's the semantics behind the function pointer returned for TAG_IFD_POLLING_THREAD_WITH_TIMEOUT, well call this LongPoll() for our discussion.
Essentially I have a working IFD without this capabiltiy and am now trying to add this in. In my implementation the LongPoll() function always sleeps on the timeout, and returns either at timeout or immedatley on smart card insert. If a smart card is present on return it returns IFD_SUCCESS, else it returns IFD_ICC_NOT_PRESENT. IFDHPresence() returns IFD_ICC_SUCCESS on smart card present or IFD_ICC_NOT_PRESENT However, I see in the logs that my card gets powered down, looks like for some power saving thing, however, when I try to run an opensc command like pkcs15-tool -c, it says no card inserted. See attached logs. -- Respectfully, William C Roberts
00000000 pcscdaemon.c:263:main() pcscd set to foreground with debug send to stdout 00000158 configfile.l:284:DBGetReaderListDir() Parsing conf directory: /etc/reader.conf.d/ 00000039 configfile.l:318:DBGetReaderListDir() Skipping non regular file: .. 00000013 configfile.l:356:DBGetReaderList() Parsing conf file: /etc/reader.conf.d//pascbtbridge 00000071 configfile.l:213:evaluatetoken() Add reader: Generic Java BT IFD 00000027 configfile.l:356:DBGetReaderList() Parsing conf file: /etc/reader.conf.d//libccidtwin 00000042 configfile.l:318:DBGetReaderListDir() Skipping non regular file: . 00000027 readerfactory.c:1016:RFInitializeReader() Attempting startup of Generic Java BT IFD 00 00 using /home/w2.roberts/workspace/smartcard/linux-ifd/out/lib/libpascbtbridge.so 00003199 readerfactory.c:901:RFBindFunctions() Loading IFD Handler 3.0 00340909 readerfactory.c:347:RFAddReader() Result code 0 00000010 readerfactory.c:348:RFAddReader() Result dwsize 8 00000002 readerfactory.c:349:RFAddReader() Result fct 8 00000011 readerfactory.c:350:RFAddReader() Result fn 0x7f098739efa1 00000002 readerfactory.c:358:RFAddReader() Using the reader polling thread 00000370 pcscdaemon.c:569:main() pcsc-lite 1.8.13 daemon ready. 00001714 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001 00000107 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001 00000136 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x8087, PID: 0x0024, path: /dev/bus/usb/001/002 00000162 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/003/001 00000113 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/003/001 00000112 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x046D, PID: 0xC05A, path: /dev/bus/usb/003/002 00000130 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0003, path: /dev/bus/usb/004/001 00000123 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/002/001 00000112 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/002/001 00000119 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x8087, PID: 0x0024, path: /dev/bus/usb/002/002 00000104 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x18D1, PID: 0x4EE0, path: /dev/bus/usb/002/018 00000093 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x8087, PID: 0x0024, path: /dev/bus/usb/002/002 00000104 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x0A12, PID: 0x0001, path: /dev/bus/usb/002/004 00000096 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x0A12, PID: 0x0001, path: /dev/bus/usb/002/004 00000091 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x8087, PID: 0x0024, path: /dev/bus/usb/002/002 00000098 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x03F0, PID: 0x0324, path: /dev/bus/usb/002/006 00000094 hotplug_libudev.c:296:get_driver() Looking for a driver for VID: 0x8087, PID: 0x0024, path: /dev/bus/usb/002/002 08501834 eventhandler.c:403:EHStatusHandlerThread() powerState: POWER_STATE_POWERED 00000012 eventhandler.c:418:EHStatusHandlerThread() Card inserted into Generic Java BT IFD 00 00 00000009 Card ATR: 3B 80 80 01 01 02274771 winscard_msg_srv.c:253:ProcessEventsServer() Common channel packet arrival 00000041 winscard_msg_srv.c:265:ProcessEventsServer() ProcessCommonChannelRequest detects: 22 00000006 pcscdaemon.c:134:SVCServiceRunLoop() A new context thread creation is requested: 22 00000131 winscard_svc.c:331:ContextThread() Authorized PC/SC client 00000023 winscard_svc.c:335:ContextThread() Thread is started: dwClientID=22, threadContext @0x1c7a6d0 00000017 winscard_svc.c:353:ContextThread() Received command: CMD_VERSION from client 22 00000008 winscard_svc.c:365:ContextThread() Client is protocol version 4:2 00000003 winscard_svc.c:374:ContextThread() Client protocol is 4:2 00000003 winscard_svc.c:376:ContextThread() Server protocol is 4:3 00000004 winscard_svc.c:385:ContextThread() CMD_VERSION rv=0x8010001D for client 22 00002248 winscard_msg_srv.c:253:ProcessEventsServer() Common channel packet arrival 00000031 winscard_msg_srv.c:265:ProcessEventsServer() ProcessCommonChannelRequest detects: 23 00000005 pcscdaemon.c:134:SVCServiceRunLoop() A new context thread creation is requested: 23 00000125 winscard_svc.c:331:ContextThread() Authorized PC/SC client 00000023 winscard_svc.c:335:ContextThread() Thread is started: dwClientID=23, threadContext @0x1c7aa50 00000015 winscard_svc.c:353:ContextThread() Received command: CMD_VERSION from client 23 00000008 winscard_svc.c:365:ContextThread() Client is protocol version 4:2 00000003 winscard_svc.c:374:ContextThread() Client protocol is 4:2 00000003 winscard_svc.c:376:ContextThread() Server protocol is 4:3 00000003 winscard_svc.c:385:ContextThread() CMD_VERSION rv=0x8010001D for client 23 00000607 winscard_svc.c:345:ContextThread() Client die: 22 00000012 winscard_svc.c:345:ContextThread() Client die: 23 00000045 winscard_svc.c:978:MSGCleanupClient() Thread is stopping: dwClientID=22, threadContext @0x1c7a6d0 00000008 winscard_svc.c:984:MSGCleanupClient() Freeing SCONTEXT @0x1c7a6d0 00000002 winscard_svc.c:978:MSGCleanupClient() Thread is stopping: dwClientID=23, threadContext @0x1c7aa50 00000007 winscard_svc.c:984:MSGCleanupClient() Freeing SCONTEXT @0x1c7aa50 02722430 eventhandler.c:477:EHStatusHandlerThread() powerState: POWER_STATE_UNPOWERED
_______________________________________________ Pcsclite-muscle mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pcsclite-muscle
