STK
(SIM Application Toolkit)诚纸,中文名為SIM卡應用工具包。它包含一系列手機與SIM卡的交互指令,SIM卡可以運行卡內(nèi)的小應用程序與手機以及用戶進行交互益兄,從而實現(xiàn)增值服務的目的罕容。
別名:
CAT:Card Application Toolkit颠蕴,另一個常用名哨免,Android的STK應用就被命名為CatAppUSAT:USIM Application Toolkit 亚情,3G SIM卡的STK功能。但是一般不會特別指出是3G的STK沸版,所以這個命令不常用嘁傀。
協(xié)議
2G協(xié)議:3GPP TS 11.143G協(xié)議:
3GPP TS 31.1112G測試協(xié)議:
3GPP TS 51.010-43G測試協(xié)議:3GPP TS 31.124,里面有大量引用ETSI TS 102.384的case對于測試協(xié)議视粮,不論51.010-4细办,31.124還是102.384,測試項都是27.22.蕾殴。
功能
Profile Download笑撞,配置下載開機初始化SIM卡的過程中,手機告訴SIM卡手機支持哪些STK命令钓觉。在STK中茴肥,Download指的是手機將數(shù)據(jù)發(fā)送給SIM卡。
Proactive SIM荡灾,主動式命令通過主動式命令瓤狐,SIM卡可以指示手機執(zhí)行一系列的行為,如:
- 顯示菜單
- 顯示文本
- 發(fā)短信
- 撥出電話
- 發(fā)SS(輔助業(yè)務)或者USSD給網(wǎng)絡
- 發(fā)點聲音
- 重新初始化SIM卡或者更新手機緩存的SIM卡內(nèi)容
- 獲取一些手機信息
- 連接數(shù)據(jù)網(wǎng)絡卧晓,上傳/下載數(shù)據(jù)芬首。
主動式命令可以認為是STK最重要的功能之一很多其他的功能都需要有主動式命令來構(gòu)成。
Data download to SIM逼裆,數(shù)據(jù)下載使用Envelope命令郁稍,下載點對點短消息或者小區(qū)廣播給SIM卡。
Menu selection胜宇,菜單選擇菜單選擇功能耀怜。一般是剛開機的時候,SIM卡發(fā)送菜單給手機桐愉,手機緩存下來财破,生成STK應用(如Android的CatApp)的主菜單。當用戶點擊進入應用的時候从诲,該菜單會顯示給客戶左痢,由用戶進行選擇,從而進入二級菜單或者觸發(fā)其他功能系洛。
Call control俊性,呼叫控制如果手機/SIM卡支持呼叫控制功能,則手機撥出電話的時候(以及發(fā)送SS/USSD)描扯,必須先將通話請求發(fā)送給SIM卡定页,SIM卡可以決定是否允許通話/拒絕通話/修改參數(shù)之后通話。
MO Short Message control by SIM绽诚,短消息控制類似于呼叫控制典徊,SIM卡也可以對發(fā)出的短消息進行控制杭煎。
Event download,事件下載SIM卡可以向手機發(fā)送主動式命令(SET UP EVENT LIST)卒落,要求監(jiān)聽一些列事件羡铲。當這些事件發(fā)生時,手機需要使用ENVELOPE命令通知SIM卡詳細的事件信息儡毕。這些事件包括:
- 來電
- 電話接通/掛斷
- 位置更新
- 用戶操作
- 手機進入待機界面
- 手機語言變化
- 數(shù)據(jù)網(wǎng)絡狀態(tài)變化
- 有數(shù)據(jù)到達
BIP(Bearer Independent Protocol)犀勒,承載無關業(yè)務 一般使用BIP來表示承載無關業(yè)務,其實就是數(shù)據(jù)網(wǎng)絡相關功能妥曲,包括5個主動式命令和2個事件贾费。主動式命令包括:
- OPEN CHANNEL:打開數(shù)據(jù)通道
- CLOSE CHANNEL:關閉數(shù)據(jù)通道
- SEND DATA:發(fā)送數(shù)據(jù)
- RECEIVE DATA:接收數(shù)據(jù)
- GET CHANNEL STATUS:獲取數(shù)據(jù)通道狀態(tài)事件為:
- Data Available:有數(shù)據(jù)到達
- Channel Status Change:數(shù)據(jù)通道狀態(tài)變化
命令流程
因為手機與SIM卡之間的交互,總是手機主動給SIM卡發(fā)出命令檐盟,這意味著SIM卡是無法主動向手機發(fā)出命令的褂萧。如下圖所示:
Terminal Response可以是:
- 成功
- 失敗浸间,有臨時性問題太雨。如手機正在打電話,有些命令暫時不能執(zhí)行魁蒜。
- 失敗囊扳,有永久性問題。如命令無法解析兜看,命令超出手機執(zhí)行能力锥咸,或者和網(wǎng)絡相關的命令被網(wǎng)絡拒絕等。
命令 根據(jù)前面的描述铣减,可以總結(jié)出來她君,STK功能通過如下4個命令實現(xiàn)
- TERMINAL PROFILE:告知SIM卡手機對STK的支持能力脚作。初始化SIM卡的過程中發(fā)給SIM卡葫哗。
- FETCH:手機從SIM卡獲取命令
- TERMINAL RESPONSE:手機返回SIM卡執(zhí)行主動式命令的結(jié)果
- ENVELOPE:手機發(fā)送數(shù)據(jù)或者事件給SIM卡缔刹。
流程舉例
下圖是一個最常見的STK流程
- 開機SIM卡初始化階段,手機發(fā)送Terminal Profile給SIM卡劣针,告知手機的支持能力校镐。然后SIM卡將Menu菜單發(fā)送給手機,手機保存該菜單并生成CatApp捺典。
- 開機之后鸟廓,用戶點擊CatApp,選擇菜單中的某一項襟己,開始用SIM卡的STK交互引谜。
- SIM卡根據(jù)用戶選擇的主菜單的菜單項,返回select item命令擎浴,內(nèi)容是一個item 列表员咽,用于生成子菜單
-
在子菜單中,用戶選擇某一項贮预,觸發(fā)不同的行為贝室。可能是顯示一段文本仿吞,或者是發(fā)送SS給網(wǎng)絡滑频,或者輸入一段文本,等等唤冈。
命令解析
STK命令為TLV結(jié)構(gòu)峡迷,即Tag(標簽),Length(長度)你虹,Value(值)凉当。如下圖所示
- D0:Proactive SIM command tag
- D3:Menu Selection tag
- D6:Event download tag命令TLV結(jié)構(gòu)的Value部分售葡,由多個內(nèi)容TLV組成看杭。內(nèi)容的Tag在協(xié)議11.14的第13.2章節(jié)中定義,太多挟伙,不在這里一一列舉楼雹。每一種內(nèi)容的value結(jié)構(gòu)定義都不同,在協(xié)議的第12章定義尖阔,每一種內(nèi)容有一個小節(jié)詳細說明贮缅。
舉例
下面是一個顯示文本命令的實例。在手機開機時介却,會彈出歡迎界面谴供,這個歡迎界面就是STK的主動式命令“Display Text”發(fā)起的。
命令:
D0308103012101820281028D25085C0A656C768475286237FF0C6B228FCE60A84F7F75284E2D56FD8054901A4E1A52A1FF01
解析:
D0: TAG齿坷,表示主動式命令
30: LENGTH桂肌,0x30=48数焊,表示命令的VALUE部分長度為48 byte。
以下是命令內(nèi)容
81: Command details tag
03: Command details length
01: cmd.number
21: cmd.type -> DISPLAY TEXT
01: cmd.qual ->
high priority;
clear message after a delay;
82: Device identity tag
02: Device identity length
81: Devices.source -> SIM
02: Devices.dest -> Display
8D: Text string tag
25: Text string length
08: 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]: 聯(lián)
901A: UCS2[14]: 通
4E1A: UCS2[15]: 業(yè)
52A1: UCS2[16]: 務
FF01: UCS2[17]: !
執(zhí)行結(jié)果就是:手機立即顯示“尊敬的用戶谭跨,歡迎您使用中國聯(lián)通業(yè)務干厚!”,并且顯示一會兒后會自動消失