Channels Sample
The Channels
sample demonstrates the behavior of Java Card technology-based logical channels by showing how two applets that interact with each other can each be selected for use at the same time.
The Channels
sample also demonstrates the use of
ExtendedLength
APDU.
The Channels
sample mimics the behavior of a device connected to a
network service. A connection manager tracks whether the device is connected to the
service and whether the connection is local or remote.
While it is connected, the user's account is debited on a unit of time basis. The debit rate is based on whether the connection is local or remote.
The sample employs two applets to simulate the behavior of logical channels:
-
The
ConnectionManager
applet manages the connection. -
AccountAccessor
applet manages the account.
When the user turns on the device, the ConnectionManager
applet is
selected. The ConnectionManager
implements the
ExtendedLength
interface to handle APDUs with larger data segments
such as the ones used for key exchange in the sample. Every unit of time the terminal
sends a message containing the area code to the card.
When the user wants to use the service, the AccountAccessor
applet is
selected on another logical channel so that the terminal can query the balance. The
AccountAccessor
can return the balance only if the
ConnectionManager
is active. The ConnectionManager
applet sets the connection and tracks the connection status.
Based on the value of an area code variable, the
ConnectionManager
determines whether the connection is local or
remote. AccountAccessor
uses this information to debit the account at
the appropriate rate. The connection is disabled when the user completes the call or
when the account is deleted
Follow one of these sets of instructions to run this sample: