diff options
author | Wink Saville <wink@google.com> | 2011-05-24 10:06:58 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-05-24 10:06:58 -0700 |
commit | 543c3146cb011380e4328e049abf97bc797db95a (patch) | |
tree | 4429b91fd0d9c3e4de13cd988fb8321eed0c3c9f /telephony | |
parent | 9a7376396ccd272d4be429373e06ae64fe096380 (diff) | |
parent | 38b6999d9e7f6a1193fd3105235afa2502013740 (diff) | |
download | frameworks_base-543c3146cb011380e4328e049abf97bc797db95a.zip frameworks_base-543c3146cb011380e4328e049abf97bc797db95a.tar.gz frameworks_base-543c3146cb011380e4328e049abf97bc797db95a.tar.bz2 |
Merge "Handle ProvideLocalInfo stk command." into honeycomb-LTE
Diffstat (limited to 'telephony')
3 files changed, 127 insertions, 2 deletions
diff --git a/telephony/java/com/android/internal/telephony/cat/CatService.java b/telephony/java/com/android/internal/telephony/cat/CatService.java index 2f3b177..df47350 100644 --- a/telephony/java/com/android/internal/telephony/cat/CatService.java +++ b/telephony/java/com/android/internal/telephony/cat/CatService.java @@ -33,6 +33,7 @@ import com.android.internal.telephony.IccRecords; import android.util.Config; import java.io.ByteArrayOutputStream; +import java.util.Locale; /** * Enumeration for representing the tag value of COMPREHENSION-TLV objects. If @@ -274,8 +275,20 @@ public class CatService extends Handler implements AppInterface { sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, null); break; case PROVIDE_LOCAL_INFORMATION: - sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, null); - return; + 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: diff --git a/telephony/java/com/android/internal/telephony/cat/CommandParamsFactory.java b/telephony/java/com/android/internal/telephony/cat/CommandParamsFactory.java index 12204a0..686fe46 100644 --- a/telephony/java/com/android/internal/telephony/cat/CommandParamsFactory.java +++ b/telephony/java/com/android/internal/telephony/cat/CommandParamsFactory.java @@ -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, @@ -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); diff --git a/telephony/java/com/android/internal/telephony/cat/ResponseData.java b/telephony/java/com/android/internal/telephony/cat/ResponseData.java index 677d66b..4846a3e 100644 --- a/telephony/java/com/android/internal/telephony/cat/ResponseData.java +++ b/telephony/java/com/android/internal/telephony/cat/ResponseData.java @@ -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; @@ -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); + } + } +} |