1 / 12
文档名称:

ContactList设计方案.doc

格式:doc   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

ContactList设计方案.doc

上传人:静雨蓝梦 2015/4/7 文件大小:0 KB

下载得到文件列表

ContactList设计方案.doc

文档介绍

文档介绍:ContactList设计方案
· 概述
由于ContactList是Skype上的好友列表,其总共有12种状态,最大容量为300条的数据纪录。
此通信方式分为三个模块,HandSet手机端,BaseSet端还有Skype ATA端。其中ATA通过RJ45从网络上读取数据,而BaseSet与Skype ATA通过串口相连,好友列表通过Skype ATA端下载,再由BaseSet通过串口读取数据,然后由BaseSet通过DECT/WDCT协议传送到HS端,最后在HS端存储和显示。
好友列表在HS端以姓名为顺序的存储在Eeprom中。当手机启动时,会同Baseset端进行一次数据同步工作,完成以后大多数的工作将在Handset端进行。其功能主要概括如下:

· 通信设计
关于通信数据的通用消息格式请参考概要设计。
用户登陆:
1)用户在开机时会有一个登陆过程,当用户上电时不管自动登陆还是手动登陆,都必须有一个SignIn的过程。根据登陆时账号的不同,SignIn又可分为两种模式。请参考如下:
模式一:用户输入姓名和密码,用户为切换后的用户,用户名和以前登陆的老账号不一样。
模式二:老账号登陆。用户无需输入姓名和密码, 或者输入的用户名誉老账号是一样的。
两种模式登陆的消息格式请参看概要设计。
全局变量g_bNeedSendSynReq代表了当用户进入列表时是新账号还是老账号。初始化为0,当每次登陆是如果账号与内存中老账号不同则设为1,否则设为0。
当用户同步查询过程成功后,查询g_bNeedSendSynReq如果为1则向BaseSet发送获取列表请求。否则需要向BaseSet发送获取状态请求。
此时通信过程和数据如下:


2)用户不是第一次登陆时,此时EEPROM中保留有先前的的好友列表,用户的通信过程如下。

1、同步过程
当用户登陆成功以后HandSet需要向BaseSet发同步查询消息。如果失败需要继续查询,如果成功则则根据相应的登陆方式向BaseSet获取好友列表数据。
HandSet与BaseSet同步LOGIN_QUERY_SYNC。


2、Handset向BaseSet获取好友列表数据
当HandSet收到同步查询成功时,则HandSet向BaseSet获取好友列表消息,获取好友列表可以根据SignIn的两种方式分为以下两种情况:
模式一:
当用户用新的账号登陆时,由HandSet向BaseSet主动获取列表数据数据,当取得第一笔的数据时,取一次可以申请几条,然后BaseSet向HandSet发好友列表消息,如此往复知道好友列表全部取完!并存入Eeprom中,并且更新DET表和RAM中的列表数组,
消息格式如下。HSàBS
Exch Type
0x01
Msg Type
0x22
Msg Len
3
Offset
2(byte)
Length
1(byte)
Offset: 表示从开始的第几条。
Length: 表示好友的条数。
BaseSet回传的消息如下:BSàHS
Exch Type
0X10
Msg Type
0X22
Msg Len
22
Offset
2(Byte)
Length
1(Byte)
Name(HashID)
2(Byte)
DispName
15(Byte)
State
1(Byte)
VM
1(Byte)
Offset: 读取的首要记录条数
Length: 读取数据的条数
Name: 用户号码HashID
DispName: 用户显示的姓名
State: 用户显示的当前状态
VM: Voice Mail状态
关于可靠性传输:BaseSet每次根据HandSet所要求的偏移值和长度去向手机端传送数据,HandSet端每次收到一个数据包,则将OffSet+Length并存储到全局变量中,如果超时则不用加,然后每次收数据时,比较该变量值与收到的偏移地址是否相同,如不同,则丢弃!
模式二
当用户用旧的账号登陆时,由于HandSet在本地已经存入了好友列表,所以无需从BaseSet全部下载数据,只需获取当前用户的状态即可。
当HandSet在上电时,如果帐号没变并且属于自动登陆,则HandSet向BaseSet发请求更新消息。消息为如下格式:
过去状态消息格式如下表所述: HSàBS
Exch Type
0x20
Msg Type
*
Msg Len
4
Offset
2(byte)
Length
2(byte)
Offset: 第几包数据的偏移值
Len: 用户请求数据的