short message

对短信的操作包括有 “发短信”,“收短信”,“复制短信到SIM/UIM","从SIM/UIM读取短信“,”还有通过UTK/STK发短信“,这个过程中,包括一些协议,还有不同的Ril层返回不同的字串,这些都需要了解,匹配。还有各种编码 BCD, HEX, byte, 7bit,ASCII等

CDMA

UTK

做UTK,首先要参考文档“中国电信CDMA卡需求规范-UTK应用分册”,还要参考文档“3GPP2 C.S0015-A”和“TIA/EIA-637-A”,这两个文档有许多内容是相同的,好像是对TPDU的描述.

qcril进行UTK操作是,会上报如下的字串:

D0 33 | 81 03 011300 | 82 02 8183 | 85 0D 8077ED4FE153D190014E2D2026 |48 19 000002100204040146AA84080C000320000001050019898188

按照文档“中国电信CDMA卡需求规范-UTK应用分册  10.3 双向的 SIMPLE-TLV 标识”分析:

D0 主动UIM命令标识

33 length

81 命令说明标识

03 length

82 命令说明标识

02 length

85 Alpha 标识符标识 //短信发送中...

0D length

48 CDMA SMS TPDU 标识

19 length

其中 “000002100204040146AA84080C000320000001050019898188“ 为TPDU, 需要参考文档“3GPP2 C.S0015-A”和“TIA/EIA-637-A”分析,

参考文档“3GPP2 C.S0015-A 3.4 及 Table 3.4.3-1“

00             | 00            02        1002           | 04         04        0146AA84                            | 08         0C      00        03        200000 01             05        0019898188

SMS P2P| TeleserviceID TI_length id   | DstAddress DA_length address(10001)  | BearerData length  Mesage_Id id_length id     User_data  data_len

其中BearerData参考文档“3GPP2 C.S0015-A Table 4.5-1"

08         0C     |  00        03        200000  | 01         05        0019898188

BearerData length   Mesage_Id id_length id       User_data  data_len

这样一个UTK的字串就解析完了。

32  UTK上报的字串 d0 2a 7f 8001 03 001300 | 7f 8005 05 3130303031 | 7f 800d 04 04313031 | 7f 8005 0e 8077ed4fe153d190014e2d2026 00

按照文档“中国电信CDMA卡需求规范-UTK应用分册  10.3 双向的 SIMPLE-TLV 标识”分析:

D0 主动UIM命令标识

2a length

看代码ComprehensionTlv.decode, 7f 代表tag is in three-byte format

8001 命令说明标识    //相当于上面qcril的81

03 length

8005 Alpha 标识符标识 //10001

05 length

800d 正文串识 //101

8005 Alpha 标识符标识 //短信发送中...

0e length

UtkService: TERMINAL RESPONSE: 810300240082028281830100900101

D/RILJ    (  104): [0058]> REQUEST_STK_SEND_TERMINAL_RESPONSE

D/RILD    (   35): onRequest: STK_SEND_TERMINAL_RESPONSE

D/AT      (   35): AT> AT+WTKM=1,1

D/AT      (   35): AT< OK

D/RILJ    (  104): [0058]< REQUEST_STK_SEND_TERMINAL_RESPONSE

D/AT      (   35): AT< +WTKP:12,10001,4,313031,8,8077ED4FE153D190014E2D202600

D/RILJ    (  104): [UNSL]< UNSOL_STK_PROACTIVE_COMMAND d02a7f8001030013007f80050531303030317f800d04043130317f80050e8077ed4fe153d190014e2d202600

D/STK     (  104): CommandParamsFactory: address.text =========================10001

D/STK     (  104): CommandParamsFactory: content.text =========================101

D/STK     (  104): CommandParamsFactory: displayText.text =======================短信发送中…

E/SMS     (  104): sendRawPdu parsePdu: destination = 10001

D/SMS     (  104): SMS send size=1time=1300875739155

D/RILJ    (  104): [0059]> RIL_REQUEST_CDMA_SEND_SMS

D/RILD    (   35): onRequest: CDMA_SEND_SMS

D/RILD    (   35): send sms da: 10001

D/RILD    (   35): CDMA SMS encoding 2

D/AT      (   35): AT> AT+CNMI=1,2,0,1,1

//

32 read sms from uim   12345678900  hello

D/RILD    (  830): onRequest: SIM_IO

D/AT      (  830): AT> AT^HCMGR=1

D/AT      (  830): AT< ^HCMGR: 13671835306,2009,01,01,00,00,00,0,1,5,0,0,0,1

D/AT      (  830): AT< Hello

D/AT      (  830): Get UIM SMS ind: ^HCMGR: 13671835306,2009,01,01,00,00,00,0,1,5,0,0,0,1

D/AT      (  830): Get UIM SMS hex pdu: 48656c6c6f1a

D/AT      (  830): AT< OK

D/RILD    (  830): p_response->p_intermsdiates->line ========= ^HCMGR: 13671835306,2009,01,01,00,00,00,0,1,5,0,0,0,1

D/RILD    (  830): Hello.........ghd

D/RILJ    (   96): < iccIO:

0x90 0x0 01 33 | 00 03 100000 | 01 06 102c8cbb366f | 02 01 01 | 03 06 090101000000| 08 01 00 |

09 01 00 | 0d 01 00 | 0e 0d 910b3133363731383335333036 | 0f 01 40

32 write sms to uim

D/CDMA    (   96): [RuimSmsInterfaceManager] copyMessageToIccEf: status=1 ==> pdu=([B@444f4e48)

D/RILJ    (   96): [0177]> RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM 1

D/RILD    (   28): onRequest: CDMA_WRITE_SMS_TO_RUIM

D/AT      (   28): AT> AT^HCMGW="13671835306",0,1,0,0,1,0,2009,1,1,0,0,0

D/AT      (   28): AT< >

D/AT      (   28): AT> Hello^Z

D/AT      (   28): AT< ^HCMGW: 0

D/AT      (   28): AT< OK

D/RILJ    (   96): [0177]< RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM {0}

D/SmsProvider(  105): smsBytes ..=======  ghd   41545e48434d47573d223133363731383335333036222c302c312c302c302c312c302c323030392c312c312c302c302c302c300d48656c6c6f1a

D/CDMA    (  105): [RuimSmsInterfaceManager] copyMessageToIccEf: status=1 ==> pdu=([B@444de330)

D/RILJ    (  105): [0065]> RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM 1

D/RILD    (   35): onRequest: CDMA_WRITE_SMS_TO_RUIM

D/AT      (   35): AT> AT^HCMGW="13671835306",0,1,0,0,1,0,2009,1,1,0,0,0,0

D/AT      (   35): AT< +CSQ: 26,99

D/RILD    (   35): dbm level 3

D/RILD    (   35): cdmaDbm_backlog 1

D/AT      (   35): AT< +CMS ERROR: operation not supported

E/RILD    (   35): Write CDMA SMS to UIM card failed!

D/RILJ    (  105): [0065]< RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM error: com.android.internal.telephony.CommandException: GENERIC_FAILURE

W/InputManagerService(   56): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@4473b548

CDMA

99

write SIM

//write.................. hello

D/++++++++++++++++++++++++++++++++++++++++++(  219): 5

D/++++++++++++++++++++++++++++++++++++++++++(  219): 1

D/sunruijian/SmsProvider(  219): ++++++++++++++++++++++++++++++++++++++++smsBytes =0891683108100005f004098121436587f900001110320154132305c8329bfd06

D/GSM     (  219): [SimSmsInterfaceManager] copyMessageToIccEf: status=1 ==> pdu=([8, -111, 104, 49, 8, 16, 0, 5, -16, 4, 9, -127, 33, 67, 101, -121, -7, 0, 0, 17, 16, 50, 1, 84, 19, 35, 5, -56, 50, -101, -3, 6]), smsm=(null)

D/RILJ    (  219): [0332]> WRITE_SMS_TO_SIM 1

D/RILC    (   73): [qcril.c 2070] UI --- RIL_REQUEST_WRITE_SMS_TO_SIM (63) ---> RIL [token id 332, data len 12]

D/RILC    (   73): [qcril_reqlist.c 169] Not found ReqList entry : token id 332

D/RILC    (   73): [qcril_reqlist.c 400] Event RIL_REQUEST_WRITE_SMS_TO_SIM (63) pending receipt of WMS_MSG_EVENT_WRITE, token id 332 [0x2d618]

read SIM

TIA/EIA-637-A 3.4.3.3  等同与UTK TPDU 段

ptp TeleserviceID   Originating Address(10659165)                     bearerdata
03 3e | 00 | 00  02 1002  | 02 06 020699645940                  | 06  01 fc | 08        2c  00 03 1077b0 | 01 1a 20600188017801b2c823a032716bb42002800290026337a32d80 | 03 06 11 04 08 09 45 09 | 0a 01 40
01 ac   00  00  02 1002   | 02 07 02c69964450684         | 06  01 fc  |08        99  00 03 107e60 |  01 84220a98ba75628fd44262a08adfe001d27652c94a000000000000000000000

write UIM

read  UIM

send gsm sms

receiver gsm sms

send cdma sms

receiver cdma sms

SmsMessage.newFromParcel();

18901339893

00000000 00001002 00000000 00 00 00 00 0b 3138393031333339383933  00000000 00 00 00 00000016 00 03 100c60 | 01 04

阿                          11-03-30-11-19-54

200cb1f8        | 03 06 110330111954       | 09 01 00

qcril 读UIM卡短信的完整LOG如下:

D/RILJ    (  625): [0509]< SIM_IO IccIoResponse sw1:0x90 sw2:0x0
D/RILJ    (  625): [0510]> iccIO: SIM_IO 0xb2 0x6f3c  path: 3F007F25,1,4,255, null, null
D/RILC    (   80): [qcril.c 2089] UI --- RIL_REQUEST_SIM_IO (28) ---> RIL [token id 510, data len 32]
D/RILC    (   80): [qcril_mmgsdi_common.c 3004] qcril_mmgsdi_request_sim_io(178, 28476, 3F007F25, 1, 4, 255, NULL, NULL)
D/RILC    (   80): [qcril_reqlist.c 169] Not found ReqList entry : token id 510
D/RILC    (   80): [qcril_reqlist.c 400] Event RIL_REQUEST_SIM_IO (28) pending receipt of <none>, token id 510 [0x2b688]
D/RILC    (   80): [qcril_reqlist.c 1065] ReqList entries : 
D/RILC    (   80): [qcril_reqlist.c 1071]     RIL_REQUEST_SIM_IO (28), token id 510
D/RILC    (   80): [qcril_mmgsdi_common.c 932] parse_ef_path(fileid=0x6f3c, path_ptr=3F007F25)
D/RILC    (   80): [qcril_mmgsdi_common.c 959] parse_ef_path: unsupported path: 3F007F25
D/RILC    (   80): [qcril_mmgsdi_common.c 869] Path: 
D/RILC    (   80): [qcril_mmgsdi_common.c 777] parse_hex_ascii(path=3F007F25)
D/RILC    (   80): [qcril_mmgsdi_common.c 877]  3F00 
D/RILC    (   80): [qcril_mmgsdi_common.c 777] parse_hex_ascii(path=7F25)
D/RILC    (   80): [qcril_mmgsdi_common.c 877]  7F25 
D/RILC    (   80): [qcril_mmgsdi_common.c 777] parse_hex_ascii(path=)
D/RILC    (   80): [qcril_mmgsdi.c 1108] qcril_mmgsdi_command_callback: cnf = 0x4, status = 0x0
D/RILC    (   80): [qcril_mmgsdi.c 1120] qcril_mmgsdi_command_callback qcril_event_queue2
D/RILC    (   80): [qcril_event.c 407] Queued event MMGSDI_COMMAND_CALLBACK (516 bytes)
D/RILC    (   80): [qcril_event.c 290] qcril_event_main(): 1 items on queue
D/RILC    (   80): [qcril_event.c 311] De-queued event MMGSDI_COMMAND_CALLBACK (196609)
D/RILC    (   80): [qcril.c 2236] RIL <--- MMGSDI_COMMAND_CALLBACK (196609) --- AMSS
D/RILC    (   80): [qcril_mmgsdi.c 4282] qcril_mmgsdi_process_command_callback: QCRIL_EVT_MMGSDI_COMMAND_CALLBACK
D/RILC    (   80): [qcril_mmgsdi_common.c 3378] qcril_mmgsdi_common_simio_read_cnf
D/RILC    (   80): [qcril_mmgsdi_common.c 3395] RIL_SIM_IO_Response: sw1=144 sw2=0 data=07b10000021002040702c699644506840601fc089e0003200020018c222a98ba75628fd44262a08adfe001d27652c94ac8e4afa4b1acb740016270e29abcc670018801680193f538016338027a7360a371480190018af53001db3072c94bb3eac94cb1acb740016270e29abcc6700193f53801600190019291800198018af5300173e95ac8b3f5fc7c82e022c94b60a00162c8b28fd32fb2f7d45d736c13273315240522a60801700501f5030611072011062300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
D/RILC    (   80): [qcril_mmgsdi.c 195] mmgsdi status 0x0 -> RIL_E_SUCCESS
D/RILC    (   80): [qcril_reqlist.c 160] Found ReqList entry : RIL_REQUEST_SIM_IO (28), token id 510
D/RILC    (   80): [qcril_reqlist.c 160] Found ReqList entry : RIL_REQUEST_SIM_IO (28), token id 510
D/RILC    (   80): [qcril_reqlist.c 599] Deleted ReqList entry : token id 510 [0x2b688]
D/RILC    (   80): [qcril_reqlist.c 1061] ReqList entries : Empty
D/RILC    (   80): [qcril.c 3668] UI <--- RIL_REQUEST_SIM_IO (28) Complete --- RIL [Token 510, RIL_E_SUCCESS, Len 12 ]
D/RILC    (   80): [qcril.c 2264] Exit qcril_process_event() : MMGSDI_COMMAND_CALLBACK, err_no 0
D/RILC    (   80): [qcril_event.c 273] qcril_event_main(): Waiting...
D/RILJ    (  625): < responseICC_IO:  0x90 0x0 07b10000021002040702c699644506840601fc089e0003200020018c222a98ba75628fd44262a08adfe001d27652c94ac8e4afa4b1acb740016270e29abcc670018801680193f538016338027a7360a371480190018af53001db3072c94bb3eac94cb1acb740016270e29abcc6700193f53801600190019291800198018af5300173e95ac8b3f5fc7c82e022c94b60a00162c8b28fd32fb2f7d45d736c13273315240522a60801700501f5030611072011062300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
D/RILJ    (  625): [0510]< SIM_IO IccIoResponse sw1:0x90 sw2:0x0

short message相关推荐

  1. 如何将SIP链路Message短信转为CDMA短信通过SIGTRAN链路发送

    前言 近期遇到一个问题,将将SIP链路Message短信转为CDMA短信通过SIGTRAN链路发送.Message短信通过SIP链路送到业务处理平台,业务处理平台将该Message消息重新打包为CDM ...

  2. 服务器端往手机端推送数据的问题(手机解决方案)

    1.方案一: 思路:使用socket连接,在手机端开个socketserver,然后服务器端连接手机端,实现服务器端的不定时发送数据. MIDlet关闭时, 你可以通过sms激活它. midlet运行 ...

  3. 华为p30如何把计算机放进通知栏,华为p30短信来了在通知栏怎么不显示

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 华为p30短信来了在通知栏不显示的原因是关闭了短信的[允许通知]按钮,解决方法是: 1.打开华为手机,点击设置里的应用. 2.进去 ...

  4. SP 短信开发-基础知识篇

    SP 短信开发-基础知识篇 很土的话题,但是最近帮朋友做这个东西,所以写点东西出来给初学者参考. 一.准备资料 SP开发资料网站上有很多,但是主要是以下几个文档: 1.MISC1.6 SP订购通知接口 ...

  5. 读书笔记之:Boost程序库完全开发指南(Ch1-4)

    第0章 导读 第1章 Boost程序库总论 1.什么是Boost 2. 如何使用Boost 3.什么是STLprot 4.开发环境 第2章 时间与日期 1. timer库 代码如下: View Cod ...

  6. linux 关闭java进程后重启有用吗_linux启动java进程的shell脚本(包括启动,停止,重启)...

    近来使用spring boot写了一个短信服务组件,并配上此段脚本,实现对服务进程的管理 #!/bin/bash # chkconfig: 2345 85 85 # description: sms- ...

  7. 【FPGA】SRIO IP核系统介绍之事务类型(Transaction)

    RapidIO规范定义了几种事务类型. 每种事务类型执行不同的功能. IP核的事务支持是通过Vivado®集成设计环境(IDE)设置的. 表3-1列出了已定义的事务类型,并指示事务所属的LOG端口. ...

  8. libevent在windows下使用步骤详解

     libevent是一个常用的网络库,下面就看看在windows下面编译测试的过程吧. 一 环境 系统:win8.1 编译器:VS2013 官方下载地址:http://libevent.org/ ...

  9. android o wifi 感知,Android上的Wifi感知与Wifi P2P之间有何区别?

    根据Android文档,使用Wi-Fi Aware,您可以在服务发现阶段在设备之间发送数据(仅轻量级!最大255个字节),并且在需要时可以打开设备之间的连接以发送更大的数据.使用Wi-Fi对等网络时, ...

最新文章

  1. 趣链 BitXHub跨链平台 (4)跨链网关“初介绍”
  2. sql server 替换有反斜杠的字符串_SQL注入思维导图
  3. ElasticSearch出现java.lang.IllegalStateException: duplicate plugin: - Plugin information:
  4. 选购维生素C需要注意的事项
  5. 添加standardjs和eslint配置检测代码规范步骤
  6. Python的实例方法,类方法,静态方法之间的区别及调用关系
  7. 如何在短时间内快速提升网站响应速度
  8. mysql用户角色权限表设计_用户角色权限设计(转)
  9. Unity3D Terrain 变成粉色(紫色/洋红色)解决方案!
  10. element-ui更改图标icon大小
  11. 苹果11蓝牙配对不成功怎么办_iphone11蓝牙搜不到设备怎么办
  12. 第一章 80C51单片机概述
  13. 顺丰快递商家寄件发货接口API类型和接入流程方案【快递100接口Demo】
  14. 为什么onenote一直在加载_2.为什么人人都需要OneNote?
  15. 1.3 nuclei sdk Makefile分析
  16. ablation experiments
  17. wps里面函数怎么使用_WPS中函数的使用方法 - 卡饭网
  18. 恋恋不忘Day 1-1
  19. 百度网盟广告关键词定向展现方式原理
  20. 向量距离、随机变量相关性与概率分布的差异度量

热门文章

  1. 读取手机或SD卡的音频
  2. linux(07)之内核系统调用
  3. [转帖]nginx1.17.2版本源码安装
  4. Java题目汇总(二)
  5. PTA题目 到底是不是太胖了
  6. 如何解释“运维到底是干啥的”?
  7. Python标准库文件基本操作以及中文路径问题
  8. elementui穿梭框数据不更新
  9. Eclipse插件开发----------File转换为IFile
  10. golang力扣leetcode 1823.找出游戏的获胜者