GpePhone是一个开源的项目,是基于LiPS(该组织已经并入LIMO)的定义linux智能手机规范的代码实现,目的是提供一个基本完整的智能手机软件。(原文是:based on part of the LiPS implementation code and GPE project, aiming at providing an almost complete software stack for mobile phones, especially smart phones.)
http://gpephone.linuxtogo.org/doc/components/gpearch.php
一:分层简介
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
不再描述。