public class Reader
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static interface |
Reader.OnStateChangeListener
Interface definition for a callback to be invoked when the state of
reader is changed.
|
Modifier and Type | Field and Description |
---|---|
static int |
CARD_ABSENT
There is no card in the reader.
|
static int |
CARD_COLD_RESET
Cycle power and reset the card.
|
static int |
CARD_NEGOTIABLE
The card has been reset and is awaiting PTS negotiation.
|
static int |
CARD_POWER_DOWN
Power down the card.
|
static int |
CARD_POWERED
Power is being provided to the card, but the library is unaware of the
mode of the card.
|
static int |
CARD_PRESENT
There is a card in the reader, but it has not been moved into position
for use.
|
static int |
CARD_SPECIFIC
The card has been reset and specific communication protocols have been
established.
|
static int |
CARD_SWALLOWED
There is a card in the reader in position for use.
|
static int |
CARD_UNKNOWN
The library is unaware of the current state of the reader.
|
static int |
CARD_WARM_RESET
Force a reset on the card.
|
static int |
IOCTL_ACR128_READER_COMMAND
Control code for sending command to ACR128 reader.
|
static int |
IOCTL_ACR83_DISPLAY_LCD_MESSAGE
Control code for displaying LCD message on ACR83/APG8201 reader.
|
static int |
IOCTL_ACR83_GET_FIRMWARE_VERSION
Control code for getting firmware version from ACR83/APG8201 reader.
|
static int |
IOCTL_ACR83_READ_KEY
Control code for reading key from ACR83/APG8201 reader.
|
static int |
IOCTL_CCID_ESCAPE
Control code for sending escape command to the reader.
|
static int |
IOCTL_GET_FEATURE_REQUEST
Control code for getting supported features (PC/SC 2.0 Part 10).
|
static int |
PROTOCOL_DEFAULT
Use the default transmission parameters or card clock frequency.
|
static int |
PROTOCOL_OPTIMAL
Use optimal transmission parameters or card clock frequency.
|
static int |
PROTOCOL_RAW
Raw is the active protocol.
|
static int |
PROTOCOL_T0
T=0 is the active protocol.
|
static int |
PROTOCOL_T1
T=1 is the active protocol.
|
static int |
PROTOCOL_TX
This is the mask of ISO defined transmission protocols.
|
static int |
PROTOCOL_UNDEFINED
There is no active protocol.
|
Constructor and Description |
---|
Reader(UsbManager manager)
Creates an instance of Reader.
|
Modifier and Type | Method and Description |
---|---|
void |
close()
Closes the reader.
|
int |
control(int slotNum,
int controlCode,
byte[] inBuffer,
int inBufferLength,
byte[] outBuffer,
int outBufferLength)
Controls the reader.
|
byte[] |
getAtr(int slotNum)
Gets the ATR string.
|
UsbDevice |
getDevice()
Gets the device.
|
int |
getNumSlots()
Gets the number of slots.
|
int |
getProtocol(int slotNum)
Gets the active protocol.
|
java.lang.String |
getReaderName()
Gets the reader name.
|
int |
getState(int slotNum)
Gets the card state.
|
boolean |
isOpened()
Returns true if the reader is opened.
|
boolean |
isSupported(UsbDevice device)
Returns true if the reader is supported.
|
void |
open(UsbDevice device)
Opens the reader.
|
byte[] |
power(int slotNum,
int action)
Performs the power action on the card.
|
void |
setOnStateChangeListener(Reader.OnStateChangeListener listener)
Registers a callback to be invoked when the state of reader is changed.
|
int |
setProtocol(int slotNum,
int preferredProtocols)
Sets the protocol.
|
int |
transmit(int slotNum,
byte[] sendBuffer,
int sendBufferLength,
byte[] recvBuffer,
int recvBufferLength)
Transmits the APDU.
|
public static final int CARD_POWER_DOWN
public static final int CARD_COLD_RESET
public static final int CARD_WARM_RESET
public static final int PROTOCOL_UNDEFINED
public static final int PROTOCOL_T0
public static final int PROTOCOL_T1
public static final int PROTOCOL_RAW
public static final int PROTOCOL_TX
public static final int PROTOCOL_DEFAULT
public static final int PROTOCOL_OPTIMAL
public static final int CARD_UNKNOWN
public static final int CARD_ABSENT
public static final int CARD_PRESENT
public static final int CARD_SWALLOWED
public static final int CARD_POWERED
public static final int CARD_NEGOTIABLE
public static final int CARD_SPECIFIC
public static final int IOCTL_CCID_ESCAPE
public static final int IOCTL_ACR128_READER_COMMAND
public static final int IOCTL_ACR83_GET_FIRMWARE_VERSION
public static final int IOCTL_ACR83_DISPLAY_LCD_MESSAGE
public static final int IOCTL_ACR83_READ_KEY
public static final int IOCTL_GET_FEATURE_REQUEST
public Reader(UsbManager manager)
manager
- the USB manager.public boolean isSupported(UsbDevice device)
device
- the USB device.public void open(UsbDevice device)
device
- the USB device.public void close()
public boolean isOpened()
public UsbDevice getDevice()
public int getNumSlots()
public java.lang.String getReaderName()
public void setOnStateChangeListener(Reader.OnStateChangeListener listener)
listener
- the callback that will run.public byte[] power(int slotNum, int action) throws ReaderException
slotNum
- the slot number.action
- the action to be performed on the card:
CARD_POWER_DOWN
, CARD_COLD_RESET
or
CARD_WARM_RESET
.ReaderException
- if the reader is not opened or the reader is failed to
perform the power action on the card.public byte[] getAtr(int slotNum)
slotNum
- the slot number.public int setProtocol(int slotNum, int preferredProtocols) throws ReaderException
slotNum
- the slot number.preferredProtocols
- the preferred protocols. It can be combined with OR operation.
For example, PROTOCOL_T0
| PROTOCOL_T1
.PROTOCOL_T0
or
PROTOCOL_T1
.ReaderException
- if the reader is failed to set protocol.public int getProtocol(int slotNum)
slotNum
- the slot number.PROTOCOL_UNDEFINED
,
PROTOCOL_T0
or PROTOCOL_T1
.public int getState(int slotNum)
slotNum
- the slot number.CARD_ABSENT
, CARD_PRESENT
,
CARD_SWALLOWED
, CARD_POWERED
,
CARD_NEGOTIABLE
or CARD_SPECIFIC
.public int transmit(int slotNum, byte[] sendBuffer, int sendBufferLength, byte[] recvBuffer, int recvBufferLength) throws ReaderException
slotNum
- the slot number.sendBuffer
- the send buffer.sendBufferLength
- the send buffer length.recvBuffer
- the receive buffer.recvBufferLength
- the receive buffer length.ReaderException
- if the reader is not opened or the reader is failed to
transmit the APDU.public int control(int slotNum, int controlCode, byte[] inBuffer, int inBufferLength, byte[] outBuffer, int outBufferLength) throws ReaderException
slotNum
- the slot number.controlCode
- the control code.inBuffer
- the input buffer.inBufferLength
- the input buffer length.outBuffer
- the output buffer.outBufferLength
- the output buffer length.ReaderException
- if the reader is not opened or the reader does not accept the
control.Copyright © 2011-2014 Advanced Card Systems Ltd. All Rights Reserved.