作者:IPLinger
转载请注明出处,谢谢:)
TIA-EIA-637-A 协议的一点点思考
Short Message Services for Spread Spectrum Systems
我们可以理解为CDMA网络下的短消息传输协议。
这 个协议我看过也没有多久,刚刚涉及,不过借助高通的底层的代码,加之自己在作报告期间对文档的分析。也使自己在文档表面文字之上多了一点点的理解。这里写 一些我理解的,但是协议里没有的很清楚表明的东西。(由于本人才疏学浅,肯定有不对的地方,也请高手指点 我的QQ 88603845)。
其实可以说协议里很多东西都写得很清楚了,只是有些东西没有放在一起加以系统的比较。所以让人阅读起来觉得很不“舒服”。在外我阅读的过程中,发现协议里最容易让人混淆的东西就是各种层面的Acknowledgement了。这里我做一下总结与比较。
首先我们看一下属于Teleservice Layer 的 SMS Delivery Acknowledgment & SMS User Acknowledgment Message 。
|
originate
|
receive
|
||
|
MC (Message Center)
|
MS (Mobile staion)
|
MC
|
MS
|
SMS Delivery Acknowledgment Message
|
1.当MC收到一个
SMS Submit
Message并且DAK_REQ ==‘1’的时候,MC应该在收到目的地的应答后向originating MS发出SMS
Delivery Acknowledgment Message。
2.当MC收到 SMS Cancellation Message后应返回一个
SMS
Delivery Acknowledgment
Message,包含User Data subparameter用以表示递交到目的地的消息是成功了还是被取消了。
|
X
|
X
|
当MS收到本消息后,其实现过程可以依靠其具体应用需要来操作。
|
SMS User Acknowledgment Message
|
X
|
当MS收到一个
SMS Deliver Message 含有Reply Option subparameter,当用户确认了这个消息的时候,MS应该向originating 发送
SMS User
Acknowledgment Message ,用以响应收到的消息。此时TSL应该将源地址传给TL作为目的地址,并把Message Identifier subparameter 中的MESSAGE_ID设置为对应的需要应答的那条消息的MESSAGE_ID的值。
|
收到本消息后向其中加入Message Center Time Stamp subparameter 后转发向目的地。
|
当MS收到本消息后,其实现过程可以依靠其具体应用需要来操作。
|
接着我们看一下属于Transport Layer 的 SMS Acknowledge Message (我们简称为 SMS ACK),我们做一下对它的总结:
前 面已经介绍了三种Acknowledgement,最后我们说一下属于 Link Layer 的 Message Acknowledgement (我们简称为 MS ACK)。 其实这是属于IS95B中的东西,如果想详细了解可以参考IS95B协议。这里只说说它与我们短消息的关系。
现在我们把四种Acknowledgement放在一起比较一下,可以得到下面这样表:
Acknowledgement Type
|
Range
|
Origination
|
Destination
|
Message
Acknowledgement
(Link Layer)
MS_ACK
|
Mobile Station ~ Base Station
|
Mobile Station / Base Station
|
Mobile Station / Base Station
|
SMS Acknowledge
Message
(Transport Layer)
SMS_ACK
|
Mobile Station ~ MC
|
Mobile Station / MC
|
Mobile Station / MC
|
SMS Delivery
Acknowledgment
Message
(Teleserviec Layer)
|
Mobile Station ~ MC
|
MC
the destination mobile station has returned a Transport Layer SMS Acknowledgment Message
|
Mobile Station
源地址
|
SMS User
Acknowledgment
Message
(Teleservice Layer)
|
Mobile Station ~ Mobile Station
|
Mobile Station
目的地址
|
Mobile Station
源地址
|
那么整个短消息发送传输的响应流程图应该是下面这个样子的:)
有关CDMA网络中的短信回执。
在CDMA网络中实现短信回执是如何做到呢?其实很简单的,这个问题留给大家想想吧。
这里给大家看看短信回执的具体内容,以下为log数据:
burst_data
sms_msg
sms_msg_type = 0 (SMS Point-to-Point)
num_parms = 3
sms_parms[0]
sms_pp_parms
parameter_id = 0 (Teleservice Identifier)
teleservice_id
telesvc_id = 4098 (0x1002) (CDMA Cellular Messaging Teleservice)
sms_parms[1]
sms_pp_parms
parameter_id = 2 (Originating Address)
addr
digit_mode = 0
number_mode = 0
num_fields = 11
sms_digit[0] = 1 (1)
sms_digit[1] = 3 (3)
sms_digit[2] = 3 (3)
sms_digit[3] = 5 (5)
sms_digit[4] = 6 (6)
sms_digit[5] = 9 (9)
sms_digit[6] = 9 (9)
sms_digit[7] = 9 (9)
sms_digit[8] = 8 (8)
sms_digit[9] = 2 (2)
sms_digit[10] = 9 (9)
sms_parms[2]
sms_pp_parms
parameter_id = 8 (Bearer Data)
bearer_data
header_ind = 0
num_subparms = 3
bd[0]
subparameter_id = 0 (Message Identifier)
message_identifier
message_type = 4 (Delivery Acknowledgement)
message_id = 82 (0x1952)
bd[1]
subparameter_id = 1 (User Data)
user_data
msg_encoding = 4 (UNICODE - 16 bits)
num_fields = 4
sm_tp_user_data_unicode_16
user_data_16_bit[0] = 26242 (0x6682)
user_data_16_bit[1] = 32531 (0x7f13)
user_data_16_bit[2] = 21457 (0x53d1)
user_data_16_bit[3] = 36865 (0x9001)
bd[2]
subparameter_id = 3 (Message Center Time Stamp)
message_ctr_time_stamp
year = 5 (illegal hex digits 0x05)
month = 9 (illegal hex digits 0x09)
day = 6 (illegal hex digits 0x06)
hours = 23 (0x17 -- 17)
minutes = 81 (0x51 -- 51)
seconds = 4 (illegal hex digits 0x04)
我能理解的也不多,必定刚刚开始涉及这方面的东西。希望能和有这方面的朋友多多交流:)。
邮箱 [email protected]
qq 88603845