blob: 4987e51c2d2b019ce3bcae92081651f630587e38 [file] [log] [blame]
/*
* Copyright (C) 2009 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.internal.telephony.cdma;
import android.os.Parcel;
public final class CdmaInformationRecords {
public Object record;
/**
* Record type identifier
*/
public static final int RIL_CDMA_DISPLAY_INFO_REC = 0;
public static final int RIL_CDMA_CALLED_PARTY_NUMBER_INFO_REC = 1;
public static final int RIL_CDMA_CALLING_PARTY_NUMBER_INFO_REC = 2;
public static final int RIL_CDMA_CONNECTED_NUMBER_INFO_REC = 3;
public static final int RIL_CDMA_SIGNAL_INFO_REC = 4;
public static final int RIL_CDMA_REDIRECTING_NUMBER_INFO_REC = 5;
public static final int RIL_CDMA_LINE_CONTROL_INFO_REC = 6;
public static final int RIL_CDMA_EXTENDED_DISPLAY_INFO_REC = 7;
public static final int RIL_CDMA_T53_CLIR_INFO_REC = 8;
public static final int RIL_CDMA_T53_RELEASE_INFO_REC = 9;
public static final int RIL_CDMA_T53_AUDIO_CONTROL_INFO_REC = 10;
public CdmaInformationRecords(CdmaDisplayInfoRec obj) {
record = obj;
}
public CdmaInformationRecords(CdmaNumberInfoRec obj) {
record = obj;
}
public CdmaInformationRecords(CdmaSignalInfoRec obj) {
record = obj;
}
public CdmaInformationRecords(CdmaRedirectingNumberInfoRec obj) {
record = obj;
}
public CdmaInformationRecords(CdmaLineControlInfoRec obj) {
record = obj;
}
public CdmaInformationRecords(CdmaT53ClirInfoRec obj) {
record = obj;
}
public CdmaInformationRecords(CdmaT53AudioControlInfoRec obj) {
record = obj;
}
public CdmaInformationRecords(Parcel p) {
int id = p.readInt();
switch (id) {
case RIL_CDMA_DISPLAY_INFO_REC:
case RIL_CDMA_EXTENDED_DISPLAY_INFO_REC:
record = new CdmaDisplayInfoRec(id, p.readString());
break;
case RIL_CDMA_CALLED_PARTY_NUMBER_INFO_REC:
case RIL_CDMA_CALLING_PARTY_NUMBER_INFO_REC:
case RIL_CDMA_CONNECTED_NUMBER_INFO_REC:
record = new CdmaNumberInfoRec(id, p.readString(), p.readInt(), p.readInt(),
p.readInt(), p.readInt());
break;
case RIL_CDMA_SIGNAL_INFO_REC:
record = new CdmaSignalInfoRec(p.readInt(), p.readInt(), p.readInt(), p.readInt());
break;
case RIL_CDMA_REDIRECTING_NUMBER_INFO_REC:
record = new CdmaRedirectingNumberInfoRec(p.readString(), p.readInt(), p.readInt(),
p.readInt(), p.readInt(), p.readInt());
break;
case RIL_CDMA_LINE_CONTROL_INFO_REC:
record = new CdmaLineControlInfoRec(p.readInt(), p.readInt(), p.readInt(),
p.readInt());
break;
case RIL_CDMA_T53_CLIR_INFO_REC:
record = new CdmaT53ClirInfoRec(p.readInt());
break;
case RIL_CDMA_T53_AUDIO_CONTROL_INFO_REC:
record = new CdmaT53AudioControlInfoRec(p.readInt(), p.readInt());
break;
case RIL_CDMA_T53_RELEASE_INFO_REC:
// TODO: WHAT to do, for now fall through and throw exception
default:
throw new RuntimeException("RIL_UNSOL_CDMA_INFO_REC: unsupported record. Got "
+ CdmaInformationRecords.idToString(id) + " ");
}
}
public static String idToString(int id) {
switch(id) {
case RIL_CDMA_DISPLAY_INFO_REC: return "RIL_CDMA_DISPLAY_INFO_REC";
case RIL_CDMA_CALLED_PARTY_NUMBER_INFO_REC: return "RIL_CDMA_CALLED_PARTY_NUMBER_INFO_REC";
case RIL_CDMA_CALLING_PARTY_NUMBER_INFO_REC: return "RIL_CDMA_CALLING_PARTY_NUMBER_INFO_REC";
case RIL_CDMA_CONNECTED_NUMBER_INFO_REC: return "RIL_CDMA_CONNECTED_NUMBER_INFO_REC";
case RIL_CDMA_SIGNAL_INFO_REC: return "RIL_CDMA_SIGNAL_INFO_REC";
case RIL_CDMA_REDIRECTING_NUMBER_INFO_REC: return "RIL_CDMA_REDIRECTING_NUMBER_INFO_REC";
case RIL_CDMA_LINE_CONTROL_INFO_REC: return "RIL_CDMA_LINE_CONTROL_INFO_REC";
case RIL_CDMA_EXTENDED_DISPLAY_INFO_REC: return "RIL_CDMA_EXTENDED_DISPLAY_INFO_REC";
case RIL_CDMA_T53_CLIR_INFO_REC: return "RIL_CDMA_T53_CLIR_INFO_REC";
case RIL_CDMA_T53_RELEASE_INFO_REC: return "RIL_CDMA_T53_RELEASE_INFO_REC";
case RIL_CDMA_T53_AUDIO_CONTROL_INFO_REC: return "RIL_CDMA_T53_AUDIO_CONTROL_INFO_REC";
default: return "<unknown record>";
}
}
/**
* Signal Information record from 3GPP2 C.S005 3.7.5.5
*/
public static class CdmaSignalInfoRec {
public boolean isPresent; /* non-zero if signal information record is present */
public int signalType;
public int alertPitch;
public int signal;
public CdmaSignalInfoRec() {}
public CdmaSignalInfoRec(int isPresent, int signalType, int alertPitch, int signal) {
this.isPresent = isPresent != 0;
this.signalType = signalType;
this.alertPitch = alertPitch;
this.signal = signal;
}
@Override
public String toString() {
return "CdmaSignalInfo: {" +
" isPresent: " + isPresent +
", signalType: " + signalType +
", alertPitch: " + alertPitch +
", signal: " + signal +
" }";
}
}
public static class CdmaDisplayInfoRec {
public int id;
public String alpha;
public CdmaDisplayInfoRec(int id, String alpha) {
this.id = id;
this.alpha = alpha;
}
@Override
public String toString() {
return "CdmaDisplayInfoRec: {" +
" id: " + CdmaInformationRecords.idToString(id) +
", alpha: " + alpha +
" }";
}
}
public static class CdmaNumberInfoRec {
public int id;
public String number;
public byte numberType;
public byte numberPlan;
public byte pi;
public byte si;
public CdmaNumberInfoRec(int id, String number, int numberType, int numberPlan, int pi,
int si) {
this.number = number;
this.numberType = (byte)numberType;
this.numberPlan = (byte)numberPlan;
this.pi = (byte)pi;
this.si = (byte)si;
}
@Override
public String toString() {
return "CdmaNumberInfoRec: {" +
" id: " + CdmaInformationRecords.idToString(id) +
", number: <MASKED>" +
", numberType: " + numberType +
", numberPlan: " + numberPlan +
", pi: " + pi +
", si: " + si +
" }";
}
}
public static class CdmaRedirectingNumberInfoRec {
public static final int REASON_UNKNOWN = 0;
public static final int REASON_CALL_FORWARDING_BUSY = 1;
public static final int REASON_CALL_FORWARDING_NO_REPLY = 2;
public static final int REASON_CALLED_DTE_OUT_OF_ORDER = 9;
public static final int REASON_CALL_FORWARDING_BY_THE_CALLED_DTE = 10;
public static final int REASON_CALL_FORWARDING_UNCONDITIONAL = 15;
public CdmaNumberInfoRec numberInfoRec;
public int redirectingReason;
public CdmaRedirectingNumberInfoRec(String number, int numberType, int numberPlan,
int pi, int si, int reason) {
numberInfoRec = new CdmaNumberInfoRec(RIL_CDMA_REDIRECTING_NUMBER_INFO_REC,
number, numberType, numberPlan, pi, si);
redirectingReason = reason;
}
@Override
public String toString() {
return "CdmaNumberInfoRec: {" +
" numberInfoRec: " + numberInfoRec +
", redirectingReason: " + redirectingReason +
" }";
}
}
public static class CdmaLineControlInfoRec {
public byte lineCtrlPolarityIncluded;
public byte lineCtrlToggle;
public byte lineCtrlReverse;
public byte lineCtrlPowerDenial;
public CdmaLineControlInfoRec(int lineCtrlPolarityIncluded, int lineCtrlToggle,
int lineCtrlReverse, int lineCtrlPowerDenial) {
this.lineCtrlPolarityIncluded = (byte)lineCtrlPolarityIncluded;
this.lineCtrlToggle = (byte)lineCtrlToggle;
this.lineCtrlReverse = (byte)lineCtrlReverse;
this.lineCtrlPowerDenial = (byte)lineCtrlPowerDenial;
}
@Override
public String toString() {
return "CdmaLineControlInfoRec: {" +
" lineCtrlPolarityIncluded: " + lineCtrlPolarityIncluded +
" lineCtrlToggle: " + lineCtrlToggle +
" lineCtrlReverse: " + lineCtrlReverse +
" lineCtrlPowerDenial: " + lineCtrlPowerDenial +
" }";
}
}
public static class CdmaT53ClirInfoRec {
public byte cause;
public CdmaT53ClirInfoRec(int cause) {
this.cause = (byte)cause;
}
@Override
public String toString() {
return "CdmaT53ClirInfoRec: {" +
" cause: " + cause +
" }";
}
}
public static class CdmaT53AudioControlInfoRec {
public byte uplink;
public byte downlink;
public CdmaT53AudioControlInfoRec(int uplink, int downlink) {
this.uplink = (byte) uplink;
this.downlink = (byte) downlink;
}
@Override
public String toString() {
return "CdmaT53AudioControlInfoRec: {" +
" uplink: " + uplink +
" downlink: " + downlink +
" }";
}
}
}