您好,欢迎访问三七文档
CO2是对11.14的具体化协议,所以大部分东西和11.14是相关的,主要的目的,就是实现中国移动对自己的STK菜单等进行OTA下载更新。CO2协议最重要的两个部分,一部分是固化服务,一部分是更新服务。固化服务主要包括category,application,process;更新服务通过数据短信,上传,下载更新的数据,对卡上的STK菜单进行管理。固话服务其实是包括在更新服务这一部分中的,仅是远程目录管理的一部分,预置在卡上,不必每一个菜单都进行更新。对于更新服务,包括两部分,上行数据,和下行数据MO下载,菜单删除,PUSH,下载服务列表更新,OTA卡远程管理和GPRS等参数下载,每一项协议中都有解释,在这里不多叙述,主要介绍第六章,OTA应用下载系统传输协议。对于OTA应用下载报文,可以分为两类,上行报文,下行报文(又分为信息下载报文和远程更新报文)报文的分类是通过报文中的内容分析,上行报文的第一个字节肯定是D0,这是11.14规定的(BER_TLVtagsinMEtoSIMdirection),至于信息下载和远程更新报文的分类,要看报文中间的一段tar,B00010,OTA应用下载,B00011,业务品牌可视化应用(不包括在co2规范,是后面扩展应用,和这个协议没关系),B0001F,远程文件更新RFM。上行,下行下载,下行更新三种报文结构不同,所以看一条指令时,首先先要查找一下tar,看看是什么报文,然后再查表看含义。上行报文包括三个部分,TPDU头文件,安全应用数据,命令数据,其中根据应用的不同,命令数据有区别,其他相同。TPDU头:同之前介绍过的相同,但是到目前,我依旧很多东西分不出来。安全应用数据:品牌标识,1:是0:不是E.g.13=0001,0011,全球通用户,有无忧小助手和OTA功能。同步计数器,随机数,mac都在11章中介绍,一会再说。命令数据上行命令数据的结构如下图所示其中,根据命令类型的不同,命令长度和参数也是不相同的,上行命令一共包括6种,如下图所示e.g.04044C0023AD用户注册04,长度04,命令参数包括两部分,卡发行批号4C和可用空间0023AD下面是不同命令类型的数据组成下行报文,数据下载主要包括四个部分,TPDU头,安全应用数据,命令数据,应用数据。TPDU头,相同安全应用数据,不明白,等接触了之后再细细考虑每一位的作用,现在看来很多位都是常量,不知道为什么命令数据,和上行报文一样,命令数据是不同的,其中一共有10种不同的命令类型,如下图所示10种不同的命令使用时查表,下面是信息下载的命令类型,应用数据对其他的都不是很了解,对我来说,这里是现阶段接触最多的,也是最熟悉的。结构服务索引AID+应用所需空间+应用菜单名称+应用变量定义+OTA空间分配变量定义+业务数据对于一个项目而言,神州行天地\飞信\开通飞信,应用数据编写的就是开通飞信这部分,当把开通飞信,取消飞行……等链接起来,就是飞信这个目录的内容。对于整个CO2完整命令而言,我编写的‘飞信’菜单,属于命令类型的那一种?信息下载?列表更新命令?…….(自己编写的是固化在SIM卡中的服务,不再OTA讨论范围内,到这些服务需要更新的时候,使用远程目录管理,来更新目录,或者信息下载,下一些信息等)对于开通飞信而言,有一个唯一AID,例如05C001,05是categoryID也就是‘飞信’这个菜单的ID。C=1100,前两位有意义,第一位代表activeflag,0禁止,1活动;第二位downloadflag,0未下载,1已下载。对于一般的应用,是C代表已下载可以使用,8代表可以使用但未下载,也就是用隐藏目录,用户需要下载之后才能使用,0代表禁止,未下载,比如全球通VIP的菜单,只有你符合条件,移动才让你使用这些菜单。应用所需空间,2byte。,不解释。应用菜单名称,LV结构,L,1byte,V不包括80标识,16byte。英文名称16个字母或汉语8个汉字。应用变量,一般而言,编程之前,都要定义变量,也就是把后面程序中需要使用的变量,在前面定义一下,这里的应用变量就是这个用意。结构为TLV格式,索引号从0x10考0xDF,命令类型为DF比如变量10可定义为04A12125F0,意思是说,10这个变量里存放着12520,以后需要调用12520时,就可以写Var10。OTA空间分配变量数据结构,没用过呢,暂时每次见到都是FA0000.业务数据,即为命令的主体,由若干个process组成,每一个process有一个PID,一般从000000开始,sub_processID就按规定定义为100000,200000……必须和select命令中item的序号相对应,每一个process都会含有若干个command,很多个command连在一起,组成了整个process的内容。TLV格式,T,13sendSMS,21displaytext,23getinput,24selectitem,等等,CO2仅仅是沿用了11,14中的Tag部分,后面的命令格式和11.14有着天壤之别,所以很乱。CO2中还有很多自己的命令,常用的是JMP命令,跳转命令,由此还引出了很多扩展命令,如JMP_ZERO等带有一点判断的命令,由这些命令,就可以组成一个程序,完成运营商的各个无理要求。Command内容一般比11.14简单,没有了那么多的诸如commanddetail,deviceidentity,result等东西,比如在使用MVUI编程的时候,display只需要关注限定符(11.14中的commandqualifier)和要显示的内容(存放在应用变量中,调用。每一个process都是一个TLV格式,Tag就是PID,而L长度在CO2中,只有一个字节,在CO3中,是两个字节,所以编程时,要注意是用的CO2还是CO3,这点很重要,否者编译器会出错。因为长度被限制在一个byte中,所以每一个process的总长度不能超过255个byte,这就限制了process的长度,不能超长,如果遇到服务内容很多,可以将process进行拆分,利用JMP命令跳转解决问题。(说了很多,没啥逻辑,希望以后再看能看懂:P).拆分例子见co2拆分
本文标题:移动业务CO2小结
链接地址:https://www.777doc.com/doc-2150555 .html