TIA-EIA-637-A 协议的一点点思考

作者: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),我们做一下对它的总结:

1. SMS Acknowledge Message真正的传送范围是从 mobile station 到 MC 之间,不要“误”认为是从 mobile station 到 base station。
2. SMS Acknowledge Message可以在 mobile station 和 base station 被形成,并在 Um 上传输,但是要注意:在 mobile station 发出 SMS Acknowledge Message之前要等待上层Teleservice 的确认,同样在 base station 发出 SMS Acknowledge Message之前要等待 N 网络(即MC)发回的确认。我们可以想象在BS与MC之间有类似于“ SMS Acknowledge Message”的一种消息确认的方式存在。
3.当 base station 收到MC发来 SMS Acknowledge Message的时候需要将“响应信息”通知给N网络(即MC) 。

前 面已经介绍了三种Acknowledgement,最后我们说一下属于 Link Layer 的 Message Acknowledgement (我们简称为 MS ACK)。 其实这是属于IS95B中的东西,如果想详细了解可以参考IS95B协议。这里只说说它与我们短消息的关系。

ACK_SEQ (acknowledgement sequence number)
本字段应为刚刚收到的并需要被响应的消息的MSG_SEQ (消息序列号) 的值。如果没有这样的消息,本字段默认填入‘111’。
MSG_SEQ (message sequence number)
本字段应为本条消息的消息序列号。
ACK_REQ (acknowledgement required)
响应指示;如果是在Access Channel (选址信道) 进行消息传输,本字段应为 ‘1’;如果是在 Traffic Channel (业务信道) 进行消息传输,如果需要响应信息本字段应为‘1’,否则本字段应为‘0’。
VALID_ACK (valid acknowledgement)
如果是对收到的来自 Paging Channel(寻呼信道)的消息进行响应,本字段应为‘1’,否则为‘0’。
ACK_TYPE ( acknowledgement address type)
如果是对收到的来自 Paging Channel (寻呼信道)的消息进行响应,本字段应为ADDR_TYPE字段的值。如果收到的Paging Channel 的消息没有ADDR_TYPE字段,或者根本没有Paging Channel的消息,本字段应为‘000’

现在我们把四种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

你可能感兴趣的:(TIA-EIA-637-A 协议的一点点思考)