com.ibm.jc.terminal
Class NativeJCTerminal

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

public class NativeJCTerminal
extends JCTerminal

Card terminal based on vendor specific DLLs. This terminal class calls into "jct.dll" provided with this package which in turn loads vendor specific DLLs providing actual access to physical terminals. The vendor specific DLLs may implement different APIs. Jct.dll is capabable of handling some of these APIs. For setting up a NativeJCTerminal the caller has to specify the name of a DLL and the API it is implementing.


Field Summary
static int CP8_API
          API #7: Loaded DLL must implement Bull CP8 API
static int CT_UTIMACO_API
          API #9: Loaded DLL must implement Utimaco CT-API
static int CT11_CHERRY_API
          API #2: Loaded DLL must implement CT-API 1.1 as defined for Cherry keyboards.
static int CT11_IBM_API
          API #3: Loaded DLL must implement CT-API 1.1 as defined for IBM terminals.
static int CT11_KAAN_API
          API #6: Loaded DLL must implement CT-API 1.1 as defined for Kobil Kaan terminals.
static int CT11_SWAPSMART_API
          API #1: Loaded DLL must implement CT-API 1.1 as defined for SwapSmart PCMCIA terminal.
static int CT11_TOWITOKO_API
          API #5: Loaded DLL must implement CT-API 1.1 as defined for Towitoko terminals.
static int IBM4758_API
          API #8: Loaded DLL must implement IBM 4758 API
static int IKEY_API
          API #11: Loaded DLL must implement USB iKey Interface
static int PCSC_API
          API #4: Loaded DLL must implement PC/SC API.
static int TCL_API
          API #10: Loaded DLL must implement T=CL (V 3.0) contactless readers
static int XAC_API
          API #0: Loaded DLL must implement proprietary interface of XAC Automation Corp.
 
Fields inherited from class com.ibm.jc.JCTerminal
CARD_PRESENT, ERROR, NOT_CONNECTED, PROTOCOL_T0, PROTOCOL_T1, PROTOCOL_TCL, SLOT_EMPTY
 
Constructor Summary
NativeJCTerminal()
           
NativeJCTerminal(java.lang.String dll, int api)
          Create a Java terminal class using the given DLL which implements the specified API.
 
Method Summary
 void close()
          Close connection to card terminal.
 void finalize()
           
 void generateParityError(int n)
          Schedule generation of parity error for the n-th character to be transmitted (in or out).
 java.lang.String getErrorMessage()
           
 int getState()
           
 JCTerminal init(java.lang.Object param)
          Initialize terminal.
 byte[] ioctl(int req, byte[] param, int off, int len)
          Perform terminal-dependent action...
 void open()
          Open the card terminal.
 void pps(int protocol, int parameter)
          Select protocol and parameters for subsequent communication (can only be applied immediately after card reset).
 byte[] send(int nad, byte[] toSend, int offset, int len)
          Send data to the card (using the negotiated protocol).
 byte[] sendraw(byte[] data, int off, int len, int timeout)
          Send data to the card (using *no* protocol, raw bytes are transmitted without modification).
 java.lang.String toString()
           
 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, send
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

XAC_API

public static final int XAC_API
API #0: Loaded DLL must implement proprietary interface of XAC Automation Corp.

See Also:
Constant Field Values

CT11_SWAPSMART_API

public static final int CT11_SWAPSMART_API
API #1: Loaded DLL must implement CT-API 1.1 as defined for SwapSmart PCMCIA terminal. (same as Towitoko)

See Also:
Constant Field Values

CT11_CHERRY_API

public static final int CT11_CHERRY_API
API #2: Loaded DLL must implement CT-API 1.1 as defined for Cherry keyboards.

See Also:
Constant Field Values

CT11_IBM_API

public static final int CT11_IBM_API
API #3: Loaded DLL must implement CT-API 1.1 as defined for IBM terminals.

See Also:
Constant Field Values

PCSC_API

public static final int PCSC_API
API #4: Loaded DLL must implement PC/SC API.

See Also:
Constant Field Values

CT11_TOWITOKO_API

public static final int CT11_TOWITOKO_API
API #5: Loaded DLL must implement CT-API 1.1 as defined for Towitoko terminals. (same CT-API as SwapSmart but behaviorally different)

See Also:
Constant Field Values

CT11_KAAN_API

public static final int CT11_KAAN_API
API #6: Loaded DLL must implement CT-API 1.1 as defined for Kobil Kaan terminals. (same CT-API as SwapSmart but behaviorally different)

See Also:
Constant Field Values

CP8_API

public static final int CP8_API
API #7: Loaded DLL must implement Bull CP8 API

See Also:
Constant Field Values

IBM4758_API

public static final int IBM4758_API
API #8: Loaded DLL must implement IBM 4758 API

See Also:
Constant Field Values

CT_UTIMACO_API

public static final int CT_UTIMACO_API
API #9: Loaded DLL must implement Utimaco CT-API

See Also:
Constant Field Values

TCL_API

public static final int TCL_API
API #10: Loaded DLL must implement T=CL (V 3.0) contactless readers

See Also:
Constant Field Values

IKEY_API

public static final int IKEY_API
API #11: Loaded DLL must implement USB iKey Interface

See Also:
Constant Field Values
Constructor Detail

NativeJCTerminal

public NativeJCTerminal()

NativeJCTerminal

public NativeJCTerminal(java.lang.String dll,
                        int api)
Create a Java terminal class using the given DLL which implements the specified API.

Parameters:
dll - the name of the DLL. The DLL must be found via platform dependent search mechanism (in Win32 PATH environment variable).
api - the number of the API the DLL implements (see constants).
Method Detail

finalize

public void finalize()

init

public JCTerminal init(java.lang.Object param)
Description copied from class: JCTerminal
Initialize terminal. If this method is called with null then the terminal uses some default settings.

Overrides:
init in class JCTerminal
Parameters:
param - some parameter initializing the terminal. The possible types and meanings depend on the specific terminal. It is expected that all terminals support at least some String based initialization.
Returns:
this

toString

public java.lang.String toString()
Overrides:
toString in class JCTerminal
Returns:
a description of the card terminal settings and the current terminal state. The string might span multiple lines and should not end with a new line. This default implementation returns the terminal name and the state as hexdecimal value. The terminal is either the full class name or the T part if the class name is of the form com.ibm.jc.terminal.TJCTerminal.

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.

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.

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[] data,
                      int off,
                      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:
data - byte array containing raw data to be sent
off - 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 protocol,
                int parameter)
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:
protocol - protocol type to be used (PROTOCOL_T0 or PROTOCOL_T1 in contact mode, PROTOCOL_TCL in contact-less mode)
parameter - 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)

ioctl

public byte[] ioctl(int req,
                    byte[] param,
                    int off,
                    int len)
Description copied from class: JCTerminal
Perform terminal-dependent action...

Overrides:
ioctl in class JCTerminal
Parameters:
req - request code
param - array holding request parameters (may be null)
off - offset to parameters
len - length of parameters
Returns:
array holding the request response