stk 入门

来源:互联网 发布:论文查重率软件 编辑:程序博客网 时间:2024/05/18 01:38

STK(SIM Application Toolkit),中文名为SIM卡应用工具包。它包含一系列手机与SIM卡的交互指令,SIM卡可以运行卡内的小应用程序与手机以及用户进行交互,从而实现增值服务的目的。

别名:
CAT:Card Application Toolkit,另一个常用名,Android的STK应用就被命名为CatApp
USAT:USIM Application Toolkit ,3G SIM卡的STK功能。但是一般不会特别指出是3G的STK,所以这个命令不常用。

协议
2G协议:3GPP TS 11.14
3G协议:3GPP TS 31.111
2G测试协议:3GPP TS 51.010-4
3G测试协议:3GPP TS 31.124,里面有大量引用ETSI TS 102.384的case
对于测试协议,不论51.010-4,31.124还是102.384,测试项都是27.22.*。

功能

  • Profile Download,配置下载
    开机初始化SIM卡的过程中,手机告诉SIM卡手机支持哪些STK命令。
    在STK中,Download指的是手机将数据发送给SIM卡。
  • Proactive SIM,主动式命令
    通过主动式命令,SIM卡可以指示手机执行一系列的行为,如:
    ○ 显示菜单
    ○ 显示文本
    ○ 发短信
    ○ 拨出电话
    ○ 发SS(辅助业务)或者USSD给网络
    ○ 发点声音
    ○ 重新初始化SIM卡或者更新手机缓存的SIM卡内容
    ○ 获取一些手机信息
    ○ 连接数据网络,上传/下载数据。
    主动式命令可以认为是STK最重要的功能之一,很多其他的功能都需要有主动式命令来构成。
  • Data download to SIM,数据下载
    使用Envelope命令,下载点对点短消息或者小区广播给SIM卡。
  • Menu selection,菜单选择
    菜单选择功能。一般是刚开机的时候,SIM卡发送菜单给手机,手机缓存下来,生成STK应用(如Android的CatApp)的主菜单。当用户点击进入应用的时候,该菜单会显示给客户,由用户进行选择,从而进入二级菜单或者触发其他功能。
  • Call control,呼叫控制
    如果手机/SIM卡支持呼叫控制功能,则手机拨出电话的时候(以及发送SS/USSD),必须先将通话请求发送给SIM卡,SIM卡可以决定是否允许通话/拒绝通话/修改参数之后通话。
  • MO Short Message control by SIM,短消息控制
    类似于呼叫控制,SIM卡也可以对发出的短消息进行控制。
  • Event download,事件下载
    SIM卡可以向手机发送主动式命令(SET UP EVENT LIST),要求监听一些列事件。当这些事件发生时,手机需要使用ENVELOPE命令通知SIM卡详细的事件信息。这些事件包括:
    ○ 来电
    ○ 电话接通/挂断
    ○ 位置更新
    ○ 用户操作
    ○ 手机进入待机界面
    ○ 手机语言变化
    ○ 数据网络状态变化
    ○ 有数据到达
  • BIP(Bearer Independent Protocol),承载无关业务
    一般使用BIP来表示承载无关业务,其实就是数据网络相关功能,包括5个主动式命令和2个事件。
    主动式命令包括:
    ○ OPEN CHANNEL:打开数据通道
    ○ CLOSE CHANNEL:关闭数据通道
    ○ SEND DATA:发送数据
    ○ RECEIVE DATA:接收数据
    ○ GET CHANNEL STATUS:获取数据通道状态
    事件为:
    ○ Data Available:有数据到达
    ○ Channel Status Change:数据通道状态变化

命令流程
因为手机与SIM卡之间的交互,总是手机主动给SIM卡发出命令,这意味着SIM卡是无法主动向手机发出命令的。如下图所示:
这里写图片描述
为此,定义了一个名为Fetch的命令。当手机给SIM卡发送普通命令(如Status等)的时候,SIM卡的返回值可以是:我有一条主动式命令要发出(值为91XX)。当手机收到这个返回值时候,就立即发送Fetch命令给SIM卡,从而在SIM卡的返回值中获取到这条主动式命令。在手机执行完命令之后,需要发送返回值给SIM卡。如果没有后续命令,SIM卡返回结束消息(值为9000)如下图所示:
这里写图片描述
从上图还可以看出,手机对命令的执行结果,通过Terminal Response发送给SIM卡。
Terminal Response可以是:
• 成功
• 失败,有临时性问题。如手机正在打电话,有些命令暂时不能执行。
• 失败,有永久性问题。如命令无法解析,命令超出手机执行能力,或者和网络相关的命令被网络拒绝等。

命令
根据前面的描述,可以总结出来,STK功能通过如下4个命令实现
• TERMINAL PROFILE:告知SIM卡手机对STK的支持能力。初始化SIM卡的过程中发给SIM卡。
• FETCH:手机从SIM卡获取命令
• TERMINAL RESPONSE:手机返回SIM卡执行主动式命令的结果
• ENVELOPE:手机发送数据或者事件给SIM卡。

流程举例
下图是一个最常见的STK流程
• 开机SIM卡初始化阶段,手机发送Terminal Profile给SIM卡,告知手机的支持能力。然后SIM卡将Menu菜单发送给手机,手机保存该菜单并生成CatApp。
• 开机之后,用户点击CatApp,选择菜单中的某一项,开始用SIM卡的STK交互。
• SIM卡根据用户选择的主菜单的菜单项,返回select item命令,内容是一个item 列表,用于生成子菜单
• 在子菜单中,用户选择某一项,触发不同的行为。可能是显示一段文本,或者是发送SS给网络,或者输入一段文本,等等。
这里写图片描述

命令解析
STK命令为TLV结构,即Tag(标签),Length(长度),Value(值)。
如下图所示
这里写图片描述
命令的Tag在协议11.14的第13.1和13.2章节中定义,常用的有:
• D0:Proactive SIM command tag
• D3:Menu Selection tag
• D6:Event download tag
命令TLV结构的Value部分,由多个内容TLV组成。
内容的Tag在协议11.14的第13.2章节中定义,太多,不在这里一一列举。每一种内容的value结构定义都不同,在协议的第12章定义,每一种内容有一个小节详细说明。

举例
下面是一个显示文本命令的实例。在手机开机时,会弹出欢迎界面,这个欢迎界面就是STK的主动式命令“Display Text”发起的。
命令:

D0308103012101820281028D25085C0A656C768475286237FF0C6B228FCE60A84F7F75284E2D56FD8054901A4E1A52A1FF01
  • 1

解析:

D0:  TAG,表示主动式命令30:  LENGTH,0x30=48,表示命令的VALUE部分长度为48 byte。以下是命令内容81:  Command details tag03:  Command details length01:  cmd.number21:  cmd.type -> DISPLAY TEXT01:  cmd.qual ->   high priority;  clear message after a delay;82:  Device identity tag02:  Device identity length81:  Devices.source -> SIM02:  Devices.dest -> Display8D:  Text string tag25:  Text string length08:  Data coding scheme,表示字串使用UCS2编码5C0A:  UCS2[0]: 尊656C:  UCS2[1]: 敬7684:  UCS2[2]: 的7528:  UCS2[3]: 用6237:  UCS2[4]: 户FF0C:  UCS2[5]: ,6B22:  UCS2[6]: 欢8FCE:  UCS2[7]: 迎60A8:  UCS2[8]: 您4F7F:  UCS2[9]: 使7528:  UCS2[10]: 用4E2D:  UCS2[11]: 中56FD:  UCS2[12]: 国8054:  UCS2[13]: 联901A:  UCS2[14]: 通4E1A:  UCS2[15]: 业52A1:  UCS2[16]: 务FF01:  UCS2[17]: !执行结果就是:手机立即显示“尊敬的用户,欢迎您使用中国联通业务!”,并且显示一会儿后会自动消失
原创粉丝点击