Methods Summary |
---|
private boolean | decodeMessageParams(RilMessage rilMsg)
boolean decodingStarted;
mCurrentRilMessage = rilMsg;
switch(rilMsg.mId) {
case CatService.MSG_ID_SESSION_END:
case CatService.MSG_ID_CALL_SETUP:
mCurrentRilMessage.mResCode = ResultCode.OK;
sendCmdForExecution(mCurrentRilMessage);
decodingStarted = false;
break;
case CatService.MSG_ID_PROACTIVE_COMMAND:
case CatService.MSG_ID_EVENT_NOTIFY:
case CatService.MSG_ID_REFRESH:
byte[] rawData = null;
try {
rawData = IccUtils.hexStringToBytes((String) rilMsg.mData);
} catch (Exception e) {
// zombie messages are dropped
CatLog.d(this, "decodeMessageParams dropping zombie messages");
decodingStarted = false;
break;
}
try {
// Start asynch parsing of the command parameters.
mCmdParamsFactory.make(BerTlv.decode(rawData));
decodingStarted = true;
} catch (ResultException e) {
// send to Service for proper RIL communication.
CatLog.d(this, "decodeMessageParams: caught ResultException e=" + e);
mCurrentRilMessage.mResCode = e.result();
sendCmdForExecution(mCurrentRilMessage);
decodingStarted = false;
}
break;
default:
decodingStarted = false;
break;
}
return decodingStarted;
|
public void | dispose()
mStateStart = null;
mStateCmdParamsReady = null;
mCmdParamsFactory.dispose();
mCmdParamsFactory = null;
mCurrentRilMessage = null;
mCaller = null;
mInstance = null;
|
public static synchronized com.android.internal.telephony.cat.RilMessageDecoder | getInstance(android.os.Handler caller, com.android.internal.telephony.uicc.IccFileHandler fh, int slotId)Get the singleton instance, constructing if necessary.
if (null == mInstance) {
mSimCount = TelephonyManager.getDefault().getSimCount();
mInstance = new RilMessageDecoder[mSimCount];
for (int i = 0; i < mSimCount; i++) {
mInstance[i] = null;
}
}
if (slotId != SubscriptionManager.INVALID_SIM_SLOT_INDEX && slotId < mSimCount) {
if (null == mInstance[slotId]) {
mInstance[slotId] = new RilMessageDecoder(caller, fh);
}
} else {
CatLog.d("RilMessageDecoder", "invaild slot id: " + slotId);
return null;
}
return mInstance[slotId];
|
private void | sendCmdForExecution(RilMessage rilMsg)
Message msg = mCaller.obtainMessage(CatService.MSG_ID_RIL_MSG_DECODED,
new RilMessage(rilMsg));
msg.sendToTarget();
|
public void | sendMsgParamsDecoded(ResultCode resCode, CommandParams cmdParams)The command parameters have been decoded.
Message msg = obtainMessage(RilMessageDecoder.CMD_PARAMS_READY);
msg.arg1 = resCode.value();
msg.obj = cmdParams;
sendMessage(msg);
|
public void | sendStartDecodingMessageParams(RilMessage rilMsg)Start decoding the message parameters,
when complete MSG_ID_RIL_MSG_DECODED will be returned to caller.
Message msg = obtainMessage(CMD_START);
msg.obj = rilMsg;
sendMessage(msg);
|