1 /* 2 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved. 3 * Not a Contribution. 4 * 5 * Copyright (C) 2006 The Android Open Source Project 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 */ 19 20 package com.android.internal.telephony.gsm; 21 22 import com.android.internal.telephony.CallForwardInfo; 23 import com.android.internal.telephony.GsmCdmaPhone; 24 import com.android.telephony.Rlog; 25 26 /** 27 * See also RIL_StkCcUnsolSsResponse in include/telephony/ril.h 28 * 29 * {@hide} 30 */ 31 public class SsData { 32 public enum ServiceType { 33 SS_CFU, 34 SS_CF_BUSY, 35 SS_CF_NO_REPLY, 36 SS_CF_NOT_REACHABLE, 37 SS_CF_ALL, 38 SS_CF_ALL_CONDITIONAL, 39 SS_CLIP, 40 SS_CLIR, 41 SS_COLP, 42 SS_COLR, 43 SS_WAIT, 44 SS_BAOC, 45 SS_BAOIC, 46 SS_BAOIC_EXC_HOME, 47 SS_BAIC, 48 SS_BAIC_ROAMING, 49 SS_ALL_BARRING, 50 SS_OUTGOING_BARRING, 51 SS_INCOMING_BARRING; 52 isTypeCF()53 public boolean isTypeCF() { 54 return (this == SS_CFU || this == SS_CF_BUSY || this == SS_CF_NO_REPLY || 55 this == SS_CF_NOT_REACHABLE || this == SS_CF_ALL || 56 this == SS_CF_ALL_CONDITIONAL); 57 } 58 isTypeUnConditional()59 public boolean isTypeUnConditional() { 60 return (this == SS_CFU || this == SS_CF_ALL); 61 } 62 isTypeCW()63 public boolean isTypeCW() { 64 return (this == SS_WAIT); 65 } 66 isTypeClip()67 public boolean isTypeClip() { 68 return (this == SS_CLIP); 69 } 70 isTypeClir()71 public boolean isTypeClir() { 72 return (this == SS_CLIR); 73 } 74 isTypeBarring()75 public boolean isTypeBarring() { 76 return (this == SS_BAOC || this == SS_BAOIC || this == SS_BAOIC_EXC_HOME || 77 this == SS_BAIC || this == SS_BAIC_ROAMING || this == SS_ALL_BARRING || 78 this == SS_OUTGOING_BARRING || this == SS_INCOMING_BARRING); 79 } 80 }; 81 82 public enum RequestType { 83 SS_ACTIVATION, 84 SS_DEACTIVATION, 85 SS_INTERROGATION, 86 SS_REGISTRATION, 87 SS_ERASURE; 88 isTypeInterrogation()89 public boolean isTypeInterrogation() { 90 return (this == SS_INTERROGATION); 91 } 92 }; 93 94 public enum TeleserviceType { 95 SS_ALL_TELE_AND_BEARER_SERVICES, 96 SS_ALL_TELESEVICES, 97 SS_TELEPHONY, 98 SS_ALL_DATA_TELESERVICES, 99 SS_SMS_SERVICES, 100 SS_ALL_TELESERVICES_EXCEPT_SMS; 101 }; 102 103 public ServiceType serviceType; 104 public RequestType requestType; 105 public TeleserviceType teleserviceType; 106 public int serviceClass; 107 public int result; 108 109 public int[] ssInfo; /* This is the response data for most of the SS GET/SET 110 RIL requests. E.g. RIL_REQUSET_GET_CLIR returns 111 two ints, so first two values of ssInfo[] will be 112 used for respone if serviceType is SS_CLIR and 113 requestType is SS_INTERROGATION */ 114 115 public CallForwardInfo[] cfInfo; /* This is the response data for SS request 116 to query call forward status. see 117 RIL_REQUEST_QUERY_CALL_FORWARD_STATUS */ 118 ServiceTypeFromRILInt(int type)119 public ServiceType ServiceTypeFromRILInt(int type) { 120 try { 121 return ServiceType.values()[type]; 122 } catch (IndexOutOfBoundsException e) { 123 Rlog.e(GsmCdmaPhone.LOG_TAG, "Invalid Service type"); 124 return null; 125 } 126 } 127 RequestTypeFromRILInt(int type)128 public RequestType RequestTypeFromRILInt(int type) { 129 try { 130 return RequestType.values()[type]; 131 } catch (IndexOutOfBoundsException e) { 132 Rlog.e(GsmCdmaPhone.LOG_TAG, "Invalid Request type"); 133 return null; 134 } 135 } 136 TeleserviceTypeFromRILInt(int type)137 public TeleserviceType TeleserviceTypeFromRILInt(int type) { 138 try { 139 return TeleserviceType.values()[type]; 140 } catch (IndexOutOfBoundsException e) { 141 Rlog.e(GsmCdmaPhone.LOG_TAG, "Invalid Teleservice type"); 142 return null; 143 } 144 } 145 toString()146 public String toString() { 147 return "[SsData] " + "ServiceType: " + serviceType 148 + " RequestType: " + requestType 149 + " TeleserviceType: " + teleserviceType 150 + " ServiceClass: " + serviceClass 151 + " Result: " + result 152 + " Is Service Type CF: " + serviceType.isTypeCF(); 153 } 154 } 155