发送OTA书签的sms的格式
首先需要写一个bookmark的xml文件,这个格式可以去nokia网站下载。下面是一个例子: <?xml version="1.0"?> <!DOCTYPE CHARACTERISTIC-LIST PUBLIC "" "characteristic_list.dtd"> <CHARACTERISTIC-LIST> <CHARACTERISTIC TYPE="BOOKMARK"> <PARM NAME="NAME" VALUE="bookmark name"/> <PARM NAME="URL" VALUE="http://www.bookmark.com"/> </CHARACTERISTIC> </CHARACTERISTIC-LIST>
尽量让name和url短点,这样编码后可以放到一条短消息里面,而不需要把一个设置拆分成多个短消息体。大致的一个封装是把xml文件转成wbxml,然后再在外面封装WSP层,最外面是WDP层。
WDP的一般格式是“0B0504C34FC002000304xxyy”,其中xx就是整个数据包的总片断数目,而yy表示当前片断是第几个片断。举个例子,一个简单的bookmark全部放在一个sms中这样xx=01,yy=01。 下面是每个byte的意思:
# 0B | User-Data-Header (UDHL) Length = 11 bytes # 05 | UDH IE identifier: Port numbers # 04 | UDH port number IE length # C3 | Destination port (high) # 4F | Destination port (low) # C0 | Originating port (high) # 02 | Originating port (low) # 00 | UDH IE identifier: SAR # 03 | UDH SAR IE length # 04 | Datagram ref no. # # Two variable bytes, intentionally missing from WDP header, user must # calculate and add at send time. # # xx | Total number of segments in datagram # yy | Segment count
bookmark的WSP层的格式一般是"01062D1F2A6170706C69636174696F6E2F782D7761702D70726F762E62726F777365722D626F6F6B6D61726B730081EA" 每个byte的具体意思是:
# 01 | Transaction ID / # 06 | PDU type (push) # xx | Header length (content type headers) # 1F | Value length quote length greater than 30 # 2A | Value length (value name not used) # xx | Mimetype encoded, variable bytes | application/x-wap-prov.browser-{bookmarks | settings} # 00 | Null termination of content type string | # 81 | Charset | Well known PARM. (short integer) # EA | UTF-8 (using short integer) 最里层就是WBXML了,首先必须有个xml的头"01016A00"
# 01 | Version | WBXML 1.1 # 01 | Unknown public identifier | # 6A | Charset | UTF-8 # 00 | String table length |
至于其他的具体编码可以去http://www.forum.nokia.com查看OTA_settings_general_7_0.pdf这个文档,里面很详细的描述了每一个XML元素对应的十六进制。最后注意一点,发送的时候要按8bit格式的发送,而不是7bit格式。

|