109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja/*
209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja * Not a Contribution.
409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja *
509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja * Copyright (C) 2006 The Android Open Source Project
609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja *
709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja * Licensed under the Apache License, Version 2.0 (the "License");
809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja * you may not use this file except in compliance with the License.
909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja * You may obtain a copy of the License at
1009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja *
1109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja *      http://www.apache.org/licenses/LICENSE-2.0
1209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja *
1309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja * Unless required by applicable law or agreed to in writing, software
1409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja * distributed under the License is distributed on an "AS IS" BASIS,
1509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja * See the License for the specific language governing permissions and
1709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja * limitations under the License.
1809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja */
1909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
2009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahujapackage com.android.internal.telephony.gsm;
2109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
2209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahujaimport android.telephony.Rlog;
2309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahujaimport com.android.internal.telephony.CallForwardInfo;
2409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
2509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahujaimport java.util.ArrayList;
2609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
2709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja/**
2809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja * See also RIL_StkCcUnsolSsResponse in include/telephony/ril.h
2909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja *
3009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja * {@hide}
3109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja */
3209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahujapublic class SsData {
3309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public enum ServiceType {
3409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_CFU,
3509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_CF_BUSY,
3609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_CF_NO_REPLY,
3709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_CF_NOT_REACHABLE,
3809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_CF_ALL,
3909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_CF_ALL_CONDITIONAL,
4009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_CLIP,
4109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_CLIR,
4209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_COLP,
4309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_COLR,
4409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_WAIT,
4509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_BAOC,
4609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_BAOIC,
4709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_BAOIC_EXC_HOME,
4809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_BAIC,
4909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_BAIC_ROAMING,
5009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_ALL_BARRING,
5109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_OUTGOING_BARRING,
5209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_INCOMING_BARRING;
5309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
5409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        public boolean isTypeCF() {
5509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            return (this == SS_CFU || this == SS_CF_BUSY || this == SS_CF_NO_REPLY ||
5609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja                  this == SS_CF_NOT_REACHABLE || this == SS_CF_ALL ||
5709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja                  this == SS_CF_ALL_CONDITIONAL);
5809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        }
5909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
6009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        public boolean isTypeUnConditional() {
6109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            return (this == SS_CFU || this == SS_CF_ALL);
6209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        }
6309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
6409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        public boolean isTypeCW() {
6509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            return (this == SS_WAIT);
6609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        }
6709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
6809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        public boolean isTypeClip() {
6909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            return (this == SS_CLIP);
7009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        }
7109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
7209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        public boolean isTypeClir() {
7309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            return (this == SS_CLIR);
7409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        }
7509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
7609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        public boolean isTypeBarring() {
7709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            return (this == SS_BAOC || this == SS_BAOIC || this == SS_BAOIC_EXC_HOME ||
7809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja                  this == SS_BAIC || this == SS_BAIC_ROAMING || this == SS_ALL_BARRING ||
7909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja                  this == SS_OUTGOING_BARRING || this == SS_INCOMING_BARRING);
8009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        }
8109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    };
8209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
8309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public enum RequestType {
8409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_ACTIVATION,
8509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_DEACTIVATION,
8609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_INTERROGATION,
8709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_REGISTRATION,
8809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_ERASURE;
8909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
9009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        public boolean isTypeInterrogation() {
9109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            return (this == SS_INTERROGATION);
9209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        }
9309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    };
9409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
9509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public enum TeleserviceType {
9609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_ALL_TELE_AND_BEARER_SERVICES,
9709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_ALL_TELESEVICES,
9809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_TELEPHONY,
9909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_ALL_DATA_TELESERVICES,
10009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_SMS_SERVICES,
10109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        SS_ALL_TELESERVICES_EXCEPT_SMS;
10209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    };
10309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
10409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public ServiceType serviceType;
10509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public RequestType requestType;
10609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public TeleserviceType teleserviceType;
10709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public int serviceClass;
10809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public int result;
10909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
11009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public int[] ssInfo; /* This is the response data for most of the SS GET/SET
11109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja                            RIL requests. E.g. RIL_REQUSET_GET_CLIR returns
11209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja                            two ints, so first two values of ssInfo[] will be
11309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja                            used for respone if serviceType is SS_CLIR and
11409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja                            requestType is SS_INTERROGATION */
11509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
11609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public CallForwardInfo[] cfInfo; /* This is the response data for SS request
11709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja                                        to query call forward status. see
11809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja                                        RIL_REQUEST_QUERY_CALL_FORWARD_STATUS */
11909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
12009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public ServiceType ServiceTypeFromRILInt(int type) {
12109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        try {
12209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            return ServiceType.values()[type];
12309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        } catch (IndexOutOfBoundsException e) {
12409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            Rlog.e(GSMPhone.LOG_TAG, "Invalid Service type");
12509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            return null;
12609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        }
12709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    }
12809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
12909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public RequestType RequestTypeFromRILInt(int type) {
13009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        try {
13109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            return RequestType.values()[type];
13209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        } catch (IndexOutOfBoundsException e) {
13309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            Rlog.e(GSMPhone.LOG_TAG, "Invalid Request type");
13409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            return null;
13509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        }
13609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    }
13709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
13809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public TeleserviceType TeleserviceTypeFromRILInt(int type) {
13909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        try {
14009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            return TeleserviceType.values()[type];
14109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        } catch (IndexOutOfBoundsException e) {
14209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            Rlog.e(GSMPhone.LOG_TAG, "Invalid Teleservice type");
14309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            return null;
14409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        }
14509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    }
14609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
14709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public String toString() {
14809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja        return "[SsData] " + "ServiceType: " + serviceType
14909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            + " RequestType: " + requestType
15009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            + " TeleserviceType: " + teleserviceType
15109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            + " ServiceClass: " + serviceClass
15209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            + " Result: " + result
15309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja            + " Is Service Type CF: " + serviceType.isTypeCF();
15409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    }
15509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja}
156