com.ibm.jc.terminal
Class TimeJCTerminal

java.lang.Object
  extended bycom.ibm.jc.JCTerminal
      extended bycom.ibm.jc.terminal.TimeJCTerminal

public class TimeJCTerminal
extends JCTerminal


Field Summary
static int MAX_TIMINGS
           
protected  JCTerminal terminal
          Original terminal.
 
Fields inherited from class com.ibm.jc.JCTerminal
CARD_PRESENT, ERROR, NOT_CONNECTED, PROTOCOL_T0, PROTOCOL_T1, PROTOCOL_TCL, SLOT_EMPTY
 
Constructor Summary
TimeJCTerminal()
          Default constructor for generic instanciation.
 
Method Summary
 void close()
          Close connection to card terminal.
 void generateParityError(int n)
          Schedule generation of parity error for the n-th character to be transmitted (in or out).
 long getCmdTime(int i)
          Allows external world access to the collected measurements.
 java.lang.String getErrorMessage()
           
 JCTerminal getOriginal()
           
 int getState()
           
 JCTerminal init(java.lang.Object param)
          Initialize trace terminal with the terminal that is being traced.
 void open()
          Open the card terminal.
 void pps(int proto, int param)
          Select protocol and parameters for subsequent communication (can only be applied immediately after card reset).
 void reset()
          Resets timing number counter -- discards previous measurements
 byte[] send(int nad, byte[] toSend, int offset, int len)
          Send data to the card (using the negotiated protocol).
 byte[] sendraw(byte[] toSend, int offset, int len, int timeout)
          Send data to the card (using *no* protocol, raw bytes are transmitted without modification).
 void setOverhead(int overhead)
          Set Overhead as determined by some application command
 void sum()
          Switch to add-only mode.
 byte[] waitForCard(int time)
          Wait for insertion of a card and return ATR (answer to reset).
 
Methods inherited from class com.ibm.jc.JCTerminal
filterFor, filterFor, getInstance, ioctl, send, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

MAX_TIMINGS

public static final int MAX_TIMINGS
See Also:
Constant Field Values

terminal

protected JCTerminal terminal
Original terminal.

Constructor Detail

TimeJCTerminal

public TimeJCTerminal()
Default constructor for generic instanciation.

Method Detail

reset

public void reset()
Resets timing number counter -- discards previous measurements


sum

public void sum()
Switch to add-only mode. Sensible for a longer sequence of commands.


setOverhead

public void setOverhead(int overhead)
Set Overhead as determined by some application command


getCmdTime

public long getCmdTime(int i)
Allows external world access to the collected measurements.

Parameters:
i - index of timing information requested
Returns:
long value in microseconds that the indicated command took (first byte in - last byte put)

init

public JCTerminal init(java.lang.Object param)
Initialize trace terminal with the terminal that is being traced. The previous terminal will be closed.

Overrides:
init in class JCTerminal
Parameters:
param - either an initialized JCTerminal instance or a string of the form "term:param". The part term is passed JCTerminal,getInstance() to create the observed terminal and param is used to initialize it.
Returns:
this

open

public void open()
Description copied from class: JCTerminal
Open the card terminal. Access to the terminal by other processes usually is not possible anylonger.

Specified by:
open in class JCTerminal

close

public void close()
Description copied from class: JCTerminal
Close connection to card terminal. The caller can reconnect to the terminal using the open() method.

Specified by:
close in class JCTerminal
See Also:
JCTerminal.open()

waitForCard

public byte[] waitForCard(int time)
Description copied from class: JCTerminal
Wait for insertion of a card and return ATR (answer to reset). If a card is already inserted this explicitly resets the card and returns the ATR. If no card is inserted the call blocks for a specified amount of time.

Note, not all terminals support the time parameter. It is only guaranteed that the call will not block longer than the specified time. It might return immediately with null.

Specified by:
waitForCard in class JCTerminal
Parameters:
time - the calls blocks for specified milliseconds.
Returns:
ATR (answer to reset) or null if no ATR could be retrieved. The reason might be that no card is inserted or because of communication problems.

getErrorMessage

public java.lang.String getErrorMessage()
Overrides:
getErrorMessage in class JCTerminal
Returns:
a description of the last error. If not error is registered or if there is not verbose description a null value is returned. This default implementation returns null.

getState

public int getState()
Specified by:
getState in class JCTerminal
Returns:
the status of the terminal. See constants. The status condition of the last call to the terminal.

send

public byte[] send(int nad,
                   byte[] toSend,
                   int offset,
                   int len)
Description copied from class: JCTerminal
Send data to the card (using the negotiated protocol). (To make applications independent of logical channels JCard.send() should be used)

Specified by:
send in class JCTerminal
Parameters:
nad - node address to which data is being sent (high nibble = destination address, low = source address). Address values: 2=host, 1=terminal, 0=card. A value of 0 means from host to card.
toSend - byte array containing APDU data to be sent
offset - offset starting at which APDU data sending is to begin
len - number of bytes to be transmitted
Returns:
response APDU as a byte array
See Also:
com.ibm.jc.JCard.send

sendraw

public byte[] sendraw(byte[] toSend,
                      int offset,
                      int len,
                      int timeout)
Description copied from class: JCTerminal
Send data to the card (using *no* protocol, raw bytes are transmitted without modification).

Overrides:
sendraw in class JCTerminal
Parameters:
toSend - byte array containing raw data to be sent
offset - offset starting at which raw data sending is to begin
len - number of bytes to be transmitted
timeout - time to wait for response data (time unit is device-dependent, ignored by some readers)
Returns:
raw response data

pps

public void pps(int proto,
                int param)
Description copied from class: JCTerminal
Select protocol and parameters for subsequent communication (can only be applied immediately after card reset).

Overrides:
pps in class JCTerminal
Parameters:
proto - protocol type to be used (PROTOCOL_T0 or PROTOCOL_T1 in contact mode, PROTOCOL_TCL in contact-less mode)
param - baud rate
See Also:
PROTOCOL_T0, PROTOCOL_T1, PROTOCOL_TCL, send

generateParityError

public void generateParityError(int n)
Description copied from class: JCTerminal
Schedule generation of parity error for the n-th character to be transmitted (in or out).

Overrides:
generateParityError in class JCTerminal
Parameters:
n - index of character to manipulate (0-based)

getOriginal

public JCTerminal getOriginal()