PC/SC: add additional flags to indicate readers which are in use and readers which are in exclusive mode.
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5015 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
parent
d1d64f9dfe
commit
c911c2ffeb
|
@ -243,8 +243,11 @@ struct sc_reader_driver {
|
|||
};
|
||||
|
||||
/* reader flags */
|
||||
#define SC_READER_CARD_PRESENT 0x00000001
|
||||
#define SC_READER_CARD_CHANGED 0x00000002
|
||||
#define SC_READER_CARD_PRESENT 0x00000001
|
||||
#define SC_READER_CARD_CHANGED 0x00000002
|
||||
#define SC_READER_CARD_INUSE 0x00000004
|
||||
#define SC_READER_CARD_EXCLUSIVE 0x00000008
|
||||
|
||||
/* reader capabilities */
|
||||
#define SC_READER_CAP_DISPLAY 0x00000001
|
||||
#define SC_READER_CAP_PIN_PAD 0x00000002
|
||||
|
|
|
@ -308,7 +308,7 @@ static int refresh_attributes(sc_reader_t *reader)
|
|||
return SC_ERROR_READER_DETACHED;
|
||||
}
|
||||
|
||||
reader->flags &= ~SC_READER_CARD_CHANGED;
|
||||
reader->flags &= ~(SC_READER_CARD_CHANGED|SC_READER_CARD_INUSE|SC_READER_CARD_EXCLUSIVE);
|
||||
|
||||
if (state & SCARD_STATE_PRESENT) {
|
||||
reader->flags |= SC_READER_CARD_PRESENT;
|
||||
|
@ -321,6 +321,12 @@ static int refresh_attributes(sc_reader_t *reader)
|
|||
reader->atr_len = priv->reader_state.cbAtr;
|
||||
memcpy(reader->atr, priv->reader_state.rgbAtr, reader->atr_len);
|
||||
}
|
||||
|
||||
/* Is the reader in use by some other application ? */
|
||||
if (state & SCARD_STATE_INUSE)
|
||||
reader->flags |= SC_READER_CARD_INUSE;
|
||||
if (state & SCARD_STATE_EXCLUSIVE)
|
||||
reader->flags |= SC_READER_CARD_EXCLUSIVE;
|
||||
|
||||
if (old_flags & SC_READER_CARD_PRESENT) {
|
||||
/* Requires pcsc-lite 1.6.5+ to function properly */
|
||||
|
@ -342,7 +348,6 @@ static int refresh_attributes(sc_reader_t *reader)
|
|||
reader->flags &= ~SC_READER_CARD_PRESENT;
|
||||
if (old_flags & SC_READER_CARD_PRESENT)
|
||||
reader->flags |= SC_READER_CARD_CHANGED;
|
||||
|
||||
}
|
||||
sc_debug(reader->ctx, SC_LOG_DEBUG_NORMAL, "card %s%s",
|
||||
reader->flags & SC_READER_CARD_PRESENT ? "present" : "absent",
|
||||
|
|
Loading…
Reference in New Issue