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;
 
06-30 10:41:19.722 1530 1530 D RILJ : RIL: init allowedNetworkTypes=392191 cdmaSubscription=0) [PHONEnull] 06-30 10:41:19.815 1530 1530 E RILJ : IRadio <1.4 is no longer supported. [PHONE0] 06-30 10:41:19.820 1530 1530 E RILJ : getRadioServiceProxy: set MODEM for slot1 as disabled 06-30 10:41:19.820 1530 1530 E RILJ : java.lang.RuntimeException 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.telephony.RIL.getRadioServiceProxy(RIL.java:1052) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.telephony.RIL.getRadioServiceProxy(RIL.java:791) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.telephony.RIL.getHardwareConfig(RIL.java:4186) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.telephony.TelephonyDevController.registerRIL(TelephonyDevController.java:108) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.telephony.RIL.<init>(RIL.java:1214) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.telephony.RIL.<init>(RIL.java:1108) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.telephony.PhoneFactory.makeDefaultPhone(PhoneFactory.java:190) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.telephony.PhoneFactory.makeDefaultPhones(PhoneFactory.java:120) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.phone.PhoneGlobals.onCreate(PhoneGlobals.java:560) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.phone.PhoneApp.onCreate(PhoneApp.java:39) 06-30 10:41:19.820 1530 1530 E RILJ : at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1386) 06-30 10:41:19.820 1530 1530 E RILJ : at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1491) 06-30 10:41:19.820 1530 1530 E RILJ : at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1403) 06-30 10:41:19.820 1530 1530 E RILJ : at android.app.ActivityThread.handleReceiver(ActivityThread.java:4805) 06-30 10:41:19.820 1530 1530 E RILJ : at android.app.ActivityThread.-$$Nest$mhandleReceiver(Unknown Source:0) 06-30 10:41:19.820 1530 1530 E RILJ : at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2506) 06-30 10:41:19.820 1530 1530 E RILJ : at android.os.Handler.dispatchMessage(Handler.java:116) 06-30 10:41:19.820 1530 1530 E RILJ : at android.os.Looper.loopOnce(Looper.java:235) 06-30 10:41:19.820 1530 1530 E RILJ : at android.os.Looper.loop(Looper.java:323) 06-30 10:41:19.820 1530 1530 E RILJ : at android.app.ActivityThread.main(ActivityThread.java:8805) 06-30 10:41:19.820 1530 1530 E RILJ : at java.lang.reflect.Method.invoke(Native Method) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
最新发布
07-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值