/*
* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
* Not a Contribution.
*
* Copyright (C) 2006 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.gsm;
import android.telephony.Rlog;
import com.android.internal.telephony.CallForwardInfo;
import java.util.ArrayList;
/**
* See also RIL_StkCcUnsolSsResponse in include/telephony/ril.h
*
* {@hide}
*/
public class SsData {
public enum ServiceType {
SS_CFU,
SS_CF_BUSY,
SS_CF_NO_REPLY,
SS_CF_NOT_REACHABLE,
SS_CF_ALL,
SS_CF_ALL_CONDITIONAL,
SS_CLIP,
SS_CLIR,
SS_COLP,
SS_COLR,
SS_WAIT,
SS_BAOC,
SS_BAOIC,
SS_BAOIC_EXC_HOME,
SS_BAIC,
SS_BAIC_ROAMING,
SS_ALL_BARRING,
SS_OUTGOING_BARRING,
SS_INCOMING_BARRING;
public boolean isTypeCF() {
return (this == SS_CFU || this == SS_CF_BUSY || this == SS_CF_NO_REPLY ||
this == SS_CF_NOT_REACHABLE || this == SS_CF_ALL ||
this == SS_CF_ALL_CONDITIONAL);
}
public boolean isTypeUnConditional() {
return (this == SS_CFU || this == SS_CF_ALL);
}
public boolean isTypeCW() {
return (this == SS_WAIT);
}
public boolean isTypeClip() {
return (this == SS_CLIP);
}
public boolean isTypeClir() {
return (this == SS_CLIR);
}
public boolean isTypeBarring() {
return (this == SS_BAOC || this == SS_BAOIC || this == SS_BAOIC_EXC_HOME ||
this == SS_BAIC || this == SS_BAIC_ROAMING || this == SS_ALL_BARRING ||
this == SS_OUTGOING_BARRING || this == SS_INCOMING_BARRING);
}
};
public enum RequestType {
SS_ACTIVATION,
SS_DEACTIVATION,
SS_INTERROGATION,
SS_REGISTRATION,
SS_ERASURE;
public boolean isTypeInterrogation() {
return (this == SS_INTERROGATION);
}
};
public enum TeleserviceType {
SS_ALL_TELE_AND_BEARER_SERVICES,
SS_ALL_TELESEVICES,
SS_TELEPHONY,
SS_ALL_DATA_TELESERVICES,
SS_SMS_SERVICES,
SS_ALL_TELESERVICES_EXCEPT_SMS;
};
public ServiceType serviceType;
public RequestType requestType;
public TeleserviceType teleserviceType;
public int serviceClass;
public int result;
public int[] ssInfo; /* This is the response data for most of the SS GET/SET
RIL requests. E.g. RIL_REQUSET_GET_CLIR returns
two ints, so first two values of ssInfo[] will be
used for respone if serviceType is SS_CLIR and
requestType is SS_INTERROGATION */
public CallForwardInfo[] cfInfo; /* This is the response data for SS request
to query call forward status. see
RIL_REQUEST_QUERY_CALL_FORWARD_STATUS */
public ServiceType ServiceTypeFromRILInt(int type) {
try {
return ServiceType.values()[type];
} catch (IndexOutOfBoundsException e) {
Rlog.e(GSMPhone.LOG_TAG, "Invalid Service type");
return null;
}
}
public RequestType RequestTypeFromRILInt(int type) {
try {
return RequestType.values()[type];
} catch (IndexOutOfBoundsException e) {
Rlog.e(GSMPhone.LOG_TAG, "Invalid Request type");
return null;
}
}
public TeleserviceType TeleserviceTypeFromRILInt(int type) {
try {
return TeleserviceType.values()[type];
} catch (IndexOutOfBoundsException e) {
Rlog.e(GSMPhone.LOG_TAG, "Invalid Teleservice type");
return null;
}
}
public String toString() {
return "[SsData] " + "ServiceType: " + serviceType
+ " RequestType: " + requestType
+ " TeleserviceType: " + teleserviceType
+ " ServiceClass: " + serviceClass
+ " Result: " + result
+ " Is Service Type CF: " + serviceType.isTypeCF();
}
}