summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjangeon.kim <jangeon.kim@lge.com>2012-11-28 13:52:11 +0900
committerWink Saville <wink@google.com>2012-12-04 15:05:06 -0800
commit3e02868153369ab32d3ecc7b01f6e48750d6356d (patch)
tree3d27f27d4d4f7680b3696c4967b8be47cdbcfae4
parent859f7a917b27e64fc03ee614152ac37c688307a8 (diff)
downloadframeworks_opt_telephony-3e02868153369ab32d3ecc7b01f6e48750d6356d.zip
frameworks_opt_telephony-3e02868153369ab32d3ecc7b01f6e48750d6356d.tar.gz
frameworks_opt_telephony-3e02868153369ab32d3ecc7b01f6e48750d6356d.tar.bz2
simcard: With Kazakh Beeline SIM card, there isn't STK menu
IccFileHandler.java is modified to fix an erroneous EF_IMG file path information. The other is CommandParamsFactory.java file, which is modified to ignore the result of reading EF_IMG file. This Beeline SIM card returned an error status word when the mobile device accessed the EF_IMG file in this SIM card. (I think this Beeline SIM card does not support EF_IMG file.) As a result, This error result stoped processing the setup menu proactive command, and there was no STK menu. So, I modified the CommandParamsFactory.java file to ignore the result of EF_IMG file read operation. After applying this modification, The STK menu was successfully displayed. (This issue was resolved by these modified files.) I think there will be no critical problem even if the EF_IMG(Icon image) file is ignored. Bug: 7585989 Change-Id: I16e3c077779811e3d4c46cd6e003771f3e1efde2
-rw-r--r--src/java/com/android/internal/telephony/IccFileHandler.java61
-rw-r--r--src/java/com/android/internal/telephony/cat/CommandParamsFactory.java2
2 files changed, 55 insertions, 8 deletions
diff --git a/src/java/com/android/internal/telephony/IccFileHandler.java b/src/java/com/android/internal/telephony/IccFileHandler.java
index 98ab17b..fd4e3cc 100644
--- a/src/java/com/android/internal/telephony/IccFileHandler.java
+++ b/src/java/com/android/internal/telephony/IccFileHandler.java
@@ -88,6 +88,8 @@ public abstract class IccFileHandler extends Handler implements IccConstants {
static protected final int EVENT_READ_IMG_DONE = 9;
/** Finished retrieving icon data; post result. */
static protected final int EVENT_READ_ICON_DONE = 10;
+ /** Finished retrieving size of record for EFimg now. */
+ static protected final int EVENT_GET_RECORD_SIZE_IMG_DONE = 11;
// member variables
protected final CommandsInterface mCi;
@@ -162,14 +164,14 @@ public abstract class IccFileHandler extends Handler implements IccConstants {
*
*/
public void loadEFImgLinearFixed(int recordNum, Message onLoaded) {
- Message response = obtainMessage(EVENT_READ_IMG_DONE,
+ Message response = obtainMessage(EVENT_GET_RECORD_SIZE_IMG_DONE,
new LoadLinearFixedContext(IccConstants.EF_IMG, recordNum,
onLoaded));
- // TODO(): Verify when path changes are done.
- mCi.iccIOForApp(COMMAND_GET_RESPONSE, IccConstants.EF_IMG, "img",
- recordNum, READ_RECORD_MODE_ABSOLUTE,
- GET_RESPONSE_EF_IMG_SIZE_BYTES, null, null, mAid, response);
+ mCi.iccIOForApp(COMMAND_GET_RESPONSE, IccConstants.EF_IMG,
+ getEFPath(IccConstants.EF_IMG), recordNum,
+ READ_RECORD_MODE_ABSOLUTE, GET_RESPONSE_EF_IMG_SIZE_BYTES,
+ null, null, mAid, response);
}
/**
@@ -257,8 +259,17 @@ public abstract class IccFileHandler extends Handler implements IccConstants {
Message response = obtainMessage(EVENT_READ_ICON_DONE, fileid, 0,
onLoaded);
- mCi.iccIOForApp(COMMAND_READ_BINARY, fileid, "img", highOffset, lowOffset,
- length, null, null, mAid, response);
+ logd("IccFileHandler: loadEFImgTransparent fileid = " + fileid
+ + " filePath = " + getEFPath(fileid) + " highOffset = " + highOffset
+ + " lowOffset = " + lowOffset + " length = " + length);
+ /*
+ * Per TS 31.102, for displaying of Icon, under
+ * DF Telecom and DF Graphics , EF instance(s) (4FXX,transparent files)
+ * are present. The possible image file identifiers (EF instance) for
+ * EF img ( 4F20, linear fixed file) are : 4F01 ... 4F05.
+ */
+ mCi.iccIOForApp(COMMAND_READ_BINARY, fileid, getEFPath(fileid),
+ highOffset, lowOffset, length, null, null, mAid, response);
}
/**
@@ -322,6 +333,42 @@ public abstract class IccFileHandler extends Handler implements IccConstants {
try {
switch (msg.what) {
+ case EVENT_GET_RECORD_SIZE_IMG_DONE:
+ logd("IccFileHandler: get record size img done");
+ ar = (AsyncResult) msg.obj;
+ lc = (LoadLinearFixedContext) ar.userObj;
+ result = (IccIoResult) ar.result;
+ response = lc.onLoaded;
+
+ if (ar.exception != null) {
+ sendResult(response, null, ar.exception);
+ break;
+ }
+
+ iccException = result.getException();
+
+ if (iccException != null) {
+ sendResult(response, null, iccException);
+ break;
+ }
+
+ data = result.payload;
+ lc.recordSize = data[RESPONSE_DATA_RECORD_LENGTH] & 0xFF;
+
+ if ((TYPE_EF != data[RESPONSE_DATA_FILE_TYPE]) ||
+ (EF_TYPE_LINEAR_FIXED != data[RESPONSE_DATA_STRUCTURE])) {
+ loge("IccFileHandler: File type mismatch: Throw Exception");
+ throw new IccFileTypeMismatch();
+ }
+
+ logd("IccFileHandler: read EF IMG");
+ mCi.iccIOForApp(COMMAND_READ_RECORD, lc.efid, getEFPath(lc.efid),
+ lc.recordNum,
+ READ_RECORD_MODE_ABSOLUTE,
+ lc.recordSize, null, null, mAid,
+ obtainMessage(EVENT_READ_IMG_DONE, IccConstants.EF_IMG, 0, response));
+ break;
+
case EVENT_READ_IMG_DONE:
ar = (AsyncResult) msg.obj;
lc = (LoadLinearFixedContext) ar.userObj;
diff --git a/src/java/com/android/internal/telephony/cat/CommandParamsFactory.java b/src/java/com/android/internal/telephony/cat/CommandParamsFactory.java
index a554012..9de8399 100644
--- a/src/java/com/android/internal/telephony/cat/CommandParamsFactory.java
+++ b/src/java/com/android/internal/telephony/cat/CommandParamsFactory.java
@@ -203,7 +203,7 @@ class CommandParamsFactory extends Handler {
int iconIndex = 0;
if (data == null) {
- return ResultCode.PRFRMD_ICON_NOT_DISPLAYED;
+ return ResultCode.OK;
}
switch(mIconLoadState) {
case LOAD_SINGLE_ICON: