Chinaunix首页 | 论坛 | 博客
  • 博客访问: 183211
  • 博文数量: 96
  • 博客积分: 4060
  • 博客等级: 上校
  • 技术积分: 1040
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-12 13:13
文章分类

全部博文(96)

文章存档

2011年(3)

2010年(76)

2009年(17)

我的朋友

分类: LINUX

2010-12-30 14:57:48


2         基本工作原理
2.1        代码框架
基本上来说,openobex实现了obex protocol中相关的API接口,实现了对Connect / Disconnect / Get / Put / Setpath / Abort 等command的支持。

 

而在obexd的代码中,则实现了对FTP、PBAP、OPP等profile的支持(包括Server端的代码和Client端的代码)

2.2        大致工作流程
因为基于OBEX的协议,基本上都会包括Server和Client两端,obexd中实现的FTP和PBAP也不例外。Obexd和上层应用的交互是通过DBUS接口来实现的。详细的dbus接口API定义可以看源码包中doc目录下的相关文档

2.2.1          Server端启动流程
Obexd 启动后,首先会初始化Manager模块,在dbus的org.openobex service中注册一个org.openobex.Manager 接口,主要用来注册Agent代理,和发送session、transfer等数据传输相关操作的signal。

 

在加载Plugin后,obexd会根据启动命令行传入的参数,相应的加载FTP、OPP、PBAP等相关Profile的server端代码,并在SDP数据库中添加相关server的记录,便于客户端查找相关服务。

 

对 于PBAP来说,为了能够支持从不同的数据来源获取电话号码簿信息,例如不同的电话协议栈或者其它联系人地址簿来源(例如从MAIL相关应用的地址簿数据 库中),Server端的实现是分成common的接口框架和具体的Plugin来实现的。Common的接口框架负责和obex交互,应答从 client端发送过来的请求,并调用具体的Plugin获取应答所需的联系人地址簿信息

 

对于FTP来说,上层应用还需要通过Manager接口在DBUS上注册一个Agent对象用来获取和处理权限和文件路径等相关信息。在test目录下可以找到一个python脚本的示例程序:simple-agent

2.2.2          Client端调用流程
在Client端,obex-client同样是作为后台守护进程来实现的,启动后,会在dbus的org.openobex.client service 中注册一个org.openobex.Client接口,用来接收上层应用发送的具体操作请求。

 

对 于FTP和PBAP来说,应用程序首先都要先通过org.openobex.Client接口创建一个数据传输的Session并在DBUS上注册 Session相关接口和函数。根据创建session时传递的参数,obex-client会加载FTP或PBAP的相关代码,在DBUS中注册FTP 或PBAP相关的具体接口函数。应用程序进一步调用这些接口上的相关函数实现所需的操作。

 

FTP和PBAP client端同样可以通过Session的接口,注册一个Agent(不是必需的)用来显示数据传输的进程,或者中断数据传输。


 
阅读(2846) | 评论(1) | 转发(0) |
0

上一篇:serial port programming

下一篇:call_usermodehelper

给主人留下些什么吧!~~

chinaunix网友2011-01-04 08:54:45

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com