GpePhone的架构文档阅读笔记

 

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

 

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

不再描述。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值