Loading telephony/java/com/android/internal/telephony/cat/CatService.java +15 −2 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import com.android.internal.telephony.IccRecords; import java.io.ByteArrayOutputStream; import java.util.Locale; /** * Enumeration for representing the tag value of COMPREHENSION-TLV objects. If Loading Loading @@ -273,8 +274,20 @@ public class CatService extends Handler implements AppInterface { sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, null); break; case PROVIDE_LOCAL_INFORMATION: ResponseData resp; switch (cmdParams.cmdDet.commandQualifier) { case CommandParamsFactory.DTTZ_SETTING: resp = new DTTZResponseData(null); sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, resp); break; case CommandParamsFactory.LANGUAGE_SETTING: resp = new LanguageResponseData(Locale.getDefault().getLanguage()); sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, resp); break; default: sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, null); return; } case LAUNCH_BROWSER: case SELECT_ITEM: case GET_INPUT: Loading telephony/java/com/android/internal/telephony/cat/CommandParamsFactory.java +5 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ class CommandParamsFactory extends Handler { static final int REFRESH_UICC_RESET = 0x04; // Command Qualifier values for PLI command static final int DTTZ_SETTING = 0x03; static final int LANGUAGE_SETTING = 0x04; static synchronized CommandParamsFactory getInstance(RilMessageDecoder caller, Loading Loading @@ -883,6 +884,10 @@ class CommandParamsFactory extends Handler { throws ResultException { CatLog.d(this, "process ProvideLocalInfo"); switch (cmdDet.commandQualifier) { case DTTZ_SETTING: CatLog.d(this, "PLI [DTTZ_SETTING]"); mCmdParams = new CommandParams(cmdDet); break; case LANGUAGE_SETTING: CatLog.d(this, "PLI [LANGUAGE_SETTING]"); mCmdParams = new CommandParams(cmdDet); Loading telephony/java/com/android/internal/telephony/cat/ResponseData.java +107 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.internal.telephony.cat; import com.android.internal.telephony.EncodeException; import com.android.internal.telephony.GsmAlphabet; import java.util.Calendar; import com.android.internal.telephony.cat.AppInterface.CommandType; import java.io.ByteArrayOutputStream; import java.io.UnsupportedEncodingException; Loading Loading @@ -147,4 +149,109 @@ class GetInkeyInputResponseData extends ResponseData { } } // For "PROVIDE LOCAL INFORMATION" command. // See TS 31.111 section 6.4.15/ETSI TS 102 223 // TS 31.124 section 27.22.4.15 for test spec class LanguageResponseData extends ResponseData { private String lang; public LanguageResponseData(String lang) { super(); this.lang = lang; } @Override public void format(ByteArrayOutputStream buf) { if (buf == null) { return; } // Text string object int tag = 0x80 | ComprehensionTlvTag.LANGUAGE.value(); buf.write(tag); // tag byte[] data; if (lang != null && lang.length() > 0) { data = GsmAlphabet.stringToGsm8BitPacked(lang); } else { data = new byte[0]; } buf.write(data.length); for (byte b : data) { buf.write(b); } } } // For "PROVIDE LOCAL INFORMATION" command. // See TS 31.111 section 6.4.15/ETSI TS 102 223 // TS 31.124 section 27.22.4.15 for test spec class DTTZResponseData extends ResponseData { private Calendar calendar; public DTTZResponseData(Calendar cal) { super(); calendar = cal; } @Override public void format(ByteArrayOutputStream buf) { if (buf == null) { return; } // DTTZ object int tag = 0x80 | CommandType.PROVIDE_LOCAL_INFORMATION.value(); buf.write(tag); // tag byte[] data = new byte[8]; byte btmp; // temp variable data[0] = 0x07; // Write length of DTTZ data if (calendar == null) { calendar = Calendar.getInstance(); } // Fill year byte btmp = (byte) (calendar.get(java.util.Calendar.YEAR) % 100); data[1] = (byte) (btmp / 10); data[1] += (byte) ((btmp % 10) << 4); // Fill month byte btmp = (byte) (calendar.get(java.util.Calendar.MONTH) + 1); data[2] = (byte) (btmp / 10); data[2] += (byte) ((btmp % 10) << 4); // Fill day byte btmp = (byte) (calendar.get(java.util.Calendar.DATE)); data[3] = (byte) (btmp / 10); data[3] += (byte) ((btmp % 10) << 4); // Fill hour byte btmp = (byte) (calendar.get(java.util.Calendar.HOUR_OF_DAY)); data[4] = (byte) (btmp / 10); data[4] += (byte) ((btmp % 10) << 4); // Fill minute byte btmp = (byte) (calendar.get(java.util.Calendar.MINUTE)); data[5] = (byte) (btmp / 10); data[5] += (byte) ((btmp % 10) << 4); // Fill second byte btmp = (byte) (calendar.get(java.util.Calendar.SECOND)); data[6] = (byte) (btmp / 10); data[6] += (byte) ((btmp % 10) << 4); // No time zone info data[7] = (byte) 0xFF; for (byte b : data) { buf.write(b); } } } Loading
telephony/java/com/android/internal/telephony/cat/CatService.java +15 −2 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import com.android.internal.telephony.IccRecords; import java.io.ByteArrayOutputStream; import java.util.Locale; /** * Enumeration for representing the tag value of COMPREHENSION-TLV objects. If Loading Loading @@ -273,8 +274,20 @@ public class CatService extends Handler implements AppInterface { sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, null); break; case PROVIDE_LOCAL_INFORMATION: ResponseData resp; switch (cmdParams.cmdDet.commandQualifier) { case CommandParamsFactory.DTTZ_SETTING: resp = new DTTZResponseData(null); sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, resp); break; case CommandParamsFactory.LANGUAGE_SETTING: resp = new LanguageResponseData(Locale.getDefault().getLanguage()); sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, resp); break; default: sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, null); return; } case LAUNCH_BROWSER: case SELECT_ITEM: case GET_INPUT: Loading
telephony/java/com/android/internal/telephony/cat/CommandParamsFactory.java +5 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ class CommandParamsFactory extends Handler { static final int REFRESH_UICC_RESET = 0x04; // Command Qualifier values for PLI command static final int DTTZ_SETTING = 0x03; static final int LANGUAGE_SETTING = 0x04; static synchronized CommandParamsFactory getInstance(RilMessageDecoder caller, Loading Loading @@ -883,6 +884,10 @@ class CommandParamsFactory extends Handler { throws ResultException { CatLog.d(this, "process ProvideLocalInfo"); switch (cmdDet.commandQualifier) { case DTTZ_SETTING: CatLog.d(this, "PLI [DTTZ_SETTING]"); mCmdParams = new CommandParams(cmdDet); break; case LANGUAGE_SETTING: CatLog.d(this, "PLI [LANGUAGE_SETTING]"); mCmdParams = new CommandParams(cmdDet); Loading
telephony/java/com/android/internal/telephony/cat/ResponseData.java +107 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.internal.telephony.cat; import com.android.internal.telephony.EncodeException; import com.android.internal.telephony.GsmAlphabet; import java.util.Calendar; import com.android.internal.telephony.cat.AppInterface.CommandType; import java.io.ByteArrayOutputStream; import java.io.UnsupportedEncodingException; Loading Loading @@ -147,4 +149,109 @@ class GetInkeyInputResponseData extends ResponseData { } } // For "PROVIDE LOCAL INFORMATION" command. // See TS 31.111 section 6.4.15/ETSI TS 102 223 // TS 31.124 section 27.22.4.15 for test spec class LanguageResponseData extends ResponseData { private String lang; public LanguageResponseData(String lang) { super(); this.lang = lang; } @Override public void format(ByteArrayOutputStream buf) { if (buf == null) { return; } // Text string object int tag = 0x80 | ComprehensionTlvTag.LANGUAGE.value(); buf.write(tag); // tag byte[] data; if (lang != null && lang.length() > 0) { data = GsmAlphabet.stringToGsm8BitPacked(lang); } else { data = new byte[0]; } buf.write(data.length); for (byte b : data) { buf.write(b); } } } // For "PROVIDE LOCAL INFORMATION" command. // See TS 31.111 section 6.4.15/ETSI TS 102 223 // TS 31.124 section 27.22.4.15 for test spec class DTTZResponseData extends ResponseData { private Calendar calendar; public DTTZResponseData(Calendar cal) { super(); calendar = cal; } @Override public void format(ByteArrayOutputStream buf) { if (buf == null) { return; } // DTTZ object int tag = 0x80 | CommandType.PROVIDE_LOCAL_INFORMATION.value(); buf.write(tag); // tag byte[] data = new byte[8]; byte btmp; // temp variable data[0] = 0x07; // Write length of DTTZ data if (calendar == null) { calendar = Calendar.getInstance(); } // Fill year byte btmp = (byte) (calendar.get(java.util.Calendar.YEAR) % 100); data[1] = (byte) (btmp / 10); data[1] += (byte) ((btmp % 10) << 4); // Fill month byte btmp = (byte) (calendar.get(java.util.Calendar.MONTH) + 1); data[2] = (byte) (btmp / 10); data[2] += (byte) ((btmp % 10) << 4); // Fill day byte btmp = (byte) (calendar.get(java.util.Calendar.DATE)); data[3] = (byte) (btmp / 10); data[3] += (byte) ((btmp % 10) << 4); // Fill hour byte btmp = (byte) (calendar.get(java.util.Calendar.HOUR_OF_DAY)); data[4] = (byte) (btmp / 10); data[4] += (byte) ((btmp % 10) << 4); // Fill minute byte btmp = (byte) (calendar.get(java.util.Calendar.MINUTE)); data[5] = (byte) (btmp / 10); data[5] += (byte) ((btmp % 10) << 4); // Fill second byte btmp = (byte) (calendar.get(java.util.Calendar.SECOND)); data[6] = (byte) (btmp / 10); data[6] += (byte) ((btmp % 10) << 4); // No time zone info data[7] = (byte) 0xFF; for (byte b : data) { buf.write(b); } } }