WMMP协议终端开发说明V10.docx
《WMMP协议终端开发说明V10.docx》由会员分享,可在线阅读,更多相关《WMMP协议终端开发说明V10.docx(53页珍藏版)》请在冰豆网上搜索。
![WMMP协议终端开发说明V10.docx](https://file1.bdocx.com/fileroot1/2022-11/23/4f33fba3-7224-424c-8176-74c8ac4b9d20/4f33fba3-7224-424c-8176-74c8ac4b9d201.gif)
WMMP协议终端开发说明V10
WMMP协议终端开发说明V1.0
1.WMMP协议概述
本协议为实现行业终端与M2M平台数据通信过程而设计。
协议建立在UDP协议之上,如下图所示。
由于GPRS网络带宽较窄,延迟较大,不适于采用TCP协议进行通信。
而采用UDP协议无连接方式传输,其优点是效率高,流量小,节省网络带宽资源。
缺点是没有确认机制,有可能引起丢包,根据实际经验发现,采用UDP方式传输,丢包率能控制在1%以下,通过在UDP的上层应用层协议实现类似TCP的包确认和重传机制,从而提高通信效率及可靠性。
本协议使用的端口暂定为9991,数据包以同步方式交互,如不作特殊说明,每一个数据包必须有一个响应。
本协议中的WORD和DWORD数值都采用网络字节序(高位在前,低位在后)。
2.WMMP协议通信方式
行业终端与M2M平台共有两种连接方式:
长连接和短连接。
所谓长连接,指在一个过程中可以连续发送多个数据包,如果没有数据包发送,需要行业终端发送心跳包以维持此连接。
短连接是指通信双方有数据交互时,就建立一个WMMP过程,数据发送完成后,则断开此WMMP过程。
长连接过程中采用了心跳作为维持、监测链路的手段。
而短连接由于数据的交互在较短的时间内完成,可以不需要心跳包来维持链路,但仍然需要通过心跳包告知M2M平台它的运行状态,以便进行监控和故障报警。
2.1长连接
通信双方以客户-服务器方式建立WMMP过程,用于双方信息的相互提交。
当信道上没有数据传输时,行业终端应每隔时间C发送心跳包以维持此连接,当心跳包发出超过时间T后未收到响应,应立即再发送心跳包,再连续发送N-1次后仍未得到响应则结束此过程。
参数C、T、N原则上应可配置,现阶段建议取值为:
C=1分钟,T=15秒,N=3。
消息采用同步方式发送,长连接的操作流程举例如下图所示:
2.2短连接
行业终端平时处于下线,当本地由于数据需要传输或达到定时上线时间等类似策略时,行业终端作为客户端以客户-服务器方式建立WMMP过程,传送数据完成后,结束该过程。
通信消息发送后等待T秒后未收到响应,应立即重发,再连续发送N-1次后仍未得到响应则停发。
现阶段建议取值为:
T=15秒,N=3。
尽管是短连接,为了M2M平台对终端的监控和管理,终端仍然需要通过短信向平台发送心跳包。
短连接的操作流程与长连接一致,唯一的区别在于平台并非通过心跳包来判断终端链路的存在,而是判断终端是否处于工作状态。
3.WMMP协议命令说明
消息类型
Command_id
说明
LOGIN
0x0001
终端向平台发送的登录包
LOGIN_ACK
0x8001
平台向终端发送的连接登录响应包
LOGOUT
0x0002
终端与平台之间发送的断开连接包
LOGOUT_ACK
0x8002
终端与平台之间发送的断开连接响应包
HEART_BEAT
0x0003
终端向平台发送的维持过程连接包
HEART_BEAT_ACK
0x8003
平台向终端发送的维持过程连接回应包
TRANSPARENT_DATA
0x0004
可以双向传输的透明数据包
TRANSPARENT_DATA_ACK
0x8004
对可以双向传输的透明数据包的响应
CONFIG_GET
0x0005
平台向终端发送的读取行业终端的配置信息包
CONFIG_GET_ACK
0x8005
终端向平台发送的响应包,上报配置信息
CONFIG_SET
0x0006
平台向终端发送的设置命令包或者设置参数包
CONFIG_SET_ACK
0x8006
终端向平台发送的设置响应包
CONFIG_TRAP
0x0007
行业终端向M2M平台上报的TRAP信息,包括告警信息。
CONFIG_TRAP_ACK
0x8007
M2M平台对行业终端上报告信息的响应。
CONFIG_REQ
0x000A
终端向平台发起请求配置参数
CONFIG_REQ_ACK
0x800A
平台向终端发送的请求配置参数的响应包
REMOTE_CTRL
0x000B
平台向终端发送的远程控制包
REMOTE_CTRL_ACK
0x000B
终端向平台发送的远程控制响应包
PL_DOWNLOAD
0x000C
平台发起下载更新通知
PL_DOWNLOAD_ACK
0x800C
终端对平台发起下载更新通知的响应
3.1包头格式
字段
长度(字节)
备注
消息头
报文总长度
2
消息类型代码
2
CommandID
流水号
4
报文协议版本
2
保留字
2
取值始终为0
终端序列号
16
(待定)
3.2终端注册(LOGIN)
注册流程:
(终端平台分配序列号模式使用,预制序列号的终端直接登录)
终端发送注册包时,包头中的终端序列号后8位必须为‘0’。
终端注册成功后,必须保存终端序列号和注册成功状态。
下次终端重新启动或者换卡重新启动后,读取终端保存的注册状态和终端序列号,注册状态是注册成功时,终端直接登录。
LOGIN
字段名
字节数
描述
注册包
IMEI
16
定长字段,16字节,对于15字节的IMEI号,则后面补0。
IMSI
15
IMSI号码
例如:
字段
长度(字节)
内容
消息头
报文总长度
2
0x003B
消息类型代码
2
0x0001
流水号
4
0x00000001
报文协议版本
2
0x0101
保留字
2
0x0000
终端序列号
16
‘A0010001
00000000’
包体
IMEI
16
‘12345678
9012345’
IMSI
15
‘460001369435781’
LOGIN_ACK
字段名
字节数
描述
注册响应包定长字段部分
Status
1
返回注册结果
0:
注册成功;
1:
非法终端序列号;
2:
通信协议版本不兼容;
3:
改为短信方式注册;
其他:
保留。
终端序列号
16
平台分配/记录的终端序列号
例如:
字段
长度(字节)
内容
消息头
报文总长度
2
0x002d
消息类型代码
2
0x8001
流水号
4
0x00000001
报文协议版本
2
0x0101
保留字
2
0x0000
终端序列号
16
‘A0010001
07000001’
包体
Status
1
Ox00
终端序列号
16
‘A0010001
07000001’
3.3终端登录(LOGIN)
终端发送登录包时,包头中的终端序列号为平台在注册成功应答中分配给终端的序列号或者终端预制的序列号。
LOGIN
登录包
TerminalVersion
不定长
终端版本号,空字符结尾’\0’,最长不超过8个字节
IMSI
15
IMSI号码
终端配置参数的CRC32校验
4
终端配置信息的CRC32校验和。
TAG组部分
0x3006
4
CellularID,终端所在小区标识(高16位表示LAC,低16位表示CI)(可选)
0x3007
1
SigIntensity,本地信号场强,0-100(可选)
0x3010
终端外设,(可选字段)
外设类型采用2个字节编码,允许扩展,目前系统预留了如下外设编码:
0x0001——PRN:
打印机
0x0002——SCAN:
扫描枪
0x0003——POS:
POS刷卡器
0x0004——IC:
IC卡感应器
0x0005——KEY:
密码小键盘
0x0006——PHONE:
外接话机
DEV的值为外设编码的序列,无间隔,例如:
TAG
Len
Value
0x3010
6
0x000100020003
表示三个外设编号分别为0x0001,0x0002,0x0003
终端配置参数的CRC32说明:
M2M平台通过对比平台存储的用户定制配置参数(参数可以是配置TAGOX0001~0X0013内任意组合,但必须包含心跳TAG,参数配置举例见下表格)的CRC32校验和以及终端上报的本地配置参数CRC32校验和,判断终端的配置参数内容与平台存储的信息是否一致。
如果不一致,则触发参数配置流程,参见流程D。
CRC部分根据TAG的值由小到大排列TLV组来算出CRC32值。
用户定制配置参数举例:
字段名
字节数
描述
0x0002
STRING
网络接入点名称(APN)
0x0007
STRING
平台短信特服号
0x0009
STRING
平台的IP地址
0x000a
WORD
平台的端口
0x0011
DWORD
心跳间隔(PERIOD),4字节整形
0x0012
STRING
业务应用USSD短信特服号码
例如:
字段
长度(字节)
内容
消息头
报文总长度
2
0x0041
消息类型代码
2
0x0001
流水号
4
0x00000001
报文协议版本
2
0x0101
保留字
2
0x0000
终端序列号
16
‘A0010001
07000001’
包体
TerminalVersion
5
‘0101\0’
IMSI
15
‘460001369435781’
终端配置参数的CRC32校验
4
0x21ae3b
CellularID
2(TAG)
0x3006
2(LENGTH)
0x0004
4(VALUE)
0x1876AB00
SigIntensity
2(TAG)
0x3007
2(LENGTH)
0x0001
1(VALUE)
0x26
LOGIN_ACK
字段名
字节数
描述
登录响应包定长字段部分
Status
1
返回注册结果
0:
登录成功,并需要下发配置数据
1:
非法IMSI
2:
非法终端序列号;
3:
通信协议版本不兼容;
4:
登录成功,但不需要下发配置
5:
终端没有REGIST(注册)
6:
改为短信方式登录
其他:
保留。
CurTime
4
当前系统时间:
从1970-1-1起到当前的秒数计算
例如:
字段
长度(字节)
内容
消息头
报文总长度
2
0x0021
消息类型代码
2
0x8001
流水号
4
0x00000001
报文协议版本
2
0x0101
保留字
2
0x0000
终端序列号
16
‘A0010001
07000001’
包体
Status
1
Ox04
CurTime
4
0x4631B837
终端注册和登录平台处理流程图:
1、GPRS方式
流程A
流程B
2、SMS和USSD方式
流程C
流程D
3.4终端退出(LOGOUT)
LOGOUT
字段名
字节数
描述
定长字段部分
LogoutReason
1
0:
正常退出,进入等待激活模式;
1:
准备升级;(此项一般由行业终端端发起)
2:
故障断开;
3:
应用新配置;(此项一般由行业终端端发起);
4:
心跳超时;
5:
故障退出,进入等待激活模式
其他:
保留。
例如:
字段
长度(字节)
内容
消息头
报文总长度
2
0x001D
消息类型代码
2
0x0002
流水号
4
0x00000002
报文协议版本
2
0x0101
保留字
2
0x0000
终端序列号
16
‘A0010001
07000001’
包体
LogoutReason
1
Ox00
LOGOUT_ACK
无包体
例如:
字段
长度(字节)
内容
消息头
报文总长度
2
0x001C
消息类型代码
2
0x8002
流水号
4
0x00000002
报文协议版本
2
0x0101
保留字
2
0x0000
终端序列号
16
‘A0010001
07000001’
3.5终端心跳包(HEART_BEAT)
HEART_BEAT
字段名
字节数
描述
TAG组部分
0x3006
4
CellularID,终端所在小区标识(高16位表示LAC,低16位表示CI)(可选)
0x3007
1
SigIntensity,本地信号场强,0-100(可选)
例如:
字段
长度(字节)
内容
消息头
报文总长度
2
0x0029
消息类型代码
2
0x0003
流水号
4
0x00000003
报文协议版本
2
0x0101
保留字
2
0x0000
终端序列号
16
‘A0010001
07000001’
包体
CellularID
2(TAG)
0x3006
2(LENGTH)
0x0004
4(VALUE)
0x1876AB00
SigIntensity
2(TAG)
0x3007
2(LENGTH)
0x0001
1(VALUE)
0x26
HEART_BEAT_ACK
无包体
例如:
字段
长度(字节)
内容
消息头
报文总长度
2
0x001C
消息类型代码
2
0x8003
流水号
4
0x00000003
报文协议版本
2
0x0101
保留字
2
0x0000
终端序列号
16
‘A0010001
07000001’
3.6终端上报信息(CONFIG_TRAP)
3.6.1告警产生上报
字段名
字节数
描述
TAG组部分
0x300D
Alarm_Code,双字,表示告警原因的告警代码。
0x0001:
短信方式连接入服务器失败(通讯告警)
0x0002:
USSD方式连接入服务器失败(通讯告警)
0x0003:
GPRS方式连接入服务器失败(通讯告警)
0x0004:
GPRS无法打开(通讯告警)
0x0005:
GPS模块故障(终端硬件告警)
0x0006:
终端自检测故障(终端硬件告警)
0x0007:
短信提交信息超时(通讯告警)
0x0008:
终端电源故障(终端硬件告警)
0x0009:
超门限告警(终端硬件告警)
0x000A:
终端升级失败(终端软件告警)
0x000B:
信号强度弱(终端硬件告警)
0x000C:
拨号失败(终端硬件告警)
0x000D:
误码过多(终端软件告警)
0x000E:
企业业务平台连接失败(通讯告警)
0x000F:
未收到平台服务器的任何数据包
0x0010:
与平台协议版本不匹配
0x0011:
内存出错
0x0012:
应用文件损坏
0x0013:
业务应用服务器平台无法访问
0x0014:
监控平台无法访问
0x0015:
打印机异常
0x0016:
扫描枪异常
0x0017:
POS刷卡器异常
0x0018:
IC卡感应器异常
0x0019:
密码小键盘异常
0x001A:
外接话机异常
其他:
系统保留
其值的形式为:
0x0001
例如:
字段
长度(字节)
内容
消息头
报文总长度
2
0x0022
消息类型代码
2
0x0007
流水号
4
0x00000007
报文协议版本
2
0x0101
保留字
2
0x0000
终端序列号
16
‘A0010001
07000001’
包体
上报告警产生
2(TAG)
0x300D
2(LENGTH)
0x0002
2(VALUE)
0x0001
3.6.2告警恢复上报
字段名
字节数
描述
TAG组部分
0x300E
Alarm_Code,双字,表示告警原因的告警代码。
0x0001:
短信方式连接入服务器失败(通讯告警)
0x0002:
USSD方式连接入服务器失败(通讯告警)
0x0003:
GPRS方式连接入服务器失败(通讯告警)
0x0004:
GPRS无法打开(通讯告警)
0x0005:
GPS模块故障(终端硬件告警)
0x0006:
终端自检测故障(终端硬件告警)
0x0007:
短信提交信息超时(通讯告警)
0x0008:
终端电源故障(终端硬件告警)
0x0009:
超门限告警(终端硬件告警)
0x000A:
终端升级失败(终端软件告警)
0x000B:
信号强度弱(终端硬件告警)
0x000C:
拨号失败(终端硬件告警)
0x000D:
误码过多(终端软件告警)
0x000E:
企业业务平台连接失败(通讯告警)
0x000F:
未收到平台服务器的任何数据包
0x0010:
与平台协议版本不匹配
0x0011:
内存出错
0x0012:
应用文件损坏
0x0013:
业务应用服务器平台无法访问
0x0014:
监控平台无法访问
0x0015:
打印机异常
0x0016:
扫描枪异常
0x0017:
POS刷卡器异常
0x0018:
IC卡感应器异常
0x0019:
密码小键盘异常
0x001A:
外接话机异常
其他:
系统保留
其值的形式为:
0x0001
例如:
字段
长度(字节)
内容
消息头
报文总长度
2
0x0022
消息类型代码
2
0x0007
流水号
4
0x00000007
报文协议版本
2
0x0101
保留字
2
0x0000
终端序列号
16
‘A0010001
07000001’
包体
上报告警恢复
2(TAG)
0x300E
2(LENGTH)
0x0002
2(VALUE)
0x0001
3.6.3终端上报统计数据
字段名
字节数
描述
TAG组部分
0x2008
4
终端发送短信成功条数(可选)
0x2009
4
终端发送短信失败条数(可选)
0x200A
4
终端接收短信条数(可选)
0x200B
4
终端Gprs数据通信流量(可选)
0x200C
4
终端USSD成功条数(可选)
0x200D
4
终端USSD失败条数(可选)
0x200E
4
终端接收USSD条数(可选)
例如:
字段
长度(字节)
内容
消息头
报文总长度
2
0x0024
消息类型代码
2
0x0007
流水号
4
0x00000007
报文协议版本
2
0x0101
保留字
2
0x0000
终端序列号
16
‘A0010001
07000001’
包体
上报统计数据
2(TAG)
0x200B
2(LENGTH)
0x0004
4(VALUE)
0x00000011
3.6.4终端上报通信方式
字段名
字节数
描述
TAG组部分
0x4005
1
1字节。
采集(统计、监控、业务)数据传送方式:
1-SMS;2-USSD;3-GPRS;4其他;
例如:
字段
长度(字节)
内容
消息头
报文总长度
2
0x0021
消息类型代码
2
0x0007
流水号
4
0x00000007
报文协议版本
2
0x0101
保留字
2
0x0000
终端序列号
16
‘A0010001
07000001’
包体
上报通信方式
2(TAG)
0x4005
2(LENGTH)
0x0001
1(VALUE)
0x01
CONFIG_TRAP_ACK
字段名
字节数
描述
定长字段
Status
1
0:
数据正确;
1:
数据无效;
其他:
失败,原因待定。
TAG组
2*Tag数目
可选,数据无效的TAG组
例如:
字段
长度(字节)
内容
消息头
报文总长度
2
0x001D
消息类型代码
2
0x8007
流水号
4
0x00000007
报文协议版本
2
0x0101
保留字
2
0x0000
终端序列号
16
‘A0010001
07000001’
包体
Status
1
0x00
3.7终端和应用业务数据交互(TRANSPARENT_DATA)
TRANSPARENT_DATA
字段名
字节数
属性
描述
交互数据
n
终端和应用交互信息
例如:
字段
长度(字节)
内容
消息头
报文总长度
2
0x0020
消息类型代码
2
0x0004
流水号
4
0x00000004
报文协议版本
2
0x0101
保留字
2
0x0000
终端序列号
16
‘A0010001
07000001’
包体
数据信息
4
0X01020304
TRANSPARENT_DATA_ACK
字段名
字节数
属性
描述
响应数据
n
响应数据
例如:
字段
长度(字节)
内容
消息头
报文总长度
2
0x0020
消息类型代码
2
0x8004
流水号
4
0x00000004
报文协议版本
2
0x0101
保留字
2
0x0000
终端序列号
16
‘A0010001
07000001’
包体
数据信息
4
0X05060708
3.8终端请求的参数配置(CONFIG_REQ)
CONFIG_REQ
字段名
字节数
描述
TAG组
2×TAG数目
由配置参数标识组成,如0x000200070009000a00120011(参数范围见下表格)
请求参数范围:
字段名
字节数
描述
0x0002
STRING
网络接入点名称(APN)
0x0007
STRING
平台短信特服号
0x0009
STRING
平台的IP地址
0x000a
WORD
平台的端口
0x0011
DWORD
心跳间隔(PERIOD),4字节整形
0x0012
STRING
业务应用USSD短信特服号码
例如:
字段
长度(字节)
内容
消息头
报文总长度
2
0x0022
消息类型代码
2
0x000A
流水号
4
0x0000000A
报文协议版本
2
0x0101
保留字
2
0x0000
终端序列号
16
‘A0010001
07000001’
包体
数据信息
6
0x00020009000a
CONFIG_REQ_ACK
字段名
字节数
描述
定长字段部分
Status
响应结果代码
0——接收成功
1——数据无效
其他:
失败,原因待定。
TAG组部分
0x0002
STRING
网络接入点名称(APN)
0x0007
STRING