/*
*
*
* Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version
* 2 only, as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License version 2 for more details (a copy is
* included at /legal/license.txt).
*
* You should have received a copy of the GNU General Public License
* version 2 along with this work; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
* Clara, CA 95054 or visit www.sun.com if you need additional
* information or have any questions.
*/
//-----------------------------------------------------------------------------
// PACKAGE DEFINITION
//-----------------------------------------------------------------------------
package sim.toolkit;
//-----------------------------------------------------------------------------
// IMPORTS
//-----------------------------------------------------------------------------
/**
*
* This class is the basic class for the definition of
* <b>Proactive commands
* </b>. Low level methods, as <code>init()</code>, <code>appendTLV()</code>...
* will be used to handle generic Proactive commands (standard or future
* definitions...). The ProactiveHandler class is a <b>Temporary JCRE Entry
* Point Object</b>.
* The Toolkit applets, which need to send Proactive commands,
* shall call the <code>getTheHandler()</code> static method to get the
* reference of this system instance.<p>
*
* Example of use:<pre><code>
* // constants definition
* private static final byte MY_COMMAND = (byte)0x33;
* private static final byte MY_TAG = (byte)0x45;
*
* ProactiveHandler proHdlr; // get the system instance
* proHdlr = ProactiveHandler.getTheHandler();
*
* // build and send a new Proactive
* // command
* proHdlr.init(MY_COMMAND, (byte)0, DEV_ID_ME);
* proHdlr.appendTLV((byte)(MY_TAG | TAG_SET_CR),
* (byte)0);
* short len = proHdlr.getLength(); // length should be 14 !
* byte result = proHdlr.send();
*
* private byte[] text = new byte[12]; // byte array definition
* text[0] = (byte)'S'; // text, in 8-bit format, is "SAT"
* text[1] = (byte)'A';
* text[2] = (byte)'T';
* // build and send a DisplayText command
* result = proHdlr.initDisplayText((byte)0x80, DCS_8_BIT_DATA,
* text, (short)0, (short)3);
* result = proHdlr.send();
* </code></pre>
*
* @version 8.3.0
*
* @see ViewHandler
* @see EditHandler
* @see ProactiveResponseHandler
* @see ToolkitException
*/
public final class ProactiveHandler extends EditHandler {
// ------------------------------- Constructors ---------------------------
/**
* Constructor
*/
private ProactiveHandler() {
}
// ------------------------------- Public methods -------------------------
/**
* Returns the single system instance of the ProactiveHandler class.
* The applet shall get the reference of the handler at its triggering,
* the beginning of the processToolkit method.
*
* @return reference of the system instance
*
* @exception ToolkitException with the following reason codes: <ul>
* <li><code>HANDLER_NOT_AVAILABLE</code> if the handler is busy.</ul>
*/
public static ProactiveHandler getTheHandler() throws ToolkitException {
return null;
}
/**
* Initializes the next Proactive command with Command Details and Device
* Identities TLV.
* The source device is always the SIM card. The command number is
* generated by the method. The Comprehension Required flags are set.
* After the method invocation no TLV is selected.
*
* @param type the command type
* @param qualifier the command qualifier
* @param dstDevice the destination device
*/
public void init(byte type,
byte qualifier,
byte dstDevice) {
}
/**
* Sends the current Proactive command.
*
* @return general result of the command (first byte of Result TLV in
* Terminal Response)
*
* @exception ToolkitException with the following reason codes: <ul>
* <li><code>UNAVAILABLE_ELEMENT</code> if the Result Simple TLV
* is missing.
* <li><code>OUT_OF_TLV_BOUNDARIES</code> if the general result
* byte is missing in the Result Simple TLV.</ul>
*/
public byte send() throws ToolkitException {
return 0;
}
/**
* Builds a Display Text Proactive command without sending the command.
* The Comprehension
* Required flags are all set to 1.
* After the method invocation no TLV is selected.
*
* <p>
* Notes:<ul>
* <li><em>If </em><code>offset</code><em> or </em><code>length</code><em>
* parameter is negative an
* </em><code>ArrayIndexOutOfBoundsException</code>
* <em> exception is thrown and no proactive command is build.</em>
* <li><em>If </em><code>offset+length</code><em> is greater than
* </em><code>buffer.length</code><em>, the length
* of the </em><code>buffer</code><em> array an
* </em><code>ArrayIndexOutOfBoundsException</code><em> exception is thrown
* and no proactive command is build.</em>
* </ul>
*
* @param qualifier Display Text command qualifier
* @param dcs data coding scheme
* @param buffer reference to the text string source buffer
* @param offset offset of the text string in the source buffer
* @param length length of the text string in the source buffer
*
* @exception NullPointerException if <code>buffer</code> is
* <code>null</code>
* @exception ArrayIndexOutOfBoundsException if initDisplayText would
* cause access of data outside array bounds
* @exception ToolkitException with the following reason codes: <ul>
* <li><code>HANDLER_OVERFLOW</code> if the ProactiveHandler buffer
* is to small to put the requested data </ul>
*/
public void initDisplayText(byte qualifier,
byte dcs,
byte[] buffer,
short offset,
short length) throws NullPointerException,
ArrayIndexOutOfBoundsException,
ToolkitException {
}
/**
* Builds a Get Inkey Proactive command without sending the command.
* The Comprehension
* Required flags are all set to 1.
* After the method invocation no TLV is selected.
*
* <p>
* Notes:<ul>
* <li><em>If </em><code>offset</code><em> or
* </em><code>length</code><em> parameter is negative an
* </em><code>ArrayIndexOutOfBoundsException</code>
* <em> exception is thrown and no proactive command is build.</em>
* <li><em>If </em><code>offset+length</code><em> is greater than
* </em><code>buffer.length</code><em>, the length
* of the </em><code>buffer</code><em> array an
* </em><code>ArrayIndexOutOfBoundsException</code><em> exception
* is thrown and no proactive command is build.</em>
* </ul>
*
* @param qualifier Get Inkey command qualifier
* @param dcs data coding scheme
* @param buffer reference to the displayed text string source buffer
* @param offset offset of the displayed text string in the source buffer
* @param length length of the displayed text string in the source buffer
*
* @exception NullPointerException if <code>buffer</code> is
* <code>null</code>
* @exception ArrayIndexOutOfBoundsException if initGetInkey would
* cause access of data outside array bounds.
* @exception ToolkitException with the following reason codes: <ul>
* <li><code>HANDLER_OVERFLOW</code> if the ProactiveHandler buffer
* is to small to put the requested data</ul>
*/
public void initGetInkey(byte qualifier,
byte dcs,
byte[] buffer,
short offset,
short length) throws NullPointerException,
ArrayIndexOutOfBoundsException,
ToolkitException {
}
/**
* Initialize the building of a Get Input Proactive command. The
* Comprehension Required flags are all set to 1.
* The following command parameters (i.e. TLVs) may be appended to the
* command before sending it: Default Text.
* After the method invocation no TLV is selected.
*
* <p>
* Notes:<ul>
* <li><em>If </em><code>offset</code><em> or </em><code>length</code><em>
* parameter is negative an
* </em><code>ArrayIndexOutOfBoundsException</code>
* <em> exception is thrown and no proactive command is build.</em>
* <li><em>If </em><code>offset+length</code><em>is greater than
* </em><code>buffer.length</code><em>, the length
* of the </em><code>buffer</code><em> array an
* </em><code>ArrayIndexOutOfBoundsException</code><em> exception is thrown
* and no proactive command is build.</em>
* </ul>
*
* @param qualifier Get Input command qualifier
* @param dcs data coding scheme
* @param buffer reference to the displayed text string source buffer
* @param offset offset of the displayed text string in the source buffer
* @param length length of the displayed text string in the source buffer
* @param minRespLength minimal length of the response text string
* @param maxRespLength maximal length of the response text string
*
* @exception NullPointerException if <code>buffer</code> is
* <code>null</code>
* @exception ArrayIndexOutOfBoundsException if initGetInput would cause
* access of data outside array bounds.
* @exception ToolkitException with the following reason codes: <ul>
* <li><code>HANDLER_OVERFLOW</code> if the ProactiveHandler buffer
* is to small to put the requested data</ul>
*/
public void initGetInput(byte qualifier,
byte dcs,
byte[] buffer,
short offset,
short length,
short minRespLength,
short maxRespLength) throws NullPointerException,
ArrayIndexOutOfBoundsException,
ToolkitException {
}
}
|