/*
*
*
* 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
//-----------------------------------------------------------------------------
/**
*
* The <code>MEProfile</code> class contains methods to question the handset
* profile, regarding the SIM Application Toolkit and supposing that this
* profile has been set by the <b>Terminal Profile</b> APDU command.
* The following table gives the index value according to the facility to
* check. This class contains only static methods, no instance of this class is
* necessary.<p>
*
* <br><br><Table Border="1" Cellpadding="3"><tr bgcolor=#c0c0c0 align=center>
* <td> <b>Facility</b> </td>
* <td> <b>Index</b> </td></tr>
* <tr><td> Profile download </td>
* <td> 0 </td></tr>
* <tr><td> SMS-PP data download </td>
* <td> 1 </td></tr>
* <tr><td> Cell Broadcast data download </td>
* <td> 2 </td></tr>
* <tr><td> Menu selection </td>
* <td> 3 </td></tr>
* <tr><td> '9E xx' response code for SIM data download error</td>
* <td> 4 </td></tr>
* <tr><td> Timer Expiration </td>
* <td> 5 </td></tr>
* <tr><td> USSD string data object supported in Call Control</td>
* <td> 6 </td></tr>
* <tr><td> Envelope Call Control sent during auto. redial </td>
* <td> 7 </td></tr>
* <tr><td> command result </td>
* <td> 8 </td></tr>
* <tr><td> Call Control by SIM </td>
* <td> 9 </td></tr>
* <tr><td> Cell identity included in Call Control by SIM </td>
* <td> 10 </td></tr>
* <tr><td> MO short message control by SIM </td>
* <td> 11 </td></tr>
* <tr><td> Handling of the alpha identifier, user indication</td>
* <td> 12 </td></tr>
* <tr><td> UCS2 Entry supported </td>
* <td> 13 </td></tr>
* <tr><td> UCS2 Display supported </td>
* <td> 14 </td></tr>
* <tr><td> Display of the extension Text </td>
* <td> 15 </td></tr>
* <tr><td> Proactive SIM: Display Text </td>
* <td> 16 </td></tr>
* <tr><td> Proactive SIM: Get Inkey </td>
* <td> 17 </td></tr>
* <tr><td> Proactive SIM: Get Input </td>
* <td> 18 </td></tr>
* <tr><td> Proactive SIM: More Time </td>
* <td> 19 </td></tr>
* <tr><td> Proactive SIM: Play Tone </td>
* <td> 20 </td></tr>
* <tr><td> Proactive SIM: Poll Interval </td>
* <td> 21 </td></tr>
* <tr><td> Proactive SIM: Polling Off </td>
* <td> 22 </td></tr>
* <tr><td> Proactive SIM: Refresh </td>
* <td> 23 </td></tr>
* <tr><td> Proactive SIM: Select Item </td>
* <td> 24 </td></tr>
* <tr><td> Proactive SIM: Send Short Message </td>
* <td> 25 </td></tr>
* <tr><td> Proactive SIM: Send SS </td>
* <td> 26 </td></tr>
* <tr><td> Proactive SIM: Send USSD </td>
* <td> 27 </td></tr>
* <tr><td> Proactive SIM: Set Up Call </td>
* <td> 28 </td></tr>
* <tr><td> Proactive SIM: Set Up Menu </td>
* <td> 29 </td></tr>
* <tr><td> Proactive SIM: Provide Local Information </td>
* <td> 30 </td></tr>
* <tr><td> Proactive SIM: Provide Local Information (NMR) </td>
* <td> 31 </td></tr>
* <tr><td> Proactive SIM: Set Up Event List </td>
* <td> 32 </td></tr>
* <tr><td> Event: MT call </td>
* <td> 33 </td></tr>
* <tr><td> Event: Call connected </td>
* <td> 34 </td></tr>
* <tr><td> Event: Call disconnected </td>
* <td> 35 </td></tr>
* <tr><td> Event: Location status </td>
* <td> 36 </td></tr>
* <tr><td> Event: User activity </td>
* <td> 37 </td></tr>
* <tr><td> Event: Idle screen available </td>
* <td> 38 </td></tr>
* <tr><td> Event: Card reader status </td>
* <td> 39 </td></tr>
* <tr><td> Event: Language selection </td>
* <td> 40 </td></tr>
* <tr><td> Event: Browser termination </td>
* <td> 41 </td></tr>
* <tr><td> RFU </td>
* <td> 42 </td></tr>
* <tr><td> RFU </td>
* <td> 43 </td></tr>
* <tr><td> RFU </td>
* <td> 44 </td></tr>
* <tr><td> RFU </td>
* <td> 45 </td></tr>
* <tr><td> RFU </td>
* <td> 46 </td></tr>
* <tr><td> RFU </td>
* <td> 47 </td></tr>
* <tr><td> Proactive SIM: Power ON Card </td>
* <td> 48 </td></tr>
* <tr><td> Proactive SIM: Power OFF Card </td>
* <td> 49 </td></tr>
* <tr><td> Proactive SIM: Perform Card APDU </td>
* <td> 50 </td></tr>
* <tr><td> Proactive SIM: Get Reader Status (reader status) </td>
* <td> 51 </td></tr>
* <tr><td> Proactive SIM: Get Reader Status (reader ident.) </td>
* <td> 52 </td></tr>
* <tr><td> RFU </td>
* <td> 53 </td></tr>
* <tr><td> RFU </td>
* <td> 54 </td></tr>
* <tr><td> RFU </td>
* <td> 55 </td></tr>
* <tr><td> Proactive SIM: Timer Management (start, stop) </td>
* <td> 56 </td></tr>
* <tr><td> Proactive SIM: Timer Management (get cur. value) </td>
* <td> 57 </td></tr>
* <tr><td> Proactive SIM: Provide Local Info (date,time...) </td>
* <td> 58 </td></tr>
* <tr><td> Binary choice in Get Inkey </td>
* <td> 59 </td></tr>
* <tr><td> Set Up Idle Mode Text </td>
* <td> 60 </td></tr>
* <tr><td> Run AT Command </td>
* <td> 61 </td></tr>
* <tr><td> 2nd Alpha Id in Set Up Call </td>
* <td> 62 </td></tr>
* <tr><td> 2nd Capability configuration par. in Call Control</td>
* <td> 63 </td></tr>
* <tr><td> Sustained Display Text </td>
* <td> 64 </td></tr>
* <tr><td> Send DTMF </td>
* <td> 65 </td></tr>
* <tr><td> Proactive SIM: Provide Local Info. (BCCH) </td>
* <td> 66 </td></tr>
* <tr><td> Proactive SIM: Provide Local Info. (language) </td>
* <td> 67 </td></tr>
* <tr><td> Proactive SIM: Provide Local Info. (Timing Adv.) </td>
* <td> 68 </td></tr>
* <tr><td> Proactive SIM: Language Notification </td>
* <td> 69 </td></tr>
* <tr><td> Proactive SIM: Launch Browser </td>
* <td> 70 </td></tr>
* <tr><td> RFU </td>
* <td> 71 </td></tr>
* <tr><td> Soft keys support for Select Item </td>
* <td> 72 </td></tr>
* <tr><td> Soft keys support for Set Up Menu </td>
* <td> 73 </td></tr>
* <tr><td> RFU </td>
* <td> 74 </td></tr>
* <tr><td> RFU </td>
* <td> 75 </td></tr>
* <tr><td> RFU </td>
* <td> 76 </td></tr>
* <tr><td> RFU </td>
* <td> 77 </td></tr>
* <tr><td> RFU </td>
* <td> 78 </td></tr>
* <tr><td> RFU </td>
* <td> 79 </td></tr>
* <tr><td> Maximum number of softkeys available (b0) </td>
* <td> 80 </td></tr>
* <tr><td> Maximum number of softkeys available (b1) </td>
* <td> 81 </td></tr>
* <tr><td> Maximum number of softkeys available (b2) </td>
* <td> 82 </td></tr>
* <tr><td> Maximum number of softkeys available (b3) </td>
* <td> 83 </td></tr>
* <tr><td> Maximum number of softkeys available (b4) </td>
* <td> 84 </td></tr>
* <tr><td> Maximum number of softkeys available (b5) </td>
* <td> 85 </td></tr>
* <tr><td> Maximum number of softkeys available (b6) </td>
* <td> 86 </td></tr>
* <tr><td> Maximum number of softkeys available (b7) </td>
* <td> 87 </td></tr>
* <tr><td> RFU </td>
* <td> 88 </td></tr>
* <tr><td> RFU </td>
* <td> 89 </td></tr>
* <tr><td> RFU </td>
* <td> 90 </td></tr>
* <tr><td> RFU </td>
* <td> 91 </td></tr>
* <tr><td> RFU </td>
* <td> 92 </td></tr>
* <tr><td> RFU </td>
* <td> 93 </td></tr>
* <tr><td> RFU </td>
* <td> 94 </td></tr>
* <tr><td> RFU </td>
* <td> 95 </td></tr>
* <tr><td> RFU </td>
* <td> 96 </td></tr>
* <tr><td> RFU </td>
* <td> 97 </td></tr>
* <tr><td> RFU </td>
* <td> 98 </td></tr>
* <tr><td> RFU </td>
* <td> 99 </td></tr>
* <tr><td> RFU </td>
* <td> 100 </td></tr>
* <tr><td> RFU </td>
* <td> 101 </td></tr>
* <tr><td> RFU </td>
* <td> 102 </td></tr>
* <tr><td> RFU </td>
* <td> 103 </td></tr>
* <tr><td> Nb of characters down ME display (b0) </td>
* <td> 104 </td></tr>
* <tr><td> Nb of characters down ME display (b1) </td>
* <td> 105 </td></tr>
* <tr><td> Nb of characters down ME display (b2) </td>
* <td> 106 </td></tr>
* <tr><td> Nb of characters down ME display (b3) </td>
* <td> 107 </td></tr>
* <tr><td> Nb of characters down ME display (b4) </td>
* <td> 108 </td></tr>
* <tr><td> RFU </td>
* <td> 109 </td></tr>
* <tr><td> RFU </td>
* <td> 110 </td></tr>
* <tr><td> Screen Sizing parameters supported </td>
* <td> 111 </td></tr>
* <tr><td> Nb of characters accross ME display (b0) </td>
* <td> 112 </td></tr>
* <tr><td> Nb of characters accross ME display (b1) </td>
* <td> 113 </td></tr>
* <tr><td> Nb of characters accross ME display (b2) </td>
* <td> 114 </td></tr>
* <tr><td> Nb of characters accross ME display (b3) </td>
* <td> 115 </td></tr>
* <tr><td> Nb of characters accross ME display (b4) </td>
* <td> 116 </td></tr>
* <tr><td> Nb of characters accross ME display (b5) </td>
* <td> 117 </td></tr>
* <tr><td> Nb of characters accross ME display (b6) </td>
* <td> 118 </td></tr>
* <tr><td> Variable size fonts supported </td>
* <td> 119 </td></tr>
* <tr><td> Display can be resized </td>
* <td> 120 </td></tr>
* <tr><td> Text Wrapping supported </td>
* <td> 121 </td></tr>
* <tr><td> Text Scrolling supported </td>
* <td> 122 </td></tr>
* <tr><td> RFU </td>
* <td> 123 </td></tr>
* <tr><td> RFU </td>
* <td> 124 </td></tr>
* <tr><td> Width reduction when in a menu (b0) </td>
* <td> 125 </td></tr>
* <tr><td> Width reduction when in a menu (b1) </td>
* <td> 126 </td></tr>
* <tr><td> Width reduction when in a menu (b2) </td>
* <td> 127 </td></tr>
* <tr><td> RFU </td>
* <td> 128 </td></tr>
* <tr><td> RFU </td>
* <td> 129 </td></tr>
* <tr><td> RFU </td>
* <td> 130 </td></tr>
* <tr><td> RFU </td>
* <td> 131 </td></tr>
* <tr><td> RFU </td>
* <td> 132 </td></tr>
* <tr><td> RFU </td>
* <td> 133 </td></tr>
* </Table><br>
*
* Example of use in a standard Toolkit applet:<pre><code>
* private static final byte PROFILE_USSD = (byte)27;
*
* if (MEProfile.check(PROFILE_USSD) == true) {
* // USSD available on the handset
* sendTheRequest();
* } else {
* // abort applet
* return;
* }
* </code></pre>
*
* @version 8.3.0
*/
public final class MEProfile {
// ------------------------------- Constructors ---------------------------
/**
* constructor
*/
private MEProfile() {
}
// ------------------------------- Public methods -------------------------
/**
* Checks a facility in the handset profile.
*
* @param index the number of the facility to check, according to
* the table above.
*
* @return true if the facility is supported, false otherwise
*
* @exception ToolkitException with the following reason codes:
* <ul> <li>ME_PROFILE_NOT_AVAILABLE if Terminal Profile data
* are not available</ul>
*/
public static boolean check(byte index) throws ToolkitException {
return false;
}
/**
* Checks a set of facilities in the handset profile.
* The method checks all the facilities corresponding to bits set to 1 in
* the mask buffer.
*
* <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 check is performed.</em> <li><em>If
* </em><code>offset+length</code><em> is greater than
* </em><code>mask.length</code><em>, the length of the
* </em><code>mask</code><em> array an
* </em><code>ArrayIndexOutOfBoundsException</code><em> exception
* is thrown and no check is performed.</em> </ul>
*
* @param mask a byte array containing the mask to compare with the profile
* @param offset the starting offset of the mask in the byte array
* @param length the length of the mask (at least 1)
*
* @return true if the set of facilities is supported, false
* otherwise. If <code>length</code> is equal to <code>0</code>,
* true is returned.
*
* @exception NullPointerException if <code>mask</code> is <code>null</code>
* @exception ArrayIndexOutOfBoundsException if check would cause
* access of data outside mask array bounds
* @exception ToolkitException with the following reason codes:
* <ul> <li>ME_PROFILE_NOT_AVAILABLE if Terminal Profile data
* are not available</ul>
*/
public static boolean check(byte[] mask,
short offset,
short length)
throws NullPointerException,
ArrayIndexOutOfBoundsException,
ToolkitException {
return false;
}
/**
* Checks a facility in the handset profile.
*
* @param index the number of the facility to check, according to
* the table above.
*
* @return true if the facility is supported, false otherwise
*
* @exception ToolkitException with the following reason codes:
* <ul> <li>ME_PROFILE_NOT_AVAILABLE if Terminal Profile data
* are not available</ul>
*/
public static boolean check(short index) throws ToolkitException {
return false;
}
/**
* Returns the binary value of a parameter, delimited by two
* indexes, from the handset profile.
*
* @param indexMSB index of the Most Significant Bit of the
* handset profile .
* @param indexLSB index of the Lowest Significant Bit of the
* handset profile .
*
* @return binary value of the data field indicated in the handset profile.
*
* @exception ToolkitException with the following reason codes:
* <ul> <li>ME_PROFILE_NOT_AVAILABLE if Terminal Profile data
* are not available <li>BAD_INPUT_PARAMETER if (indexMSB >
* indexLSB +16) or (indexMSB < indexLSB) or (indexMSB < 0)
* or (indexLSB < 0) </ul>
*/
public static short getValue(short indexMSB, short indexLSB)
throws ToolkitException {
return 0;
}
/**
* Copies a part of the handset profile in a buffer.
*
* <p> Notes:<ul> <li><em>If </em><code>dstOffset</code><em> or
* </em><code>dstLength</code><em> parameter is negative an
* </em><code>ArrayIndexOutOfBoundsException</code> <em> exception
* is thrown and no copy is performed.</em> <li><em>If
* </em><code>dstOffset+dstLength</code><em> is greater than
* </em><code>dstBuffer.length</code><em>, the length of the
* </em><code>dstBuffer</code><em> array an
* </em><code>ArrayIndexOutOfBoundsException</code><em> exception
* is thrown and no copy is performed.</em> </ul>
*
* @param startOffset offset of the handset profile first byte to be copied
* @param dstBuffer destination byte array
* @param dstOffset offset within destination byte array to start copy into
* @param dstLength byte length to be copy
*
* @return dstOffset + dstLength
*
* @exception ArrayIndexOutOfBoundsException if copy would cause
* access of data outside array bounds
* @exception NullPointerException if <code>dstBuffer<code> is null
* @exception ToolkitException with the following reason codes:
* <ul> <li>ME_PROFILE_NOT_AVAILABLE if Terminal Profile data
* are not available</ul>
*/
public static short copy(short startOffset, byte[] dstBuffer,
short dstOffset, short dstLength)
throws ArrayIndexOutOfBoundsException,
NullPointerException, ToolkitException {
return 0;
}
}
|