Merge "Handle ProvideLocalInfo stk command." into honeycomb-LTE
This commit is contained in:
@@ -33,6 +33,7 @@ import com.android.internal.telephony.IccRecords;
|
|||||||
import android.util.Config;
|
import android.util.Config;
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enumeration for representing the tag value of COMPREHENSION-TLV objects. If
|
* 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);
|
sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, null);
|
||||||
break;
|
break;
|
||||||
case PROVIDE_LOCAL_INFORMATION:
|
case PROVIDE_LOCAL_INFORMATION:
|
||||||
sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, null);
|
ResponseData resp;
|
||||||
return;
|
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 LAUNCH_BROWSER:
|
||||||
case SELECT_ITEM:
|
case SELECT_ITEM:
|
||||||
case GET_INPUT:
|
case GET_INPUT:
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ class CommandParamsFactory extends Handler {
|
|||||||
static final int REFRESH_UICC_RESET = 0x04;
|
static final int REFRESH_UICC_RESET = 0x04;
|
||||||
|
|
||||||
// Command Qualifier values for PLI command
|
// Command Qualifier values for PLI command
|
||||||
|
static final int DTTZ_SETTING = 0x03;
|
||||||
static final int LANGUAGE_SETTING = 0x04;
|
static final int LANGUAGE_SETTING = 0x04;
|
||||||
|
|
||||||
static synchronized CommandParamsFactory getInstance(RilMessageDecoder caller,
|
static synchronized CommandParamsFactory getInstance(RilMessageDecoder caller,
|
||||||
@@ -883,6 +884,10 @@ class CommandParamsFactory extends Handler {
|
|||||||
throws ResultException {
|
throws ResultException {
|
||||||
CatLog.d(this, "process ProvideLocalInfo");
|
CatLog.d(this, "process ProvideLocalInfo");
|
||||||
switch (cmdDet.commandQualifier) {
|
switch (cmdDet.commandQualifier) {
|
||||||
|
case DTTZ_SETTING:
|
||||||
|
CatLog.d(this, "PLI [DTTZ_SETTING]");
|
||||||
|
mCmdParams = new CommandParams(cmdDet);
|
||||||
|
break;
|
||||||
case LANGUAGE_SETTING:
|
case LANGUAGE_SETTING:
|
||||||
CatLog.d(this, "PLI [LANGUAGE_SETTING]");
|
CatLog.d(this, "PLI [LANGUAGE_SETTING]");
|
||||||
mCmdParams = new CommandParams(cmdDet);
|
mCmdParams = new CommandParams(cmdDet);
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ package com.android.internal.telephony.cat;
|
|||||||
|
|
||||||
import com.android.internal.telephony.EncodeException;
|
import com.android.internal.telephony.EncodeException;
|
||||||
import com.android.internal.telephony.GsmAlphabet;
|
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.ByteArrayOutputStream;
|
||||||
import java.io.UnsupportedEncodingException;
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user