- 浏览: 163927 次
- 性别:
- 来自: 马赛大回旋
文章分类
最新评论
-
ihopethatwell:
楼主请教一下,如果我添加packages/MSystemUI/ ...
Framework添加AIDL文件 -
285985787:
太感谢了 哈哈
eclipse查看android源码工程(附件) -
bluishoul:
应该比较大吧 还是自己编译吧 但是我的ubuntu是装的wub ...
Android 4.0 编译全程... -
地球小野花:
gzfreeman 写道请问用了多长时间?几个小时。具体没计算 ...
Android 4.0 编译全程... -
地球小野花:
bluishoul 写道求镜像 呵呵 bluishoul@gm ...
Android 4.0 编译全程...
Android RIL CDMA分支总结
1. CDMA分支代码结构
代码结构如下:
ril
|-- include
| `-- telephony
| |-- ril.h
| `-- ril_cdma_sms.h
|-- libril
| |-- ril.cpp
| |-- ril_commands.h
| |-- ril_event.cpp
| |-- ril_event.h
| `-- ril_unsol_commands.h
|-- reference-cdma-sms
| |-- reference-cdma-sms.c
| `-- reference-cdma-sms.h
|-- reference-ril
| |-- at_tok.c
| |-- at_tok.h
| |-- atchannel.c
| |-- atchannel.h
| |-- misc.c
| |-- misc.h
| `-- reference-ril.c
`-- rild
|-- radiooptions.c
`-- rild.c
reference-ril->libference-ril.so 主要负责modem通信(包含通话、上网、短信以及modem初始化功能等等)
rild -> rild rild守护进程,是整个android ril层的入口点。
libril -> libril.so rild的共享库,驻留在rild中,完成和上层通信的工作,接受ril请求并传递给libreference-ril.so来通知modem,与此同时将其反馈回传给调用进程。
radiooptions -> radiooptions 无线通信测试程序。
reference-cdma-sms -> cdma模组特殊定义用于cdma(evdo)通信使用,主要定义短信接口(实现短息的编码解码工作)。
2.AT从界面到模组流程
通话外例:
按通话图标->>
DialtactsActivity(4个Tab 分别由TwelveKeyDialer<拨号>、RecentCallsListActivity<最近联系人>,两个activity-alias DialtactsContactsEntryActivity<联系人>和DialtactsFavoritesEntryActivity<收藏>)
输入拨号号码
TwelveKeyDialer
mehod: Onclick
placecall()
Intent intent =new Intent(Intent.ACTION_CALL_PRIVILEGED,
Uri.fromParts("tel",number,null));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
启动拨号->>>>>>
intert.ACTION_CALL_PRIVILEGED实际字符串为android.intent.action.CALL_PRIVILEGED,通过查找知道了packegs/phone
下面的androidmanifest.xml中PrivilegedOutgoingCallBroadcaster activity-alias设置了intent-filter,所以需要找到其targetactivity为OutgoingCallBroadcaster。所以进入OutgoingCallBroadcaster的
method:onCreate()
//如果为紧急号码马上启动intent.setClass(this, InCallScreen.class); startActivity(intent);
Intent broadcastIntent = new Intent(Intent.ACTION_NEW_OUTGOING_CALL);
if (number != null) broadcastIntent.putExtra(Intent.EXTRA_PHONE_NUMBER, number);
broadcastIntent.putExtra(EXTRA_ALREADY_CALLED, callNow);
broadcastIntent.putExtra(EXTRA_ORIGINAL_URI, intent.getData().toString());
if (LOGV) Log.v(TAG, "Broadcasting intent " + broadcastIntent + ".");
sendOrderedBroadcast(broadcastIntent, PERMISSION, null, null,
Activity.RESULT_OK, number, null);
Intent.ACTION_NEW_OUTGOING_CALL实际字符串为android.intent.action.NEW_OUTGOING_CALL,通过查找知道了packegs/phone下面的androidmanifest.xml中OutgoingCallReceiver Receiver接收此intent消息。找到OutgoingCallReceiver,执行
mothod:onReceive()函数
Intent newIntent = new Intent(Intent.ACTION_CALL, uri);
newIntent.putExtra(Intent.EXTRA_PHONE_NUMBER, number);
newIntent.setClass(context, InCallScreen.class);
newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
《整个流程》
mothod:onCreate(第一次)/onNewIntent(非第一次)
internalResolveIntent
placeCall(intent);
PhoneUtils.placeCall(mPhone, number, intent.getData());
phone.dial(number);
mCT.dial(newDialString);
dial(dialString, CommandsInterface.CLIR_DEFAULT);
cm.dial(pendingMO.address, clirMode, obtainCompleteMessage());//obtainCompleteMessage(EVENT_OPERATION_COMPLETE);
send(rr);
msg = mSender.obtainMessage(EVENT_SEND, rr);
acquireWakeLock();
msg.sendToTarget();
RILSender.handleMessage() //已经到系统java ril<gsm &cdma>处理部分
case EVENT_SEND:
...
s.getOutputStream().write(dataLength);
s.getOutputStream().write(data);//从这里流程跑到下面ril.cpp中监听部份
RIL层
rild守护进程 rild->main=>RIL_startEventLoop
//建立事件循环线程
ret = pthread_create(&s_tid_dispatch, &attr, eventLoop, NULL);
//注册进程唤醒事件回调
ril_event_set (&s_wakeupfd_event, s_fdWakeupRead, true,
processWakeupCallback, NULL);
rilEventAddWakeup (&s_wakeupfd_event);
//建立事件循环
ril_event_loop
for (;;) {
...
n = select(nfds, &rfds, NULL, NULL, ptv);
// Check for timeouts
processTimeouts();
// Check for read-ready
processReadReadies(&rfds, n);
// Fire away
firePending();
}
funcs = rilInit(&s_rilEnv, argc, rilArgv);//实际是通过动态加载动态库的方式执行reference-ril.c中的RIL_Init
//单独启动一个线程读取串口数据
ret = pthread_create(&s_tid_mainloop, &attr, mainLoop, NULL);
fd = open (s_device_path, O_RDWR);//打开虚拟模组
ret = at_open(fd, onUnsolicited); //设置模组主动上报
ret = pthread_create(&s_tid_reader, &attr, readerLoop, &attr);
RIL_requestTimedCallback(initializeCallback, NULL, &TIMEVAL_0);
reference-ril.so 处理方式(rild动态加载libreference-ril.so库)
(处理模型)
>static void request(x x x)
switch(x) //判断请求类型
request_dail //电话请求
function() //请求处理函数AT指令
设置事件回报//
参考文献:
http://blog.csdn.net/basonjiang_sz/archive/2011/03/17/6255881.aspx
Android GSM驱动模块详细分析(作者:熊猫哥哥)
发表评论
-
1123456
2012-02-08 11:41 851 -
Android 4.0 编译全程...
2011-11-18 13:35 9742进过几天的等待,几经波折终于把android 4.0 的代码下 ... -
Android 4.0 亮点之WI-FI Direct
2011-11-15 20:01 8797Wi-Fi Direct 来自官网: Android ... -
Android 4.0 源码下载中....
2011-11-15 11:02 8530经过3.0+ 版本不开源,终于等到4.0的开源,也可以看看4. ... -
Android APN的设置问题
2011-03-18 13:08 2392Android APN的设置问题 原创作品,允许转 ... -
Android应用程序获得root权限
2011-03-16 11:17 3941Android应用程序获得root权限 原文:(htt ... -
eclipse查看android源码工程(附件)
2011-03-11 13:47 3928eclipse查看android源码工程(附件) 网上 ... -
快速体验Android 2.3
2010-12-07 10:21 1602由于Google目前只是开放了Android 2.3的源 ... -
Google 正式发布Android 2.3 -姜饼来了
2010-12-07 09:58 970最值得期待的视频通话功能。动起来吧~ -
Android Launcher解读之一AndroidManifest.xml
2010-11-29 16:50 0AndroidManifest.xml是何物?它在And ... -
android linux 基础知识总结
2010-09-06 11:03 0android linux 基础知识总结 (很好,很强大 ... -
Android源码下“系统级开发”——Settings例子
2010-09-04 13:50 9433在Android开发过程中,通常会遇到有很多隐藏的 ... -
PC机上体验Android x86操作系统
2010-09-03 13:15 7829Android X86是一款支持x86硬件平台上 ... -
透过HAL(硬件抽象层)看顶层API是如何访问硬件
2010-08-07 15:01 15034文章导读:HAL硬件抽象层的实现及 ... -
Android应用程式编译成系统程序
2010-08-05 22:22 7040Android应用程式编译成系统程序简介 简 ... -
android.编译程序的模板.android.mk.txt
2010-08-03 00:31 1586# 编译动态库的模板: #Test S ... -
android.源码启动模拟器
2010-08-02 13:47 6422Android.源码中启动模 ... -
Android源码 Bluetooth设置的类说明
2010-08-01 23:57 6118Android应用程序(Setting)中有关蓝牙设定部 ... -
在Linux下Android编译中修改Java的环境
2010-07-31 16:44 2735Android 在编译过程中需要用到Java Versi ...
相关推荐
提供的“Android-RIL详细总结及流程图.pdf”文件可能包含了RIL工作流程的可视化表示,对于理解RIL如何在不同场景下操作非常有帮助。通常,流程图会详细展示从请求发出到响应返回的各个步骤,以及中间涉及到的关键...
1. Android RIL(Radio Interface Layer):它是Android操作系统中的一个关键组件,负责与无线调制解调器之间的通信。RIL层是系统上层应用程序与下层硬件之间的桥梁,处理电话、数据连接、短信服务等基本通信功能。 ...
总结起来,这个压缩包提供的资源对那些需要在Android平台上使用移远EC20 4G模块的开发者非常有价值。通过学习RIL源码,理解和应用AT命令手册,参照硬件设计手册以及使用预编译的RIL库,开发人员能够有效地将4G通信...
### Android RIL框架详解 #### 一、概览 Android RIL(Radio Interface Layer)框架是一种重要的通信组件,它提供了一个软件层,用于抽象出无线硬件设备与电话服务之间的交互。RIL允许开发者通过标准接口控制基带...
本文档对Android RIL部分的内容进行了介绍,其重点放在了Android RIL的原生代码部分。...1.Android RIL框架介绍 2.Android RIL与WindowsMobile RIL 3.Android RIL porting 4.Android RIL的java框架
### Android RIL 简介 #### 一、RIL 的定义与作用 RIL (Radio Interface Layer),即无线接口层,在Android系统中扮演着重要的角色。它位于上层应用程序和底层硬件调制解调器之间,充当两者之间的桥梁。RIL的主要...
1. Android RIL层介绍 Android RIL层是连接无线基带Modem与电话应用之间的抽象层,处理电话应用的各种场景,如双SIM卡、电话、短信、彩信、PS DATA业务等。它在Android系统中位于硬件抽象层,作为一个独立的守护进程...
《Quectel Android RIL驱动V3.6.22详解》 在移动通信领域,设备与操作系统之间的通信至关重要,而Quectel Android RIL(Radio Interface Layer)驱动就是这样的关键组件。它作为Android系统与无线模块之间的桥梁,...
总结,"Quectel Android RIL Driver"为使用Quectel EC20和EC200模块的Android设备提供了可靠的网络连接支持。通过阅读用户指南和分析源代码,开发者和工程师可以深入了解RIL的工作机制,实现更高效、更稳定的通信...
### Android RIL 实现原理详解 #### 一、RIL(Radio Interface Layer)架构概述 RIL,即射频接口层(Radio Interface Layer),是Android系统中负责与基带处理器进行通信的重要组件。它主要作用于移动通信网络,...
《Android RIL:深入理解与应用》 在Android操作系统中,Radio Interface Layer(RIL)是连接硬件调制解调器(Modem)与上层应用程序框架的关键组件,它负责处理移动网络通信的各种任务,包括语音通话、数据传输、...
【Android RIL 介绍】 Android Radio Interface Layer (RIL) 是连接操作系统与硬件通信的关键组件,特别是涉及到无线通信功能如语音通话、数据连接、短信和SIM卡管理等。RIL 在硬件架构上扮演了桥梁的角色,它使得...
RIL使得Android系统能够与各种不同的无线电硬件通信,从而支持各种蜂窝网络技术,如GSM、CDMA等。本文档将详细介绍Android RIL的结构、移植过程以及相关的核心概念。 ##### 1.1 Android RIL 概况 Android RIL位于...
Android HAL层实现与RIL的通信 在Android系统中,HAL(Hardware Abstraction Layer,硬件抽象层)层是Android与硬件之间的接口层,它提供了对硬件的访问和控制。RIL(Radio Interface Layer,射频接口层)是Android...
**Android 源码 RIL 层详解** 在Android操作系统中,Radio Interface Layer(RIL)是连接硬件射频模块与上层软件架构的关键层,它负责管理移动通信功能,如语音通话、数据连接、短信服务等。RIL作为硬件抽象层,...
在Android操作系统中,RIL(Radio Interface Layer)是通信子系统的关键组成部分,它负责与手机的基带处理器或调制解调器进行交互,处理所有无线网络相关的功能,包括通话、数据连接、短信等。"reference-ril.gz"是...
1. Android RIL框架介绍 Android RIL主要由两部分组成:rild(Radio Interface Daemon)和Vendor RIL。rild是运行在内核空间的一个守护进程,通过Unix sockets与应用程序框架进行通信,处理来自上层的请求并转发给...
### Android RIL结构分析 #### 一、概览 Android RIL(Radio Interface Layer)是Android系统中的一个关键组件,用于实现与手机基带处理器之间的通信。它在Android的电话功能实现中扮演着核心角色,涉及到电话呼叫...
Android RIL 的架构可以用以下几点来总结: 1. RILJ 负责处理上层应用程序的请求,并将其封装成 RILRequest 对象发送给 RILC。 2. RILC 负责与 MODEM 进行通信,并将 MODEM 的响应封装成 UnSolicited 消息发送给 ...
Android RIL(Radio Interface Layer)是Android操作系统中用于与无线通信模块交互的关键组件。RIL在Android系统架构中扮演着中介的角色,它位于硬件抽象层(HAL)之上,与基带调制解调器(baseband modem)进行通信...