Confirmed users
1,340
edits
Allstars.chh (talk | contribs) |
No edit summary |
||
| (20 intermediate revisions by one other user not shown) | |||
| Line 1: | Line 1: | ||
= Overview = | = Overview = | ||
To provide DOM API for the STK(SIM Toolkit), or CAT (Card Application Toolkit), which allows web contents can interact with SIM applications. | To provide DOM API for the STK(SIM Toolkit), or CAT (Card Application Toolkit), which allows web contents can interact with SIM applications. | ||
= Status = | |||
Bugzilla : https://bugzilla.mozilla.org/show_bug.cgi?id=791161 <br> | |||
Feature List: https://docs.google.com/spreadsheet/ccc?key=0AuvgnQ-Iwb6XdGV0aHZWdGdmZVEzZUxmZWNEaGJYWkE | |||
= Interface = | = Interface = | ||
| Line 39: | Line 43: | ||
* Command. | * Command. | ||
* | * | ||
* @param command | |||
* Command received from ICC. See MozStkCommand. | |||
* @param response | * @param response | ||
* The response that will be sent to ICC. | * The response that will be sent to ICC. | ||
* @see | * @see MozStkResponse for the detail of response. | ||
*/ | */ | ||
void sendStkResponse(in jsval response); | void sendStkResponse(in jsval command, in jsval response); | ||
</pre> | </pre> | ||
=== Send Envelope Command === | === Send Envelope Command === | ||
Currently only support "Menu Selection" | Currently only support "Menu Selection", "Event Download" | ||
<pre> | <pre> | ||
/** | /** | ||
| Line 59: | Line 65: | ||
void sendStkMenuSelection(in unsigned short itemIdentifier, | void sendStkMenuSelection(in unsigned short itemIdentifier, | ||
in boolean helpRequested); | in boolean helpRequested); | ||
/** | |||
* Send "Event Download" Envelope command to ICC. | |||
* ICC will not respond with any data for this command. | |||
* | |||
* @param event | |||
* one of events below: | |||
* - MozStkLocationEvent | |||
* - MozStkCallEvent | |||
*/ | |||
void sendStkEventDownload(in jsval event); | |||
</pre> | </pre> | ||
| Line 167: | Line 184: | ||
=== STK command === | === STK command === | ||
<pre> | <pre> | ||
dictionary | dictionary MozStkCommand | ||
{ | { | ||
/** | /** | ||
| Line 188: | Line 205: | ||
/** | /** | ||
* options varies accrording to the typeOfCommand in | * options varies accrording to the typeOfCommand in MozStkCommand. | ||
* | |||
* When typeOfCommand is | |||
* - STK_CMD_DISPLAY_TEXT | |||
* - STK_CMD_SET_UP_IDLE_MODE_TEXT | |||
* - STK_CMD_SEND_{SS|USSD|SMS|DTMF}, | |||
* options is MozStkTextMessage. | |||
* | |||
* When typeOfCommand is | |||
* - STK_CMD_SELECT_ITEM | |||
* - STK_CMD_SET_UP_MENU | |||
* options is MozStkMenu. | |||
* | |||
* When typeOfCommand is | |||
* - STK_CMD_GET_INKEY | |||
* - STK_CMD_GET_INPUT, | |||
* options is MozStkInput. | |||
* | |||
* When typeOfCommand is | |||
* - STK_CMD_LAUNCH_BROWSER | |||
* options is MozStkBrowserSetting. | |||
* | |||
* When typeOfCommand is | |||
* - STK_CMD_SET_UP_CALL | |||
* options is MozStkSetUpCall. | |||
* | * | ||
* When typeOfCommand is | * When typeOfCommand is | ||
* - | * - STK_CMD_SET_UP_EVENT_LIST | ||
* options is MozStkSetUpEventList. | |||
* options is | |||
* | * | ||
* When typeOfCommand is | * When typeOfCommand is | ||
* - | * - STK_CMD_PLAY_TONE | ||
* options is MozStkPlayTone. | |||
* options is | |||
* | * | ||
* When typeOfCommand is | * When typeOfCommand is | ||
* - | * - STK_CMD_POLL_INTERVAL | ||
* options is MozStkDuration. | |||
* options is | |||
* | * | ||
* When typeOfCommand is | * When typeOfCommand is | ||
* - | * - STK_CMD_POLL_OFF | ||
* options is | * options is null. | ||
* | * | ||
* When typeOfCommand is | * When typeOfCommand is | ||
* - | * - STK_CMD_REFRESH | ||
* options is | * options is null. | ||
*/ | */ | ||
jsval options; | jsval options; | ||
| Line 222: | Line 258: | ||
===== Text Message ===== | ===== Text Message ===== | ||
<pre> | <pre> | ||
dictionary | dictionary MozStkTextMessage | ||
{ | { | ||
/** | /** | ||
| Line 279: | Line 315: | ||
===== Menu ===== | ===== Menu ===== | ||
<pre> | <pre> | ||
dictionary | dictionary MozStkItem | ||
{ | { | ||
/** | /** | ||
| Line 297: | Line 333: | ||
<pre> | <pre> | ||
dictionary | dictionary MozStkMenu | ||
{ | { | ||
/** | /** | ||
* Array of | * Array of MozStkItem. | ||
* | * | ||
* @see TS 11.14, clause 12.9 | * @see TS 11.14, clause 12.9 | ||
*/ | */ | ||
jsval items; // | jsval items; // MozStkItem[] | ||
/** | /** | ||
| Line 335: | Line 371: | ||
===== Input ===== | ===== Input ===== | ||
<pre> | <pre> | ||
dictionary | dictionary MozStkInput | ||
{ | { | ||
/** | /** | ||
| Line 423: | Line 459: | ||
===== Browser Settings ===== | ===== Browser Settings ===== | ||
<pre> | <pre> | ||
dictionary | dictionary MozStkBrowserSetting | ||
{ | { | ||
/** | /** | ||
* Confirm message to launch browser. | * Confirm message to launch browser. | ||
* | * | ||
* @see | * @see MozStkTextMessage for the detail specification of | ||
* confirmMessage. | * confirmMessage. | ||
*/ | */ | ||
| Line 449: | Line 485: | ||
===== Set Up Call ===== | ===== Set Up Call ===== | ||
<pre> | <pre> | ||
dictionary | dictionary MozStkSetUpCall | ||
{ | { | ||
/** | /** | ||
| Line 459: | Line 495: | ||
* The text message used in user confirmation phase. | * The text message used in user confirmation phase. | ||
* | * | ||
* @see | * @see MozStkTextMessage for the detail specification of | ||
* confirmMessage. | * confirmMessage. | ||
*/ | */ | ||
| Line 467: | Line 503: | ||
* The text message used in call set up phase. | * The text message used in call set up phase. | ||
* | * | ||
* @see | * @see MozStkTextMessage for the detail specification of | ||
* callMessage. | * callMessage. | ||
*/ | */ | ||
| Line 479: | Line 515: | ||
=== STK response === | === STK response === | ||
<pre> | <pre> | ||
dictionary | dictionary MozStkResponse | ||
{ | { | ||
/** | /** | ||
* One of RESULT_* | * One of RESULT_* | ||
| Line 510: | Line 525: | ||
* The identifier of the item selected by user. | * The identifier of the item selected by user. | ||
* | * | ||
* @see | * @see MozStkItem.identifier | ||
*/ | */ | ||
unsigned short itemIdentifier; | unsigned short itemIdentifier; | ||
| Line 518: | Line 533: | ||
*/ | */ | ||
DOMString input; | DOMString input; | ||
/** | /** | ||
* YES/NO response. | * YES/NO response. | ||
* | * | ||
* @see | * @see MozStkInput.isYesNoRequested | ||
*/ | */ | ||
boolean isYesNo; | boolean isYesNo; | ||
/** | /** | ||
| Line 555: | Line 556: | ||
For simplicity, constants are listed here. | For simplicity, constants are listed here. | ||
<pre> | <pre> | ||
partial interface nsIDOMMozIccManager : nsIDOMEventTarget | |||
partial interface | |||
{ | { | ||
/** | |||
* STK Menu Presentation types. | |||
*/ | |||
const unsigned short STK_MENU_TYPE_NOT_SPECIFIED = 0x00; | |||
const unsigned short STK_MENU_TYPE_DATA_VALUES = 0x01; | |||
const unsigned short STK_MENU_TYPE_NAVIGATION_OPTIONS = 0x03; | |||
/** | |||
* Browser launch mode. | |||
*/ | |||
const unsigned short STK_BROWSER_MODE_LAUNCH_IF_NOT_ALREADY_LAUNCHED = 0x00; | |||
const unsigned short STK_BROWSER_MODE_USING_EXISTING_BROWSER = 0x02; | |||
const unsigned short STK_BROWSER_MODE_USING_NEW_BROWSER = 0x03; | |||
/** | /** | ||
* STK Proactive commands. | * STK Proactive commands. | ||
| Line 567: | Line 577: | ||
* @see TS 11.14, clause 13.4 | * @see TS 11.14, clause 13.4 | ||
*/ | */ | ||
const unsigned short | const unsigned short STK_CMD_REFRESH = 0x01; | ||
const unsigned short | const unsigned short STK_CMD_POLL_INTERVAL = 0x03; | ||
const unsigned short | const unsigned short STK_CMD_POLL_OFF = 0x04; | ||
const unsigned short | const unsigned short STK_CMD_SET_UP_EVENT_LIST = 0x05; | ||
const unsigned short | const unsigned short STK_CMD_SET_UP_CALL = 0x10; | ||
const unsigned short | const unsigned short STK_CMD_SEND_SS = 0x11; | ||
const unsigned short | const unsigned short STK_CMD_SEND_USSD = 0x12; | ||
const unsigned short | const unsigned short STK_CMD_SEND_SMS = 0x13; | ||
const unsigned short | const unsigned short STK_CMD_SEND_DTMF = 0x14; | ||
const unsigned short | const unsigned short STK_CMD_LAUNCH_BROWSER = 0x15; | ||
const unsigned short | const unsigned short STK_CMD_PLAY_TONE = 0x20; | ||
const unsigned short | const unsigned short STK_CMD_DISPLAY_TEXT = 0x21; | ||
const unsigned short | const unsigned short STK_CMD_GET_INKEY = 0x22; | ||
const unsigned short STK_CMD_GET_INPUT = 0x23; | |||
const unsigned short STK_CMD_SELECT_ITEM = 0x24; | |||
const unsigned short STK_CMD_SET_UP_MENU = 0x25; | |||
const unsigned short STK_CMD_SET_UP_IDLE_MODE_TEXT = 0x28; | |||
/** | /** | ||
* STK Result code. | * STK Result code. | ||
* | * | ||
* @see TS 11.14, clause 12.12 | * @see TS 11.14, clause 12.12 | ||
* | |||
* Results '0X' and '1X' indicate that the command has been performed. | * Results '0X' and '1X' indicate that the command has been performed. | ||
*/ | */ | ||
/** Command performed successfully */ | /** Command performed successfully */ | ||
const unsigned short | const unsigned short STK_RESULT_OK = 0x00; | ||
/** Command performed with partial comprehension */ | /** Command performed with partial comprehension */ | ||
const unsigned short | const unsigned short STK_RESULT_PRFRMD_WITH_PARTIAL_COMPREHENSION = 0x01; | ||
/** Command performed, with missing information */ | /** Command performed, with missing information */ | ||
const unsigned short | const unsigned short STK_RESULT_PRFRMD_WITH_MISSING_INFO = 0x02; | ||
/** REFRESH performed with additional EFs read */ | /** REFRESH performed with additional EFs read */ | ||
const unsigned short | const unsigned short STK_RESULT_PRFRMD_WITH_ADDITIONAL_EFS_READ = 0x03; | ||
/** Command performed successfully, limited service */ | /** Command performed successfully, limited service */ | ||
const unsigned short | const unsigned short STK_RESULT_PRFRMD_LIMITED_SERVICE = 0x06; | ||
/** Proactive UICC session terminated by the user */ | /** Proactive UICC session terminated by the user */ | ||
const unsigned short | const unsigned short STK_RESULT_UICC_SESSION_TERM_BY_USER = 0x10; | ||
/** Backward move in the proactive UICC session requested by the user */ | /** Backward move in the proactive UICC session requested by the user */ | ||
const unsigned short | const unsigned short STK_RESULT_BACKWARD_MOVE_BY_USER = 0x11; | ||
/** No response from user */ | /** No response from user */ | ||
const unsigned short | const unsigned short STK_RESULT_NO_RESPONSE_FROM_USER = 0x12; | ||
/** Help information required by the user */ | /** Help information required by the user */ | ||
const unsigned short | const unsigned short STK_RESULT_HELP_INFO_REQUIRED = 0x13; | ||
/** USSD or SS transaction terminated by the user */ | /** USSD or SS transaction terminated by the user */ | ||
const unsigned short | const unsigned short STK_RESULT_USSD_SS_SESSION_TERM_BY_USER = 0x14; | ||
/** | /** | ||
| Line 633: | Line 637: | ||
*/ | */ | ||
/** Terminal currently unable to process command */ | /** Terminal currently unable to process command */ | ||
const unsigned short | const unsigned short STK_RESULT_TERMINAL_CRNTLY_UNABLE_TO_PROCESS = 0x20; | ||
/** Network currently unable to process command */ | /** Network currently unable to process command */ | ||
const unsigned short | const unsigned short STK_RESULT_NETWORK_CRNTLY_UNABLE_TO_PROCESS = 0x21; | ||
/** User did not accept the proactive command */ | /** User did not accept the proactive command */ | ||
const unsigned short | const unsigned short STK_RESULT_USER_NOT_ACCEPT = 0x22; | ||
/** User cleared down call before connection or network release */ | /** User cleared down call before connection or network release */ | ||
const unsigned short | const unsigned short STK_RESULT_USER_CLEAR_DOWN_CALL = 0x23; | ||
/** Launch browser generic error code */ | /** Launch browser generic error code */ | ||
const unsigned short | const unsigned short STK_RESULT_LAUNCH_BROWSER_ERROR = 0x26; | ||
/** | /** | ||
| Line 653: | Line 657: | ||
*/ | */ | ||
/** Command beyond terminal's capabilities */ | /** Command beyond terminal's capabilities */ | ||
const unsigned short | const unsigned short STK_RESULT_BEYOND_TERMINAL_CAPABILITY = 0x30; | ||
/** Command type not understood by terminal */ | /** Command type not understood by terminal */ | ||
const unsigned short | const unsigned short STK_RESULT_CMD_TYPE_NOT_UNDERSTOOD = 0x31; | ||
/** Command data not understood by terminal */ | /** Command data not understood by terminal */ | ||
const unsigned short | const unsigned short STK_RESULT_CMD_DATA_NOT_UNDERSTOOD = 0x32; | ||
/** Command number not known by terminal */ | /** Command number not known by terminal */ | ||
const unsigned short | const unsigned short STK_RESULT_CMD_NUM_NOT_KNOWN = 0x33; | ||
/** SS Return Error */ | /** SS Return Error */ | ||
const unsigned short | const unsigned short STK_RESULT_SS_RETURN_ERROR = 0x34; | ||
/** SMS RP-ERROR */ | /** SMS RP-ERROR */ | ||
const unsigned short | const unsigned short STK_RESULT_SMS_RP_ERROR = 0x35; | ||
/** Error, required values are missing */ | /** Error, required values are missing */ | ||
const unsigned short | const unsigned short STK_RESULT_REQUIRED_VALUES_MISSING = 0x36; | ||
/** USSD Return Error */ | /** USSD Return Error */ | ||
const unsigned short | const unsigned short STK_RESULT_USSD_RETURN_ERROR = 0x37; | ||
/** MultipleCard commands error */ | /** MultipleCard commands error */ | ||
const unsigned short | const unsigned short STK_RESULT_MULTI_CARDS_CMD_ERROR = 0x38; | ||
/** | /** | ||
| Line 683: | Line 687: | ||
* USIM, permanent problem | * USIM, permanent problem | ||
*/ | */ | ||
const unsigned short | const unsigned short STK_RESULT_USIM_CALL_CONTROL_PERMANENT = 0x39; | ||
/** Bearer Independent Protocol error */ | /** Bearer Independent Protocol error */ | ||
const unsigned short | const unsigned short STK_RESULT_BIP_ERROR = 0x3a; | ||
} | |||
/** | |||
* STK Event List | |||
*/ | |||
const unsigned short STK_EVENT_TYPE_MT_CALL = 0x00; | |||
const unsigned short STK_EVENT_TYPE_CALL_CONNECTED = 0x01; | |||
const unsigned short STK_EVENT_TYPE_CALL_DISCONNECTED = 0x02; | |||
const unsigned short STK_EVENT_TYPE_LOCATION_STATUS = 0x03; | |||
const unsigned short STK_EVENT_TYPE_USER_ACTIVITY = 0x04; | |||
const unsigned short STK_EVENT_TYPE_IDLE_SCREEN_AVAILABLE = 0x05; | |||
const unsigned short STK_EVENT_TYPE_CARD_READER_STATUS = 0x06; | |||
const unsigned short STK_EVENT_TYPE_LANGUAGE_SELECTION = 0x07; | |||
const unsigned short STK_EVENT_TYPE_BROWSER_TERMINATION = 0x08; | |||
const unsigned short STK_EVENT_TYPE_DATA_AVAILABLE = 0x09; | |||
const unsigned short STK_EVENT_TYPE_CHANNEL_STATUS = 0x0a; | |||
const unsigned short STK_EVENT_TYPE_SINGLE_ACCESS_TECHNOLOGY_CHANGED = 0x0b; | |||
const unsigned short STK_EVENT_TYPE_DISPLAY_PARAMETER_CHANGED = 0x0c; | |||
const unsigned short STK_EVENT_TYPE_LOCAL_CONNECTION = 0x0d; | |||
const unsigned short STK_EVENT_TYPE_NETWORK_SEARCH_MODE_CHANGED = 0x0e; | |||
const unsigned short STK_EVENT_TYPE_BROWSING_STATUS = 0x0f; | |||
const unsigned short STK_EVENT_TYPE_FRAMES_INFORMATION_CHANGED = 0x10; | |||
/** | |||
* The service state of STK Location Status. | |||
*/ | |||
const unsigned short STK_SERVICE_STATE_NORMAL = 0x00; | |||
const unsigned short STK_SERVICE_STATE_LIMITED = 0x01; | |||
const unsigned short STK_SERVICE_STATE_UNAVAILABLE = 0x02; | |||
/** | |||
* Tone type. | |||
*/ | |||
const unsigned short STK_TONE_TYPE_DIAL_TONE = 0x01; | |||
const unsigned short STK_TONE_TYPE_CALLED_SUBSCRIBER_BUSY = 0x02; | |||
const unsigned short STK_TONE_TYPE_CONGESTION = 0x03; | |||
const unsigned short STK_TONE_TYPE_RADIO_PATH_ACK = 0x04; | |||
const unsigned short STK_TONE_TYPE_RADIO_PATH_NOT_AVAILABLE = 0x05; | |||
const unsigned short STK_TONE_TYPE_ERROR = 0x06; | |||
const unsigned short STK_TONE_TYPE_CALL_WAITING_TONE = 0x07; | |||
const unsigned short STK_TONE_TYPE_RINGING_TONE = 0x08; | |||
const unsigned short STK_TONE_TYPE_GENERAL_BEEP = 0x10; | |||
const unsigned short STK_TONE_TYPE_POSITIVE_ACK_TONE = 0x11; | |||
const unsigned short STK_TONE_TYPE_NEGATIVE_ACK_TONE = 0x12; | |||
/** | |||
* Time unit | |||
*/ | |||
const unsigned short STK_TIME_UNIT_MINUTE = 0x00; | |||
const unsigned short STK_TIME_UNIT_SECOND = 0x01; | |||
const unsigned short STK_TIME_UNIT_TENTH_SECOND = 0x02; | |||
} | |||
</pre> | </pre> | ||
| Line 693: | Line 747: | ||
== Show STK menu == | == Show STK menu == | ||
<pre> | <pre> | ||
var icc = navigator.mozMobileConnection.icc; | |||
switch (command. | icc.onstkcommand = function (evt) { | ||
case | var command = evt.command | ||
var menu = command. | switch (command.typeOfCommand) { | ||
case icc.STK_CMD_SET_UP_MENU: | |||
var menu = command.options; | |||
// create a Menu-like UI according to 'menu' | // create a Menu-like UI according to 'menu' | ||
break; | break; | ||
| Line 705: | Line 761: | ||
== Menu Selection == | == Menu Selection == | ||
<pre> | <pre> | ||
function | /** | ||
* onMenuSelected is the callback when some item of the menu is selected. | |||
* @param id The index of the item being selected. | |||
* @param helpRequested Request for help. | |||
*/ | |||
function onMenuSelected(id, helpRequested) { | |||
var icc = navigator.mozMobileConnection.icc; | |||
icc.sendStkMenuSelection(id, helpRequested); | |||
} | } | ||
</pre> | </pre> | ||
| Line 714: | Line 776: | ||
// 'command' is got from onstkcommand | // 'command' is got from onstkcommand | ||
// and assume it's a Select Item command. | // and assume it's a Select Item command. | ||
var | var icc = navigator.mozMobileConnection.icc; | ||
response | var response = { | ||
// 'id' is got from the | resultCode : icc.STK_RESULT_OK, | ||
// 'id' is got from the choosed item identifier (menu.item[].identifier) | |||
mozIcc.sendStkResponse(response); | itemIdentifier: id | ||
}; | |||
mozIcc.sendStkResponse(command, response); | |||
</pre> | </pre> | ||
== Get Input == | == Get Input == | ||
<pre> | <pre> | ||
var icc = navigator.mozMobileConnection.icc; | |||
switch (command. | icc.onstkcommand = function (evt) { | ||
case | var command = evt.command | ||
var input = command. | switch (command.typeOfCommand) { | ||
case icc.STK_CMD_GET_INPUT: | |||
var input = command.options; | |||
// create a TextInput-like UI according to 'input' | // create a TextInput-like UI according to 'input' | ||
break; | break; | ||
| Line 733: | Line 799: | ||
// onTextInput is the callback when user inputs complete. | // onTextInput is the callback when user inputs complete. | ||
var icc = navigator.mozMobileConnection.icc; | |||
function onTextInput(input) { | function onTextInput(input) { | ||
var response = | var response = { | ||
resultCode : mozICC.STK_RESULT_OK, | |||
input: input | |||
}; | |||
mozIcc.sendStkResponse(command, response); | |||
} | |||
mozIcc.sendStkResponse(response); | |||
} | } | ||
</pre> | </pre> | ||
| Line 764: | Line 811: | ||
= TODO = | = TODO = | ||
* Icon | * Icon | ||
* | * Timer | ||
= Reference = | = Reference = | ||
| Line 773: | Line 817: | ||
* TS 102.223 | * TS 102.223 | ||
* http://www.kandroid.org/online-pdk/guide/stk.html | * http://www.kandroid.org/online-pdk/guide/stk.html | ||
[[Category:Web APIs]] | |||