STK基础概念

概述

前言

学习3GPP TS 11.11有关STK的一些基本概念,做一个简单的总结。

背景

STK即SIM Tool Kit,是由SIM卡提供的应用,它提供一系列用于移动设备与SIM卡间交互的机制。通过这些机制,支持STK的手机可以操作SIM卡里的应用,同时SIM卡也可让手机执行指定的操作。举例来说,插入联通卡时弹出的欢迎使用联通服务即为STK的命令执行结果;点击STK应用图标可以查看具体的应用详情,国内手机似乎都没有预装该应用,一般是运营商定制相关的比较关注该模块。

基本概念

ME和SIM的通信遵从ISO的T=0协议ISO 7816-3:异步半双工字符传输协议)。在该协议中,命令都是由ME发给SIM卡的,没有SIM卡发起与ME通信的机制。这样看来,如果SIM卡需要主动请求ME的支持是不可能的。

主动式SIM卡,顾名思义,SIM卡掌握了主动权。通过proactive命令,主动式SIM卡可以要求ME进行相应的操作,感觉像是SIM卡“控制”了ME。

ME和SIM卡需要知道对方是否支持proactive SIM。如果SIM卡是主动式SIM卡,应该在SIM卡的业务表中的相应业务进行标识,而如果ME支持主动式SIM卡,在确定是Proactive SIM的情况下,通过profile download命令通知SIM卡。这样,通信双方之间就有了共识:在之后的通信过程中,proactive SIM不会向不支持proactive SIM的ME发送任何命令请求;支持proactive SIM的ME也不会向未激活proactive SIM的SIM发送与proactive SIM有关的命令。

主动式SIM卡仍然使用T=0协议,通过增加一个新的状态响应字SW1来实现SIM卡的主动权。以9000,91XX为例,9000即SIM卡成功执行了上一条命令,91XX同指成功执行了上一条命令,同时希望上发一条长为XX的主动式命令。

STK包含的机制

Profile Download,Proactive SIM,Data download to SIM,Menu selection,Call control by SIM,MO Short Message control by SIM,Event download,security,Multiple card,Timer Expiration,Bearer Independent Protocol.

其中,Profile Download用于通知SIM卡ME的功能。ME通过SIM 服务表和EFPHASE了解SIM卡的功能,在SIM的初始化过程,ME会通过TERMINAL PROFILE命令发送一个配置文件,告诉SIM卡它所能支持的与SIM卡相关的功能。具体的命令编码请查看3GPP TS 11.14。

 Proactive SIM则用来让SIM卡可以控制ME执行某些行为,如显示保存于SIM卡的文本发短信息,拨打保存于SIM卡的号码,发送SS,USSD等。基本是于涉及到用户的行为都可使用该机制。

涉及的命令(ME->SIM)

-  TERMINAL PROFILE

This function is used by the ME to transmit to the SIM itscapabilities concerning the SIM Application Toolkit functionality.

该命令是ME用来告诉SIM卡它所支持的功能。

-  ENVELOPE

该命令用来传输命令相关的数据给位于SIM卡里的应用。

-  FETCH

该命令用来获取一个主动式命令。

TERMINAL RESPONSE

该命令发送上一个主动式命令的结果给SIM卡

TERMINAL PROFILE

Terminal Profile的结构和编码组成,需3GPP TS 11.14 5.2节Structure and coding of TERMINAL PROFILE。后续再做具体流程的分析总结。

ENVELOPE

SMS-PP DOWNLOAD,当ME收到一条短信,协议标识符=SIM卡数据下载,数据编码方案=第二级消息时,ME将通过使用Envelope(SMS-PP DOWNLOAD)透明地将消息传递到SIM。移动将不会显示这条短信,也不会提示用户。

CELL BROADCAST DOWNLOAD,当ME接收新SMSCB,如果该CB的CBMI在EF_CBMID被找到,则ME将使用Envelope(CELL BROADCAST DOWNLOAD)通过CB页传递到SIM卡。ME将不会显示该CB给用户。

MENU SELECTION,当ME从SIM卡发送的“SETUP MENU”命令定义的一个菜单项目中收到菜单选择时,或者用户需要对某一菜单项得到帮助信息时,ME会通过Envelope(MENU_SELECTION)将所选菜单项的标识符传给SIM卡。

CALL CONTROL,呼叫控制,SIM卡可以使用这个命令来决定是否要将一个播出的电话(SATK播出或MMI播出),一个SS服务(无论是Send SS或MMI SS),USSD的初始化(无论是Send USSD或MMI USSD)修改成同一类型的服务,但是不同的参数,或者可以将它们修改成与前一个不同新类型的服务。

MO SHORT MESSAGE CONTROL,对于所有MO短消息尝试,ME用ENVELOPE (MO message control)命令,首先把业务中心地址-RP_destination_addres及收件人地址-TP_destination_adderss传递给SIM卡。ME还应使用ENVELOPE(MO message control)命令将当前服务小区的信息传递给SIM卡。

- TIMER EXPIRATION,当一个由TIMER MANAGEMENT的主动式命令去启动的定时器超时,ME应该使用ENVELOPE (TIMER EXPIRATION)去传递这个定时器的标识符和值给SIM。

EVENT DOWNLOAD,SIM卡用SETUP EVENT LIST命令为ME提供一套监控事件。如SIM卡已发出此命令,并且列表中的事件发生,ME会使用和此事件相关的过程通知SIM卡。

PROACTIVE COMMAND

CLOSE CHANNEL,要求ME关闭指定的数据通道.

DISPLAY TEXT,在屏幕显示文本或者图表,高优先级的可覆盖其他内容.

GET CHANNEL STATUS,要求ME返回所有可用数据通道的当前信息.

GET INKEY,在屏幕显示文本或图表,获取用户输入的字符并将字符传输给SIM卡。

GET INPUT,在屏幕显示文本或图表,获取用户的任何响应并将其传输给SIM卡。

GET READER STATUS,提供读卡器和插入卡的其他信息(Card x state, e.g. powered on or not, Card x Presence), if class "a" is supported.

LANGUAGE NOTIFICATION,通知ME当前STK在文本字符串里使用的语言.

LAUNCH BROWSER,请求启动浏览器使ME能解析URL.

MORE TIME,用于请求更多处理时间,ME只需要返回一个正常的TR。

OPEN CHANNEL,要求ME打开一个有参数显示的通道。(if class "e" is supported.)

PERFORM CARD APDU,它要求ME发送APDU命令到其他卡。这个命令与ME和其他卡之间的任何协议兼容。(if class "a" is supported)

PLAY TONE,它请求ME通过耳机、听筒或其他设备发出声音。.

POLL INTERVAL,协商在空闲模式期间ME向SIM卡发送STATUS命令的的频率、轮询操作可以由POLLING OFF命令禁止。

POWER OFF CARD,它会关闭与其他卡的会话。(如果支持Class A)

POWER ON CARD,它会发起与其他卡的会话,并且返回所有的ATR字节。(如果支持Class A)

PROVIDE LOCAL INFORMATION,要求ME将本地信息传给SIM卡,例如移动国家号码及用户注册的移动网络号码(MCC+MNC)。

RECEIVE DATA,它要求ME返回在指定通道上接收到的SIM卡数据。(如果支持Class E,BIP)

REFRESH,要求ME开始SIM卡的初始化,和/或提示SIM卡上的EF的内容或结构已经改变。这个命令可以使ME复位SIM卡而重新开始一个SIM卡的会话。

RUN AT COMMAND,它将传达一个AT命令到ME,并且将AT命令的响应结果返回到SIM卡。

- SELECT ITEM,  SIM卡提供一张项目列表供用户选择。

SEND DATA,它要求ME向SIM卡提供的指定通道发送数据。(如果支持Class E,BIP)

SEND DTMF,它要求ME在建立呼叫期间发送DTMF音频。

SEND SHORT MESSAGE,此命令向网络发送短信息或SMS-COMMAND。

SEND SS,此命令向网络发送SS请求。

SEND USSD,此命令是向网络发送USSD。

SET UP CALL,有三种类型:在没有其它呼叫时,建立呼叫;保持所有其它的呼叫(如果有),建立呼叫;切断所有其它的呼叫(如果有),建立呼叫。

SET UP EVENT LIST用此命令提供一套事件集,ME应该将此事件集去作为当前的事件列表去监视。

- SET UP IDLE MODE TEXT,提供一个字符串给ME用于待机模式文本。

- SET UP MENU, SIM卡提供一个项目列表供用户选择后合并到ME的菜单中。(SET_UP_MENU是建立STK的主菜单,也是第一个主动式命令)

- TIMER MANAGEMENT, w它要求ME以下命令方式(开始,停用,获取当前值)去管理一个定时器。并且在启动定时器的情况下,在命令中指示持续的时间。

TERMINAL RESPONSE

Terminal Response,简称TR。ME执行完proactive command后,用Terminal Response告诉SIM卡命令的执行结果,以便SIM卡判断接下来的动作:如是否重复这个命令,还是不再尝试。对于每一个proactive command,必须发送一个且仅一个Terminal Response告诉SIM卡命令执行的结果。SIM卡在接收到前一个proactive command的Terminal Response之前不会执行下一个命令。Terminal Response分为三种主要类型:

——命令执行成功

——执行命令时遇到暂时问题。一般来说,此类问题意味着SIM卡稍后可以再试一次

——执行命令时遇到永久问题,一般来说,此结果表明若在同一个GSM会话期间重复执行相同的命令会有同样的结果,所以SIM卡不再需要再次尝试

这三种主要类型的具体定义可见3GPP TS 11.14(6.7)。

关键流程

Proactive Command

Proactive Command

step1-7称为一个sat(sat是旧称) session.

1.ME总是命令的发起者,首先ME发送SAT命令给SIM卡

2.SIM卡执行完命令后,返回Status Words(91XX),告诉ME有一个proactive command需要执行

3.ME用fetch命令取得proactive command

4.SIM将proactive command数据传送给ME

5.SW1 SW2 for Fetch

6.ME发送Terminal Response给SIM卡

7.SW1 SW2 for Terminal Response

Step4-6是ME执行proactive command的时间:如显示数据,让用户输入,播放声音,发送短信等等。

总结

STK的基本概念并不复杂,但是大多数内容是与协议强相关的。如主动式命令的运作流程很好理解,实际解决问题时更多的是要依靠查阅相关的协议。

你可能感兴趣的:(STK基础概念)