- 浏览: 43877 次
- 性别:
- 来自: 北京
文章分类
最新评论
E:\android-source\Android-2.3-Real6410-r1\Android-2.3-Real6410-r1\frameworks\base\telephony\java\com\android\internal\telephony\RIL.java
/* * add for ptt * @see com.tdtech.service.CommandsInterface#closeSocket() */ public void closeSocket(){ try { mSocket.shutdownInput(); mSocket.shutdownOutput(); } catch (IOException ex) { } Log.w(LOG_TAG, "shutdown"); } class RILSender extends Handler implements Runnable { public RILSender(Looper looper) { super(looper); } // Only allocated once byte[] dataLength = new byte[4]; // ***** Runnable implementation public void run() { // setup if needed } // ***** Handler implemementation public void handleMessage(Message msg) { RILRequest rr = (RILRequest) (msg.obj); RILRequest req = null; switch (msg.what) { case EVENT_SEND: /** * mRequestMessagePending++ already happened for every * EVENT_SEND, thus we must make sure mRequestMessagePending-- * happens once and only once */ boolean alreadySubtracted = false; try { LocalSocket s; s = mSocket; if (s == null) { rr.onError(RADIO_NOT_AVAILABLE, null); rr.release(); if (mRequestMessagesPending > 0) mRequestMessagesPending--; alreadySubtracted = true; return; } synchronized (mRequestsList) { mRequestsList.add(rr); mRequestMessagesWaiting++; Log.d(LOG_TAG, "mRequestsList size=" + mRequestsList.size() + " mRequestMessagesWaiting=" + mRequestMessagesWaiting ); } if (mRequestMessagesPending > 0) mRequestMessagesPending--; alreadySubtracted = true; byte[] data; data = rr.mp.marshall(); rr.mp.recycle(); rr.mp = null; if (data.length > RIL_MAX_COMMAND_BYTES) { throw new RuntimeException( "Parcel larger than max bytes allowed! " + data.length); } // parcel length in big endian dataLength[0] = dataLength[1] = 0; dataLength[2] = (byte) ((data.length >> 8) & 0xff); dataLength[3] = (byte) ((data.length) & 0xff); // Log.v(LOG_TAG, "writing packet: " + data.length + // " bytes"); s.getOutputStream().write(dataLength); s.getOutputStream().write(data); } catch (IOException ex) { Log.e(LOG_TAG, "IOException", ex); req = findAndRemoveRequestFromList(rr.mSerial); // make sure this request has not already been handled, // eg, if RILReceiver cleared the list. if (req != null || !alreadySubtracted) { rr.onError(RADIO_NOT_AVAILABLE, null); rr.release(); } } catch (RuntimeException exc) { Log.e(LOG_TAG, "Uncaught exception ", exc); req = findAndRemoveRequestFromList(rr.mSerial); // make sure this request has not already been handled, // eg, if RILReceiver cleared the list. if (req != null || !alreadySubtracted) { rr.onError(GENERIC_FAILURE, null); rr.release(); } } if (!alreadySubtracted && mRequestMessagesPending > 0) { mRequestMessagesPending--; } break;
发表评论
-
模仿QQ好友列表的ExpandableListView实现的效果
2012-06-27 16:53 1478先是在网上找到了一个人的例子,见:http://www.cnb ... -
Phone端加心跳可能会影响写数据操作时间
2012-05-30 18:18 01.调研并确认Phone端加心跳是不是刚性需求; 2. ... -
NPG如何编译
2012-05-29 15:34 0本文介绍了如何通过源码生成NPG包的方法,请参考 1. ... -
PCTool日报
2012-05-21 18:36 0Hi,Dear All: 景山发布的新的PCTo ... -
MeSamrtImageViewActivity
2012-05-18 17:19 0url = "http://10.0.2.2: ... -
public boolean createReflectedImages() 2
2012-05-18 09:39 0LinearGradient shader = new ... -
public boolean createReflectedImages() 1
2012-05-18 09:39 0final int reflectionGap = 4; ... -
main.xml
2012-05-17 18:34 0<?xml version="1.0&q ... -
product_big_pic_gallery.xml
2012-05-17 18:33 0<?xml version="1.0&q ... -
product_big_pic_item.xml
2012-05-17 18:33 0<?xml version="1.0&q ... -
ProductPicShowActivity 2
2012-05-17 18:32 0public class ProductPicAdapt ... -
ProductPicShowActivity 1
2012-05-17 18:32 0public class ProductPicShowA ... -
PicGallery
2012-05-17 18:31 0化解中有 -
MyGallery3
2012-05-17 18:31 0private void transformImageB ... -
MyGallery 2
2012-05-17 18:30 0@Override protected ... -
MyGallery 1
2012-05-17 18:30 0public class MyGallery exten ... -
MainActivit
2012-05-17 18:28 0package com.lzx; import ... -
xzcvxc
2012-05-03 17:42 0xcxd -
beifen
2012-05-03 09:43 0beifen -
Hi Zhixian
2012-03-28 13:25 752登陆方式为: username:TD_ ...
相关推荐
在RIL.java文件中,可能会包含以下关键知识点: 1. **RILRequest类**:该类的设计和实现,可能包括成员变量如请求ID(requestId)、原始数据(data)、请求类型(opCode)以及回调函数(onComplete)。 2. **对象池设计**...
3. **接口定义**:RIL提供了Java和C++的API接口,供上层应用和服务调用。 4. **配置文件**:包含了设备特定的RIL配置,如网络频段、调制解调器命令集等。 5. **测试工具和脚本**:为了调试和验证RIL功能,通常会包含...
在短信流程中,Ril.java的processSolicited()方法会将短信请求传递给CommandsInterface.java的sendSms()方法,该方法会将短信请求传递给BaseCommands.java的sendSms()方法,该方法会将短信请求传递给PhoneBase.java...
"META-INF"是Java和Android应用的标准部分,通常包含关于应用程序或库的元数据,如数字签名信息,用于验证文件的完整性和来源。在更新库文件时,这些信息用于确保安装的文件未被篡改,并且来自可信的源。 "system...
- **源代码**:RIL的Java源码,用于处理上层请求和事件,以及C/C++源码,用于与基带处理器交互。 - **配置文件**:针对特定Quectel模块的配置文件,定义了RIL如何与模块通信的细节。 - **库文件**:编译后的动态链接...
- **启动eventLoop线程**:`RIL_startEventLoop`开启一个事件循环线程,用于处理来自`ril.java`的命令和第三方库的上报信息。 - **解析函数指针**:通过`dlsym`获取动态库中`reference-ril.c`(或`qcril.c`)的`...
在上层与Ril层的通信中,`Ril.java`扮演了关键角色。它定义了`RILRequest`和`Ril`两个类,以及`RILReceiver`和`RILSender`两个内部类。`RILReceiver`线程负责监听Ril层的socket通道,接收上报信息,而`RILSender`则...
5. **实现RIL接口**:在Java层,你需要创建一个继承自`IRadio`接口的类,比如`HuaweiRadioService`,并实现其中的所有回调方法。这些方法会与底层.so库中的C/C++函数进行交互。 6. **配置硬件抽象层(HAL)**:在...
- **RILJ Layer(RIL Java 层):** 作为 Java 层与原生层之间的桥梁,负责处理 RIL 请求。 - **RILD Daemon(RIL 守护进程):** 运行在原生层的进程,直接与硬件通信。 - **Vendor RIL(供应商 RIL):** 设备厂商...
- `Ril.java`是Android系统的Radio Interface Layer(RIL)的Java层实现,提供了与硬件层交互的API。 - `Ril.java`中的`listSMS()`方法是用于发起读取短信的请求,它会调用`ulc2-ril.c`中的`onRequest()`函数。 -...
同样地,`CommandsInterface`也需要在其实现类中实现,包括`RIL.java`和用于模拟测试的`SimulatedCommands.java`。在实际的`RIL.java`类中,我们需要编写具体的实现逻辑,通过构造`RILRequest`对象,设置请求的标识...
一旦SIM卡状态改变,`IccCardStatus.java`中的信息会被更新,通过`RIL.java`(Radio Interface Layer,无线接口层)发送给上层应用,RIL负责与基带处理器通信,获取和管理SIM卡信息。最后,`IccProvider.java`从SIM...
GSMPhone的setCallWaiting()方法进一步调用了CommandsInterface的setCallWaiting(),CommandsInterface同样是一个接口,由RIL.java中的RIL类实现。RIL的setCallWaiting()方法创建了一个RILRequest对象,并通过RIL_...
在电话的呼出流程的最后,RIL.java会启动一个RILReceiver的Runnable线程,并在这个线程中使用一个无限循环来监听来自底层的socket信息。这个无限循环实际上是一个连续的查询过程,它会不断从socket中读取数据,这些...
RIL.java是Framework侧与RIL层交互的主要接口,它定义了Framework层与RIL层之间的消息格式和处理逻辑。Framework层通过Socket向RIL层发送请求,并接收RIL层返回的响应消息。此外,也可以通过oem_socket接口直接与RIL...
- 最后,在上层的`RIL.java`文件中,需要在`processUnsolicited()`或`processSolicited()`方法中处理硬件返回的数据。根据实际需求选择其中一个方法来处理。 #### 六、总结 通过以上步骤,我们可以成功地在Android...
这个目录包含了许多与RIL相关的Java和C/C++源文件,这些文件定义了RIL接口、处理RIL消息、解析AT命令响应等功能。例如,`RIL.java`是RIL的主要接口,它提供了诸如注册网络、发起呼叫、发送短信等方法。而`RILRequest...
在RIL.java中,`startDtmf`方法被用来启动DTMF信号的发送。该方法接收一个字符参数`c`和一个消息对象`result`。在参考实现文件`reference-ril.c`中,具体实现了如何通过AT命令向Modem发送DTMF信号。关键代码段如下:...
1. **接收事件**:短信接收流程从`RIL.java`开始,其中定义了多个事件,例如`RIL_UNSOL_RESPONSE_NEW_SMS`用于GSM短信接收,`RIL_UNSOL_RESPONSE_CDMA_NEW_SMS`用于CDMA短信接收。 2. **解码处理**:接收到短信后,...
rild socket 主用用于接收从RIL.java 中传递过来的数据命令,同时rild的反馈信息也通过该socket返回给RIL.java