Mythroad 联网流程介绍 (TCP)
初始化网络(mr_initNetwork)->创建连接(mr_socket)
->连接服务器(mr_connect)->收发数据(mr_recv, 
  mr_send)
->关闭连接(mr_closeSocket)->断开网络(mr_closeNetwork)
MTK账号资料管理介绍
  在mtk上账号资料分为两类:
A、 GSM账号资料(电路交换方式)
B、 GPRS账号资料
每种账号一般留有10个槽位(槽位个数手机设计公司可以进行调节)在创建socket的时候,有一个参数就是指这个账号资料的序号。目前Mythroad固定使用GPRS账号的最后一个槽位.
国内账号资料管理流程
  在程序初始化网络(即调用mr_initNetwork)的时候,根据不通的拨号方式(CMNET,CMWAP,默认是CMNET)对指定槽位的账号资料进行设置(不论是否已经设置过,都会进行设置)。
优点:用户不需要关心账号资料的设置
缺点:如果是运营商的对联网的账号资料进行修改的话,就会造成无法连接网络的情况出现。
手机wap账号资料的管理
  在wap的菜单中有这样一个菜单:
进入这个菜单后,会把手机上有的账号资料在列表中罗列出来供用户进行选择。
新账号资料管理方案(适用国内和海外)
  流程图
  
    
    新增接口
    
      1、 本地UI设置账号资料接口
2、 设置账号资料接口
3、 读取账号资料接口
4、 设置是否使用当前设置接口(默认是不使用当前设置,设置的结果只对一次VM运行起作用,重新启动VM后自动复位)
    优缺点
    
      优点:
1、 账号资料可以完全保密
2、 实现复杂度低
缺点:
1、 检索的表是预置的无法修改(添加、删除)
2、 当表中没有记录的时候需要用户来设置(增加用户使用的难度)
代码实现
  国内目前的实现:
 国内现在拨号流程基本如下,工具用户的参数,拨CMWAP或者CMNET。
 海外: 
自动模式: 
  根据当前的MCC/MNC查询APN的数据库,如果有匹配项就使用匹配的APN信息进行拨号,如果出海外,你还得带上mr_getAPN接口的实现。 手动模式: 
  通过用户选择特定的数据账号,并将其保存下来。拨号的时候使用这个账号的信息进行拨号。
  MTK上CODE的参考定义
  
    #define 
    MR_GET_DATA_ACCOUNT_REQ          
    1107 //mr_plat
#define 
    MR_GET_DATA_ACCOUNT                   
    1108 //mr_platEx
#define 
    MR_SET_DATA_ACCOUNT                  
    1109 //mr_platEx
#define MR_SET_DATA_ACCOUNT_USE_FLAG 1110 
    //mr_plat
#define MR_SET_DATA_ACCOUNT_MTK_UI     1111 
    // mr_plat
  MR_GET_DATA_ACCOUNT_REQ
  
    功能:发起获取数据账号的请求,在MTK上为异步方式,这个CODE需要配和MR_GET_DATA_ACCOUNT来取的数据账号的值
参数:无
返回:失败MR_FAILED, 
    获取过程中返回MR_WAITING,成功MR_SUCCESS
如果是异步返回的,获取成功后需要通知虚拟机,如下:
mr_event(MR_DATA_ACCOUNT_EVENT, 
    MR_DATA_ACCOUNT_OP_GET, ret);
    下面是2个枚举值在的定义,第3个参数 MR_SUCCESS 表示成功,MR_FAILED表示失败
    enum {
   
    MR_KEY_PRESS,             
    /*0*/
   
    MR_KEY_RELEASE,         
    /*1*/
   
    MR_MOUSE_DOWN,        
    /*2*/
   
    MR_MOUSE_UP,              
    /*3*/
   
    MR_MENU_SELECT,        
    /*4*/
   
    MR_MENU_RETURN,        
    /*5*/
   MR_DIALOG_EVENT,       
    /*6*/
   MR_SMS_INDICATION,   /*7*/
   
    MR_EVENT_EXIT,           
    /*8*/
   
    MR_SMS_RESULT,          
    /*9*/
   MR_LOCALUI_EVENT,    
    /*10*/
   
    MR_OSD_EVENT,            
    /*11*/
   
    MR_MOUSE_MOVE,          
    /*12*/
   
    MR_ERROR_EVENT,         
    /*13执行异常通过这个事件来通知*/  
   MR_PHB_EVENT,
   
    MR_SMS_OP_EVENT,
   MR_SMS_GET_SC,
   
    MR_DATA_ACCOUNT_EVENT,
   MR_MOTION_EVENT,
};
    enum
{
 MR_DATA_ACCOUNT_OP_GET,
 MR_DATA_ACCOUNT_OP_SET,
};
  MR_GET_DATA_ACCOUNT
  
    功能:返回由MR_GET_DATA_ACCOUNT_REQ发起获取的数据账号值
参数通过: output, 
    output_len参数返回类型为T_DSM_DATA_ACCOUNT 
    的数据账号(这个结构的内存为移植层的全局数据,不需要应用层管理)
返回:MR_SUCCESS 表示成功,MR_FAILED表示失败
    
typedef struct
{
    uint8 
    authentication_type;
    uint8 
    user_name[32];
    uint8 
    password[32];
    uint8 dns[4];
    
    uint8 apn[100];
}T_DSM_DATA_ACCOUNT;
  MR_SET_DATA_ACCOUNT
  
    功能:设置数据账号
参数:input, input_len 
    为T_DSM_DATA_ACCOUNT结构类型的数据
返回:MR_SUCCESS 
    成功,MR_FAILED失败,MR_WAITING异步过程通过后续事件通知应用mr_event(MR_DATA_ACCOUNT_EVENT,MR_DATA_ACCOUNT_OP_SET,MR_FAILED);
    前面两个参数参考MR_GET_DATA_ACCOUNT_REQ节的定义,第三个参数MR_SUCCESS表示成功,MR_FAILED表示失败。
  MR_SET_DATA_ACCOUNT_USE_FLAG
  
    功能:启用设置的数据账号
参数:0 
    表示使用原先的拨号流程,1,表示使用设置的数据账号
返回:成功MR_SUCCESS, 
  失败MR_FAILED
  MR_SET_DATA_ACCOUNT_MTK_UI
  
    功能:通过启用本地的界面显示全部可选的系统数据账号让用户选择,用户选择后,将选择的账号信息,保存到我们指定的数据账号中。
参数:无
返回:MR_SUCCESS,MR_FAILED
Copyright ?2005-20010 SKY-MOBI