本文代码基于Android 9.0

Telephony概述

Android系统是主流的手机操作系统,手机在人们生活中的的存在最不可忽视的功能就是通信,Android系统中的的Telephony为此功能的核心模块,Telephony主要提供了语音,短信,数据链接,SIM卡管理,电话簿等功能

Telephony架构由上到下可分为4层:

应用层(Application)

面向用户的应用层,依赖于应用框架层,通过访问Telephony应用框架层的业务模块来呈现给用户具体的功能,主要包括Phone、Contacts、SMS等应用,Phone比较特殊,系统启动时就被运行起来了,且Phone启动时会创建Telephony框架层,并与之运行在同一个进程中

应用框架层(Framework)

Telephony应用框架层主要包括RILJ、Service、业务功能模块三个部分构成,提供了电话,短信,联系人等所需的所有功能

代码路径是:/frameworks/base/telephony

android.telephony:外部应用可访问的Phone模块

com.android.internal.telephony:Phone应用和框架内部使用的Phone模块

1.RILJ

/frameworks/opt/telephony/src/java/com/android/internal/telephony/RIL.java

RIL.java是Telephony和本地RIL的通信接口,通过Socket(rild)完成电话服务命令的收发

2.Service

Telephony基于IBinder提供了各种功能的Service,以便于业务功能模块的实现

3.业务功能模块

Telephony业务功能模块主要包括语音、短信、ICC 卡、网络服务以及数据连接等,这些功能模块是Android系统通话功能的核心和基础注:整个Framework层的Telephony框架运行在一个叫做Phone(com.android.phone)的进程中。而这个进程是在packages\services\Telephony模块中被创建的

本地RIL层(RIL)

RIL(Radio Interface Layer)是Telephony框架层与Modem之间的接口层(属于HAL层),RIL将Modem提供的各种服务进行了抽象,以提供给Framework层统一的接口

RIL架构

1.RIL抽象层

实现RIL层框架,包括RILD守护进程和RIL库,定义了其与Framework层、Vendor RIL之间的接口

2.RIL实现层

基于不同Modem厂商的RIL功能实现(Vendor RIL),其主要功能是接受 RIL 层的主动 Request,转发给 Modem,同时接受 Modem 返回的请求 Response 和主动上报事件,上报给 RIL 层

RILD

RILD是一个可执行程序,作为守护进程运行在系统中,进程内配合RIL

Lib和Vendor RIL实现了RIL的所有功能,它通过Socket与应用框架层进行通信,守护进程内部会初始化Vendor

RIL,同时管理所有的电话相关的请求、主动上报、请求 Response 等事件,其主要功能如下:

1.Event 处理框架(通过 Select 机制实现)

2.请求、数据下发 (将 RILJ 通过 Socket 传过来的数据解成 C 语言数据结构,然后和请求下发给 Vendor RIL 处理)

3.Response、数据上报(将 Vendor RIL 上报的请求 Response 和主动上报事件打包通过 Socket 转发给 RILJ 层)注:RIL和Modem之间交互,大部分厂商采用AT命令交互,也有其他的交互方式,例如高通使用了ONCRPC、QMI 接口

驱动层(Modem)

RIL 驱动用于实现电话功能,主要硬件是通信模块(Modem),Modem 通过与通信网络进行沟通,传输语音及数据,完成呼叫、短信等相关电话功能。

目前的智能机在硬件上多采用双 cpu 的架构,一个是基带处理器,主要处理数字信号、语音信号的编码解码以及通信3协议,基带处理器、射频和其它外围芯片作为一个 Modem 模块,提供 AT 命令接口。

另一个是应用处理器,运行操作系统和各种应用程序。对于目前大部分的独立通信模块而言,无论是 2G 还是 3G 都已经非常成熟,模块化相当完善,硬件接口非常简单,也有着相对统一的软件接口。

一般 Modem 模块装上 SIM 卡,直接上电即可工作,自动完成初始的找网、网络注册等工作,完成之后即可打电话、发短信等

总结

通过这篇文章介绍,可以了解整个Telephony的分层架构,以此为基础可划分Telephony相关的各个主线,进行各个击破

android modem架构,Telephony解析之整体架构简介相关推荐

  1. [跟我学中小企业架构部署]之一:整体架构设计

    环境定义: CentOS 5.4 64-bit 服务器8台 定义10.0.0.0/24为公网 10.0.10.0/24为内网 各服务器的作用: LB1: Hostname:lb1 ech0: 10.0 ...

  2. linux文件系统的总体架构,Linux NFS的整体架构与核心代码解析

    前面文章我们从应用层面对NFS进行了介绍,接下来的文章我们将进入实现层面.本文首先从整体上对Linux的NFS软件架构进行介绍,然后介绍代码与实际业务逻辑介绍一下NFS的处理流程. NFS文件系统的架 ...

  3. 【架构模式】程序整体架构分析

    Title: 程序整体架构分析 Date: 2020-9-18 Tags: 架构 设计模式 程序整体架构分析 在做软件架构设计时,根据不同的抽象层次可分为三种不同层次的模式: 架构模式(Archite ...

  4. kotlin发音!这份字节跳动历年校招Android面试真题解析,附架构师必备技术详解

    前言 从2010年开始Android市场开始需要大量的Android开发人员,招聘市场上也开始大量招Android开发人员,大量java开发者开始学习Android开发,招聘市场面试要求上只要有一定j ...

  5. Android R WindowManagerService模块(1) WMS整体架构及启动过程

    上图中包含了WMS中的所有容器,各个子容器含义如下: ConfigurationContainer:最顶层容器,定义了多个Configuration对象,以及提供了用来组织各容器层级的公共逻辑: Wi ...

  6. Android车载学习笔记1——车载整体系统简介

    一.汽车操作系统 汽车操作系统包括安全车载操作系统.智能驾驶操作系统和智能座舱操作系统. 1. 安全车载操作系统 安全车载操作系统主要面向经典车辆控制领域,如动力系统.底盘系统和车身系统等,该类操作系 ...

  7. tomcat中间件的默认端口号_死磕Tomcat系列(1)——整体架构

    点击上方"Java技术前线",选择"置顶或者星标" 与你一起成长 在许多的高端开发的岗位中都会或多或少有要求面试人员要研究过一些常用中间件源码.这是因为一切的秘 ...

  8. 海思3559A sample的整体架构

    sample的整体架构 1.sample的整体架构: sample中有很多个例程,所以有很多个main函数,common是通用性的主题函数,我们分析的是sample_venc 2.基本的架构是:ven ...

  9. Google整体架构猜想

    按:此为客座博文系列.投稿人吴朱华曾在IBM中国研究院从事与云计算相关的研究,现在正致力于研究云计算技术. 本文是基于现有的公开资料和个人的经验来对Google的整体架构进行总结和猜想. 在软件工程界 ...

最新文章

  1. Cross Entropy梯度分布拉平
  2. 9行Python代码搭建神经网络
  3. 佳能单反相机二次开发包介绍_家用单反相机什么牌子好
  4. 院士拿布袋领奖归来,朋友圈刷屏了
  5. 关于JS括号匹配的面试题
  6. 详解MAC硬盘中各个文件夹
  7. 机器学习实战 | Python机器学习算法应用实践
  8. bios 微星click_微星发表全新搭载图形化『Click BIOS』主机板 采用最新UEFI架构 迎接全图形化BIOS调教新时代...
  9. 计算机保存的快捷方式,保存快捷键ctrl加什么
  10. 世界首富马斯克突然吟了一首中文诗
  11. 活动回顾 | Mini XMan线上快闪活动圆满结束!
  12. 微信程序开发系列教程(二)微信订阅号+人工智能问答服务
  13. python 重定向 ctf_CTF web题型解题技巧 第四课 web总结
  14. ahk捕捉连续按esc键
  15. GPG(GnuPG)的安装和使用
  16. 数据结构--环形队列
  17. 【学习mysql】ubuntu20.04下彻底删除mysql8.0
  18. mysql中limit用法_MYSQL中LIMIT用法?
  19. 国科大学习资料--最优化计算方法(王晓)-期末考试真题3
  20. 2022年终总结--你好2023

热门文章

  1. 三星手机丢失了数据怎么找回
  2. 深度学习在音乐信息检索(MIR)方向的应用介绍(下)
  3. [Erlang]好用的NIF外部库
  4. 【7-2 杨辉三角】求杨辉三角的前n行数据。 输入格式: 输入n(n<10)值。 输出格式: 输出杨辉三角的前n行数据,每个数据占4列。
  5. SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎 .
  6. 世界上第一台电子计算机很大 质量为35吨,世界上第一台电子计算机很大.质量为35吨.比一头大象体重的6倍还多0.2吨.一头大象重多少吨? 题目和参考答案——青夏教育精英家教网——...
  7. Centos7安装wps办公软件
  8. MES制造执行系统工艺管理介绍
  9. 苹果手表|apple watch series 6健康功能提升
  10. java为什么需要网络编程,2022最新