最近在做一个socket编程的模块,本来以为从展讯平台把相关的东西移植到MTK10A上就可以了,但是移植过程中碰到了许多的问题,导致了陆陆续续将近弄了3个月,才将这个下载的模块,改的相对稳定了点。虽然现在还在加断点续传、下载管理、文件上传的功能,但应该已经算后一阶段的事了,故先写个总结,总结这段时间里,碰到的问题,以及解决的方法。
我还是根据我这个socket模块的流程来讲这些吧。
1.建立相关的数据账号
在MTK中,要想建立相关的socket连接进行收发数据操作,在这之前必须建立相应的数据账号。在MODIS中,你可以不配置什么数据账号,直接调用soc_create()时最后一个参数填0,就可以进行相应的socket操作。但是放到手机真机上,这就不行了,数据账号乱来,你可以过了soc_create(),soc_setsockopt(),但是后续的soc_gethostbyname()或者soc_connect()就会出现返回值-2,然后一直等不到相对应的notify函数。
在10A之前的MTK版本,数据账号可以直接10后者14然后调用cbm_encode_data_account_id(),就可以得到了分别对应的是cmwap和cmnet,在10A之后的版本,数据账号data_account有较大的改动,我现在调用的是以下的2个接口函数,实现的cmwap和cmnet。
cbm_register_app_id_with_app_info()、cbm_set_app_id().
kal_uint8 app_id = 0;
kal_uint32 acct_id = 0;
cbm_app_info_struct info;
info.app_str_id = EM_SOCKET_TEXT;
info.app_icon_id = EM_SOCKET_ICON;
info.app_type = 0;
cbm_register_app_id_with_app_info(&