GpePhone的架构文档阅读笔记

来源:互联网 发布:网络收纳管理咨询机构 编辑:程序博客网 时间:2024/05/18 02:22

 

GpePhone是一个开源的项目,是基于LiPS(该组织已经并入LIMO)的定义linux智能手机规范的代码实现,目的是提供一个基本完整的智能手机软件。(原文是:based on part of the LiPS implementationcode and GPE project, aiming at providing an almost complete softwarestack for mobile phones, especially smart phones.

 

http://gpephone.linuxtogo.org/doc/components/gpearch.php

 

Gpe的架构图

 

 

一:分层简介

1、应用:
应用为最终用户使用图形操作界面的接口。应用直接使用UI Service和Enabler来实现,应用间使用IPC bus
system来通信,互相提供服务,例如,VoiceCall应用需要向地址本请求查找联系人的服务。GpePhone的UI Service指的是Gtk+。

2、Enablers:
Enablers Services为应用提供粗粒度封装的功能借口

3、IPC bus system:
进程间通信的框架,GpePhone里面用的就是Dbus.

4、Services:

用以实现Enabler的协议和技术的集合。

 

5、Daemons:
后台运行的服务进程

 

6、硬件部分:

这里需要着重提一下:Modem

GSM或者其他3g组件的驱动接口,控制语音和数据“呼叫”,同时监听外部的异步的来自运营商网络的事件


二:ENABLER简介

1、Address book enabler
提供API对联系人进行增删改查

兼容下面三种地址本:Flash,Sim card,和network地址本,使三种地址本使用统一的API进行访问。

a:Flash上的地址本直接操作

b:对保存在Sim Card上的地址本,Address book enabler不直接从Sim card读取数据,而是从一个内存(RAM中 表现为/tmp 目录)镜像数据库读取数据。phone server 启动的时候,创建镜像数据库,并把Sim card地址本读入到镜像数据库。随后,phone server负责同步该数据库的数据。设备关闭电源后,RAM中的镜像数据库将不存在。
 

c:对网络地址本(Network Address Book/NAB),一个NAB的镜像数据库保存在设备的flash中。NAB与本地数据库的数据同步使用了 message & presence enabler.

2、Messaging enabler

Messaging Eanbler使用统一的接口去发送、接收、管理各种消息,包括SMS、EMAIL、MMS、EMS、Voice mail。

每个消息有唯一的一个标识符,一个消息头,一个消息体。每个消息存储在一个消息仓库,有一个索引目录,
通过遍历索引,消息可以被查询、增删改。

创建了一系列的传输通道,通过传输通道的概念,各种消息的底层传输差异被隐藏,应用使用通用的方式
来发送消息。

当messaging enabler从传输通道上接受了消息,messaging enabler会通过改变INBOX目录的状态来通知上层的应用,消息如何接收到INBOX目录的细节被屏蔽掉。

当前只有SMS使用了messaging enabler,未来EMAIL应用也会才有messaging enabler。因此,当前的只有sms通道一种,通道本应调用TAPI Service来发送SMS,但是,由于历史原因,当前的通道直接与IPC BUS System与phone server打交道,这也是未来需要修改的。

3、Voice Call enabler
Voice Call enabler为应用提供拨号、接收、管理语音电话的功能

Voice Call enabler支持两种承载:电路交换和ip,支持H323和SIP,在这些情况下,提供给上层应用的
API是一致的。

当前的Voice Call enabler支持两种底层实现:一种是GSM TAPI(使用ATCommand),一种是VOIP/SIP(使用开源的linphone)

 

4、Instant messaging & Presence enabler
Instant messaging & Presence enabler 为应用提供与远端的用户交换即时消息和呈现信息的功能,并
管理用户自身的呈现信息。
提供API用以构建信息、发送和接收信息。
提供API用以发布用户的呈现信息、对他人订阅请求的确认,以及获取/订阅他人的呈现信息。
Instant messaging & Presence enabler不直接与network server直接通信,后台有一个IM Proxy负责与network server 通信。Instant messaging & Presence enabler与IM Proxy通过 IPC bus system通信。通过这种设计,使用这个enabler的多个客户端应用能同时使用同一个帐号登陆。

 

其他非通信的enabler这里不提及。

 

三:Service简介

1、TAPI
TAPI服务提供API,API封装了Modem的电话功能:语音呼叫、语音补充业务、SMS、modem的地址本等

TAPI服务通过IPC bus system与phone server通信实现电话的各种功能

 

2、VoIP/SIP协议栈

使用linphone 开源项目

 

3、DB

使用SQLite

 

四:Daemons简介

1、Multiplexer daemon

Multiplexer daemon 保持对modem的排他性访问,Multiplexer daemon基于开源项目GSMMUX和实现了GSM07.10的标准。通过这个daemon,一个modem创建了两条虚拟通道,一个虚拟通道给AT Commands占用,一个虚拟通道给数据包占用。Phone server与AT Command通信用一实现电话的相关服务。PPPD与数据通道通信用于提供GPRS的功能。如果modem不支持多工(multiplexer),这个daemon将被禁用,phone server则直接与moderm通信

2、Phone Server

Phone Server 排他性访问Multiplexer daemon的AT Command通道,或者排他性访问modem(此时modem不支持multiplexer)

应用请求电话服务的时候,请求被传到TAPI,TAPI通过IPC bus system传递到phone server。phone
server将请求翻译成相关的AT Command,并发送到modem的虚拟通道。但phone server收到来自AT Command 虚拟通道的消息,例如有一个来电,则将消息通过IPC bus system发送回给应用。

 

3、Sound server
Sound server维持对语音芯片的排他性访问,应用,例如是多媒体播放、语音、等等不能直接控制
语音设备,必须通过sound server来请求语音设备播放声音。

如果多个应用同时请求播放语音,sound server负责混音。

 

4、IMProxy

不再描述。


原创粉丝点击