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