[Pcsclite-muscle] libpcsclite API file descriptor for polling?

Arnaud Loonstra arnaud at sphaero.org
Mon Dec 21 11:06:09 UTC 2015


On 2015-12-20 22:37, Ludovic Rousseau wrote:
> 2015-12-20 14:57 GMT+01:00 Arnaud Loonstra <arnaud at sphaero.org [1]>:
>
>> Hi all,
>
> Hello,
>  
>
>> I was going through the internals of libpcsclite and as I noticed it
>> uses
>> IPC to communicate with the daemon I was wondering if it is
>> possible to
>> retrieve the sockets fd to add it to a poller?
>>
>> I noticed MessageReceive() in wincard_msg.c:449 is already using
>> select
>> (469)
>>
>> Is this possible through the current API?
>
> No, it is not possible through the current API.
> The API is a "standard" defined by the PCSC workgroup [1] and cant be
> changed like that.
>
> I would propose to use an intermediate thread that calls
> SCardGetStatusChange() [2] (or whatever PC/SC function you want to
> poll) that would write to a file descriptor you created for that.
>
> What do you want to do exactly?

My use case seems a simple one, I guess. I want to capture the events 
when a tag is detected by an NFC reader. As I'm integrating this into a 
ZeroMQ based application my first target was finding out how I can get 
the socket into a polling based application loop.

I'm using simple ACR122U based readers on Linux. The API search brought 
me to PCSC. As I found it uses 'select' I wondered if it is possible to 
add the IPC socket's FD to a poller and just use MessageSend as it is 
but trigger MessageReceive on the poll events.

So it seems the API won't let me but from the API internals it seems it 
could be possible. What I don't get is if the client library needs to 
request whether there is a tag detected (request-reply) or whether the 
daemon pushes its events through the IPC channel and the client just 
triggers when it receives something (publish-subscrive basically).

Rg,

Arnaud





More information about the Pcsclite-muscle mailing list