ToolkitRegistrypublic final class ToolkitRegistry extends Object The ToolkitRegistry class offers basic services and methods
to allow
any Toolkit applet to register its configuration (supported events) during
the install phase and possibly to change it during all the applet life time.
Each toolkit applet will get a reference to its registry entry with the
static
method getEntry . The initial state of all the events
is cleared.
Note: the constants related to the events are defined in the
ToolkitConstants interface.
Example of use:
public class MyToolkitApplet extends Applet implements
ToolkitInterface, ToolkitConstants {
// data fields
private ToolkitRegistry reg;
private byte[] menuEntry = { ... };
private byte menuId;
//
// Constructor of applet
//
public MyToolkitApplet() {
// get the reference of the applet ToolkitRegistry object ...
reg = ToolkitRegistry.getEntry();
// ...and initialize it according to the applet characteristics
menuId = reg.initMenuEntry(menuEntry, (short)0,
(short)menuEntry.length,
PRO_CMD_SET_UP_CALL, false, 0, 0);
reg.disableMenuEntry(menuId);
reg.setEvent(EVENT_FORMATTED_SMS_PP_ENV);
reg.setEvent(EVENT_CALL_CONTROL_BY_SIM);
}
//
// Install method
// *param bArray the array containing installation parameters
// *param bOffset the starting offset in bArray
// *param bLength the length in bytes of the parameter data in bArray
//
public static void install(byte bArray[], short bOffset, byte bLength)
throws ISOException {
// create and register applet
MyToolkitApplet applet = new MyToolkitApplet();
applet.register();
}
//
// Process toolkit events
// *param event the type of event to be processed
// *exception ToolkitException
//
public void processToolkit(byte event) throws ToolkitException {
if (event == EVENT_FORMATTED_SMS_PP_ENV) {
reg.enableMenuEntry(menuId);
} else if (event == EVENT_MENU_SELECTION) {
//...
}
}
}
|
Constructors Summary |
---|
private ToolkitRegistry()Constructor
|
Methods Summary |
---|
public byte | allocateTimer()Asks the Toolkit framework to allocate a Timer that the applet
can manage.
By calling this method the applet is registered to the
EVENT_TIMER_EXPIRATION of the allocated timer.
The timer is allocated by the applet until it explicitly releases it.
So it can then issue the Timer Management proactive command to start,
stop or get the value of its allocated timer.
ToolkitException.throwIt(ToolkitException.NO_TIMER_AVAILABLE);
return 0;
| public void | changeMenuEntry(byte id, byte[] menuEntry, short offset, short length, byte nextAction, boolean helpSupported, byte iconQualifier, short iconIdentifier)Changes the value of a menu entry. The default state of the changed
menu
entry is 'enabled'. The value of the helpSupported boolean
parameter defines the registration status of the
EVENT_MENU_SELECTION_HELP_REQUEST
event. The icon identifier provided will be added to the icon
identifier list
of the item icon identifier list Simple TLV if all the applets
registered
to the EVENT_MENU_SELECTION provide it.
The Icon list qualifier transmitted to the ME will be 'icon is not self
explanatory' if one of the applet registered prefers this qualifier.
After the invocation of this method, during the current card session,
the SIM Toolkit Framework
shall dynamically update the menu stored in the ME.
Notes:
- If
offset or length
parameter is negative an
ArrayIndexOutOfBoundsException
exception is thrown and no menu entry is changed.
- If
offset+length is greater than
menuEntry.length , the length
of the menuEntry array an
ArrayIndexOutOfBoundsException exception is thrown
and no menu entry is changed.
ToolkitException.throwIt(ToolkitException.MENU_ENTRY_NOT_FOUND);
| public void | clearEvent(byte event)Clears an event in the Toolkit Registry entry of the applet.
if (event != ToolkitConstants.EVENT_UNFORMATTED_SMS_PP_ENV) {
// no other events are supported
return;
}
AID aid = JCSystem.getAID();
ViewHandler.SATAccessor.clearEventListener(aid);
| public void | disableMenuEntry(byte id)Disables a menu entry.
This method doesn't modify the registration state to the
EVENT_MENU_SELECTION
and EVENT_MENU_SELECTION_HELP_REQUEST. After invocation of this method,
during the current card session, the SIM
Toolkit Framework shall dynamically update the menu stored in the ME.
ToolkitException.throwIt(ToolkitException.MENU_ENTRY_NOT_FOUND);
| public void | enableMenuEntry(byte id)Enables a menu entry.
This method doesn't modify the registration state to the
EVENT_MENU_SELECTION
and EVENT_MENU_SELECTION_HELP_REQUEST. After invocation of this method,
during the current card session, the SIM
Toolkit Framework shall dynamically update the menu stored in the ME.
ToolkitException.throwIt(ToolkitException.MENU_ENTRY_NOT_FOUND);
| public static sim.toolkit.ToolkitRegistry | getEntry()This method is used by the Toolkit applet to get a reference to its
Toolkit Registry entry, so that it can handle its registration state to
the toolkit events.
return new ToolkitRegistry();
| public short | getPollInterval()Returns the number of seconds of the adjusted duration for the calling
toolkit applet.
If the returned duration is equal to POLL_NO_DURATION, the
toolkit applet is not registered to EVENT_STATUS_COMMAND event.
The returned duration may :
- be a multiple of the real adjusted poll interval time at the ME.
- differ from the requested duration due to request of
other toolkit applets or due to restrictions of the current ME.
- be changed during the card session due requests from other toolkit
applets.
- be wrong due to direct generation of the proactive command POLL
INTERVAL or POLLING OFF.
- not correspond to the ellasped time due to additional STATUS
commands send by the ME.
return 0;
| public byte | initMenuEntry(byte[] menuEntry, short offset, short length, byte nextAction, boolean helpSupported, byte iconQualifier, short iconIdentifier)Initialises the next menu entry allocated at loading.
The default state of the menu entry is
'enabled'. The value of the helpSupported boolean
parameter defines the registration status of the applet to the event
EVENT_MENU_SELECTION_HELP_REQUEST. The applet is registered to
the EVENT_MENU_SELECTION. The icon identifier provided will be added to
the icon identifier list of the item icon identifier list Simple TLV if
all the applets registered to the EVENT_MENU_SELECTION provide it.
The Icon list qualifier transmitted to the ME will be 'icon is not self
explanatory' if one of the applet registered prefers this qualifier.
This method shall be called by the applet in the same order than the
order of the item parameters defined at the applet loading if the applet
has several menu entries. The applet shall initialise all its loaded
menu entries during its installation.
Notes:
- If
offset or length
parameter is negative an
ArrayIndexOutOfBoundsException
exception is thrown and no menu entry is initialised.
- If
offset+length is greater than
menuEntry.length , the length
of the menuEntry array a
ArrayIndexOutOfBoundsException exception is thrown
and no menu entry is initialised.
ToolkitException.throwIt(ToolkitException.REGISTRY_ERROR);
return 0;
| public boolean | isEventSet(byte event)Allows to know if an event is set in the Toolkit Registry entry of the
applet.
if (event != ToolkitConstants.EVENT_UNFORMATTED_SMS_PP_ENV)
return false;
AID aid = JCSystem.getAID();
return ViewHandler.SATAccessor.isEventListenerSet(aid);
| public void | releaseTimer(byte timerIdentifier)Release a Timer that has been allocated to the calling applet.
The applet is deregistered of the EVENT_TIMER_EXPIRATION
for the indicated Timer Identifier.
ToolkitException.throwIt(ToolkitException.INVALID_TIMER_ID);
| public void | requestPollInterval(short duration)Requests a duration for the EVENT_STATUS_COMMAND event of the
registering
toolkit applet. Due to different duration requested by other
toolkit
applets or due to restriction of the ME, the SIM Toolkit
Framework may adjust another duration.
This method can be used at every time to request a new duration.
ToolkitException.throwIt(ToolkitException.REGISTRY_ERROR);
| public void | setEvent(byte event)Sets an event in the Toolkit Registry entry of the applet.
No exception shall be thrown if the applet registers more than once to
the same event.
if (event != ToolkitConstants.EVENT_UNFORMATTED_SMS_PP_ENV) {
ToolkitException.throwIt(ToolkitException.EVENT_NOT_SUPPORTED);
}
AID aid = JCSystem.getAID();
ViewHandler.SATAccessor.setEventListener(aid);
| public void | setEventList(byte[] eventList, short offset, short length)Sets an event list in the Toolkit Registry entry of the applet.
In case of any exception the state of the registry is undefined.
The toolkit applet has to include this call within a transaction
if necessary.
Notes:
- If
offset or
length parameter is negative an
ArrayIndexOutOfBoundsException
exception is thrown and no event list is set.
- If
offset+length is greater than
eventList.length , the length
of the eventList array an
ArrayIndexOutOfBoundsException exception is
thrown and no event list is set.
boolean alreadyRegistered = false;
for (short i = 0; i < eventList.length; i++) {
if (eventList[i] !=
ToolkitConstants.EVENT_UNFORMATTED_SMS_PP_ENV) {
ToolkitException.throwIt(ToolkitException.EVENT_NOT_SUPPORTED);
}
if (!alreadyRegistered) {
AID aid = JCSystem.getAID();
ViewHandler.SATAccessor.setEventListener(aid);
alreadyRegistered = true;
}
}
|
|