public abstract class Card extends Object
CardTerminal.connect().
CardTerminal
| Modifier | Constructor and Description |
|---|---|
protected |
Card()
Constructs a new Card object.
|
| Modifier and Type | Method and Description |
|---|---|
abstract void |
beginExclusive()
Requests exclusive access to this card.
|
abstract void |
disconnect(boolean reset)
Disconnects the connection with this card.
|
abstract void |
endExclusive()
Releases the exclusive access previously established using
beginExclusive.
|
abstract ATR |
getATR()
Returns the ATR of this card.
|
abstract CardChannel |
getBasicChannel()
Returns the CardChannel for the basic logical channel.
|
abstract String |
getProtocol()
Returns the protocol in use for this card.
|
abstract CardChannel |
openLogicalChannel()
Opens a new logical channel to the card and returns it.
|
abstract byte[] |
transmitControlCommand(int controlCode, byte[] command)
Transmits a control command to the terminal device.
|
protected Card()
This constructor is called by subclasses only. Application should call the CardTerminal.connect() method to obtain a Card object.
public abstract ATRgetATR()
public abstract StringgetProtocol()
public abstract CardChannelgetBasicChannel()
SecurityException - if a SecurityManager exists and the caller does not have the required
permission
IllegalStateException - if this card object has been disposed of via the
disconnect() method
public abstract CardChannelopenLogicalChannel() throws CardException
MANAGE CHANNEL command that should use the format
[00 70 00 00 01].
SecurityException - if a SecurityManager exists and the caller does not have the required
permission
CardException - is a new logical channel could not be opened
IllegalStateException - if this card object has been disposed of via the
disconnect() method
public abstract void beginExclusive()
throws CardException
Once a thread has invoked beginExclusive, only this thread is allowed to communicate with this card until it calls endExclusive. Other threads attempting communication will receive a CardException.
Applications have to ensure that exclusive access is correctly released. This can be achieved by executing the beginExclusive() and endExclusive calls in a try ... finally block.
SecurityException - if a SecurityManager exists and the caller does not have the required
permission
CardException - if exclusive access has already been set or if exclusive access could not be established
IllegalStateException - if this card object has been disposed of via the
disconnect() method
public abstract void endExclusive()
throws CardException
beginExclusive.
SecurityException - if a SecurityManager exists and the caller does not have the required
permission
IllegalStateException - if the active Thread does not currently have exclusive access to this card or if this card object has been disposed of via the
disconnect() method
CardException - if the operation failed
public abstract byte[] transmitControlCommand(int controlCode,
byte[] command)
throws CardException
This can be used to, for example, control terminal functions like a built-in PIN pad or biometrics.
controlCode - the control code of the command
command - the command data
SecurityException - if a SecurityManager exists and the caller does not have the required
permission
NullPointerException - if command is null
CardException - if the card operation failed
IllegalStateException - if this card object has been disposed of via the
disconnect() method
public abstract void disconnect(boolean reset)
throws CardException
reset - whether to reset the card after disconnecting.
CardException - if the card operation failed
SecurityException - if a SecurityManager exists and the caller does not have the required
permission