short message

 

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


 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值