OpenCard  
 
OCF, the OpenCard Framework is a standard Java framework for working with Smart Cards.  
 

com.ibm.opencard.terminal.pcsc10
Class Pcsc10CardTerminal

java.lang.Object
  |
  +--opencard.core.terminal.CardTerminal
        |
        +--com.ibm.opencard.terminal.pcsc10.Pcsc10CardTerminal

public class Pcsc10CardTerminal
extends CardTerminal
implements TerminalCommand, Pollable

Implementation of an OpenCard CardTerminal for PCSC.

Version:
$Id: Pcsc10CardTerminal.java,v 1.1 1999/12/02 16:06:11 damke Exp $
See Also:
CardTerminal

Fields inherited from class opencard.core.terminal.CardTerminal
address, name, slots, type
 
Constructor Summary
protected Pcsc10CardTerminal(java.lang.String name, java.lang.String type, java.lang.String address)
          Instantiate an Pcsc10Terminal.
 
Method Summary
protected  void cardRemoved(int slotID)
          Signal to observers that an inserted card was removed.
 void close()
          Close the connection to the card terminal.
 CardID getCardID(int slot)
          Return the CardID of the presently inserted card.
 CardID getCardID(int slot, int timeout)
          Deprecated.  
protected  void internalCloseSlotChannel(SlotChannel sc)
          The internal closeSlotChannel method.
protected  void internalOpenSlotChannel(int slotID)
          The internal openSlotChannel method.
protected  CardID internalReset(int slot, int ms)
          Implementation of CardTerminal.internalReset().
protected  ResponseAPDU internalSendAPDU(int slot, CommandAPDU capdu, int ms)
          The implementation of CardTerminal.internalSendAPDU().
 boolean isCardPresent(int slot)
          Check whether there is a smart card present.
 void open()
          Open the card terminal: We register with the CardTerminalRegistry as a Pollable card terminal.
 void poll()
          This method is normally used by the CardTerminalRegistry to generate the OpenCard events if the Slot implementation does not support events itself.
 byte[] sendTerminalCommand(byte[] cmd)
          Send control command to terminal.
protected  CardTerminalException translatePcscException(PcscException e)
          translate the PcscException into CardTerminalException.
 
Methods inherited from class opencard.core.terminal.CardTerminal
addSlots, cardInserted, closeSlotChannel, enumerateSlots, features, getAddress, getName, getSlot, getSlots, getType, internalFeatures, internalOpenSlotChannel, isCardPresent, isSlotChannelAvailable, isSlotChannelAvailable, openSlotChannel, openSlotChannel, openSlotChannel, reset, reset, sendAPDU, sendAPDU, sendVerifiedCommandAPDU, slots, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Pcsc10CardTerminal

protected Pcsc10CardTerminal(java.lang.String name,
                             java.lang.String type,
                             java.lang.String address)
                      throws CardTerminalException
Instantiate an Pcsc10Terminal.
Parameters:
name - The user friendly name.
type - The terminal type (here "PCSC")
address - not used
Throws:
CardTerminalException - Thrown when a problem occured.
Method Detail

open

public void open()
          throws CardTerminalException
Open the card terminal: We register with the CardTerminalRegistry as a Pollable card terminal.
Overrides:
open in class CardTerminal

close

public void close()
           throws CardTerminalException
Close the connection to the card terminal. Could be used by unregister to free up the resources used by the terminal.
Throws:
CardTerminalException - Thrown if there are problems with closing the connection
Overrides:
close in class CardTerminal

internalReset

protected CardID internalReset(int slot,
                               int ms)
                        throws CardTerminalException
Implementation of CardTerminal.internalReset().
Overrides:
internalReset in class CardTerminal

isCardPresent

public boolean isCardPresent(int slot)
                      throws CardTerminalException
Check whether there is a smart card present.
Parameters:
slot - Number of the slot to check (must be 0 for PCSC)
Returns:
True if there is a smart card inserted in the card terminals slot.
Overrides:
isCardPresent in class CardTerminal

getCardID

public CardID getCardID(int slot,
                        int timeout)
                 throws CardTerminalException
Deprecated.  
Overrides:
getCardID in class CardTerminal

getCardID

public CardID getCardID(int slot)
                 throws CardTerminalException
Return the CardID of the presently inserted card. Will returned the cached card if slot's status has not changed; otherwise it will really retrieve the CardID.

Parameters:
slot - slot number
Returns:
A CardID object representing the inserted smart card.
Throws:
CardTerminalException - thrown when problem occured getting the ATR of the card
Overrides:
getCardID in class CardTerminal

internalOpenSlotChannel

protected void internalOpenSlotChannel(int slotID)
                                throws CardTerminalException
The internal openSlotChannel method. internalOpenSlotChannel is executed at the beginning of openSlotChannel.
Parameters:
slotID - The number of the slot for which a SlotChannel is requested.
Overrides:
internalOpenSlotChannel in class CardTerminal

internalCloseSlotChannel

protected void internalCloseSlotChannel(SlotChannel sc)
                                 throws CardTerminalException
The internal closeSlotChannel method. internalCloseSlotChannel is executed at the end of closeSlotChannel.
Parameters:
SlotChannel - The SlotChannel to close.
Throws:
CardTerminalException - thrown in case of errors closing the card (e.g. error disconnecting the card).
Overrides:
internalCloseSlotChannel in class CardTerminal

sendTerminalCommand

public byte[] sendTerminalCommand(byte[] cmd)
                           throws CardTerminalException
Send control command to terminal.
Specified by:
sendTerminalCommand in interface TerminalCommand
Parameters:
cmd - a byte array containing the command to be send to the card terminal
Returns:
Response from terminal.
Throws:
CardTerminalException - Exception thrown by driver.
See Also:
TerminalCommand

internalSendAPDU

protected ResponseAPDU internalSendAPDU(int slot,
                                        CommandAPDU capdu,
                                        int ms)
                                 throws CardTerminalException
The implementation of CardTerminal.internalSendAPDU().
Parameters:
slot - logical slot number
capdu - C-APDU to send to the card
ms - not supported, ignored
Overrides:
internalSendAPDU in class CardTerminal

cardRemoved

protected void cardRemoved(int slotID)
Signal to observers that an inserted card was removed.

Parameters:
slot - slot number
Overrides:
cardRemoved in class CardTerminal

poll

public void poll()
          throws CardTerminalException
This method is normally used by the CardTerminalRegistry to generate the OpenCard events if the Slot implementation does not support events itself.
Specified by:
poll in interface Pollable

translatePcscException

protected CardTerminalException translatePcscException(PcscException e)
translate the PcscException into CardTerminalException.