`
573842281
  • 浏览: 42443 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

RIL.java

阅读更多

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;
 
分享到:
评论

相关推荐

    Ril资料[ril.h、ril.lib] Mobile

    Ril驱动接口,含有.h\.Lib、对于Mobile深一点的开发很有帮助

    rild Socket 初始化

    rild socket 主用用于接收从RIL.java 中传递过来的数据命令,同时rild的反馈信息也通过该socket返回给RIL.java

    RIL时序图.zip

    RIL时序图.zip RIL时序图.zip RIL时序图.zip RIL时序图.zip RIL时序图.zip RIL时序图.zip

    Android核心分析(18)-----Android电话系统之RIL-Java.doc

    Android核心分析(18)-----Android电话系统之RIL-Java

    Android中RIL层详细分析

    本文档对Android RIL部分的内容进行了介绍,其重点放在了Android RIL的原生代码部分。包括四个主题: 1.Android RIL框架介绍 2.Android RIL与WindowsMobile RIL 3.Android RIL porting 4.Android RIL的java框架

    ap6212a0_a33_sc3817r_服务器验证通过_bt已经通了_wifi需要修改配置_需要再次验证_20170626_1549.7z

    # device/softwinner/polaris-common/rild/libsoftwinner-ril.so:system/lib/libsoftwinner-ril.so #PRODUCT_COPY_FILES += \ # device/softwinner/polaris-common/rild/init.3gdongle.rc:root/init.sunxi.3...

    Android RIL結構分析與移植

    本文檔對Android RIL部分的內容進行了介紹,其重點放在了Android RIL的原生代碼部分。包括四個主題: 1.Android RIL框架介紹 2.Android RIL與 WindowsMobile RIL 3.Android RIL porting 4.Android RIL的java框架

    QCRIL_RIL_架构分析.zip

    QCRIL_RIL_架构分析.zip QCRIL_RIL_架构分析.zip QCRIL_RIL_架构分析.zip QCRIL_RIL_架构分析.zip

    Android核心分析

    Android 核心分析( 18 ) -----Android 电话系统之 RIL-Java ........................................ 76 Android 核心分析( 19 ) ---- 电话系统之 GSMCallTacker ..............................................

    Android核心设计思想分析

    Android核心分析(18)-----Android电话系统之RIL-Java........................................76 Android核心分析(19)----电话系统之GSMCallTacker.............................................84 Android...

    Android主要机制深入分析

    Android 核心分析(18)-----Android 电话系统之RIL-Java........................................ 76 Android 核心分析(19)----电话系统之GSMCallTacker.............................................84 ...

    Android_RIL层剖析(官方翻译).

    Android 无线接口层(Radio Layer Interface) 目录: 1、介绍 2、RIL 初始化 3、RIL 交互 ----3.1 主动请求 ----3.2 被动请求 4、实现RIL -----RIL初始化 5、RIL函数 ...----5.2 RIL 被动请求的命令

    android 核心分析

    Android 核心分析(18)-----Android 电话系统之 RIL-Java........................................ 76 Android 核心分析(19)----电话系统之 GSMCallTacker.............................................84 Android ...

    Android RIL使用详解

    前言 Android作为一个通用的移动平台,其首要的功能就是通话...RIL Java(RILJ):负责将上层APP的通信请求发送给HAL层;RIL C++(RILD): 系统守护进程,负责将RILJ的请求命令发送给CP(Communication Processor) 什么是RI

    RIL是一款专门为嵌入式平台开发的无线通信模块(GSM/GPRS/CatM1/NB)管理框架,适用于资源受限物联网终端设备

    RIL是一款专门为嵌入式平台开发的无线通信模块(GSM/GPRS/CatM1/NB)管理框架,适用于资源受限物联网终端设备(单片机+无线蜂窝模组的方案),并提供物联网通信所需的基本功能,包含网络注册、连接管理、短信收发及...

    电话基础服务模块,与RIL Adapter进行通信实现

    核心服务模块主要功能是初始化SIM卡服务、搜网服务和RIL管理,以及获取RIL Adapter服务。通过注册回调服务,实现与RIL Adapter进行通信;通过发布订阅,来实现与各功能模块的通信。

    app_ril_control:一个使用root权限停止ril-daemon的简单应用

    app_ril_control 一个简单的应用程序,使用root权限来停止/启动ril-daemon。 该存储库已存档,并且是只读的。 请访问 ,以获取此存储库的开放和可编辑版本。 我所有的存储库都已复制到GitLab。 请张贴任何问题,...

Global site tag (gtag.js) - Google Analytics