Home | History | Annotate | Download | only in gsm
      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 android.telephony.Rlog;
     23 import com.android.internal.telephony.CallForwardInfo;
     24 import com.android.internal.telephony.GsmCdmaPhone;
     25 
     26 import java.util.ArrayList;
     27 
     28 /**
     29  * See also RIL_StkCcUnsolSsResponse in include/telephony/ril.h
     30  *
     31  * {@hide}
     32  */
     33 public class SsData {
     34     public enum ServiceType {
     35         SS_CFU,
     36         SS_CF_BUSY,
     37         SS_CF_NO_REPLY,
     38         SS_CF_NOT_REACHABLE,
     39         SS_CF_ALL,
     40         SS_CF_ALL_CONDITIONAL,
     41         SS_CLIP,
     42         SS_CLIR,
     43         SS_COLP,
     44         SS_COLR,
     45         SS_WAIT,
     46         SS_BAOC,
     47         SS_BAOIC,
     48         SS_BAOIC_EXC_HOME,
     49         SS_BAIC,
     50         SS_BAIC_ROAMING,
     51         SS_ALL_BARRING,
     52         SS_OUTGOING_BARRING,
     53         SS_INCOMING_BARRING;
     54 
     55         public boolean isTypeCF() {
     56             return (this == SS_CFU || this == SS_CF_BUSY || this == SS_CF_NO_REPLY ||
     57                   this == SS_CF_NOT_REACHABLE || this == SS_CF_ALL ||
     58                   this == SS_CF_ALL_CONDITIONAL);
     59         }
     60 
     61         public boolean isTypeUnConditional() {
     62             return (this == SS_CFU || this == SS_CF_ALL);
     63         }
     64 
     65         public boolean isTypeCW() {
     66             return (this == SS_WAIT);
     67         }
     68 
     69         public boolean isTypeClip() {
     70             return (this == SS_CLIP);
     71         }
     72 
     73         public boolean isTypeClir() {
     74             return (this == SS_CLIR);
     75         }
     76 
     77         public boolean isTypeBarring() {
     78             return (this == SS_BAOC || this == SS_BAOIC || this == SS_BAOIC_EXC_HOME ||
     79                   this == SS_BAIC || this == SS_BAIC_ROAMING || this == SS_ALL_BARRING ||
     80                   this == SS_OUTGOING_BARRING || this == SS_INCOMING_BARRING);
     81         }
     82     };
     83 
     84     public enum RequestType {
     85         SS_ACTIVATION,
     86         SS_DEACTIVATION,
     87         SS_INTERROGATION,
     88         SS_REGISTRATION,
     89         SS_ERASURE;
     90 
     91         public boolean isTypeInterrogation() {
     92             return (this == SS_INTERROGATION);
     93         }
     94     };
     95 
     96     public enum TeleserviceType {
     97         SS_ALL_TELE_AND_BEARER_SERVICES,
     98         SS_ALL_TELESEVICES,
     99         SS_TELEPHONY,
    100         SS_ALL_DATA_TELESERVICES,
    101         SS_SMS_SERVICES,
    102         SS_ALL_TELESERVICES_EXCEPT_SMS;
    103     };
    104 
    105     public ServiceType serviceType;
    106     public RequestType requestType;
    107     public TeleserviceType teleserviceType;
    108     public int serviceClass;
    109     public int result;
    110 
    111     public int[] ssInfo; /* This is the response data for most of the SS GET/SET
    112                             RIL requests. E.g. RIL_REQUSET_GET_CLIR returns
    113                             two ints, so first two values of ssInfo[] will be
    114                             used for respone if serviceType is SS_CLIR and
    115                             requestType is SS_INTERROGATION */
    116 
    117     public CallForwardInfo[] cfInfo; /* This is the response data for SS request
    118                                         to query call forward status. see
    119                                         RIL_REQUEST_QUERY_CALL_FORWARD_STATUS */
    120 
    121     public ServiceType ServiceTypeFromRILInt(int type) {
    122         try {
    123             return ServiceType.values()[type];
    124         } catch (IndexOutOfBoundsException e) {
    125             Rlog.e(GsmCdmaPhone.LOG_TAG, "Invalid Service type");
    126             return null;
    127         }
    128     }
    129 
    130     public RequestType RequestTypeFromRILInt(int type) {
    131         try {
    132             return RequestType.values()[type];
    133         } catch (IndexOutOfBoundsException e) {
    134             Rlog.e(GsmCdmaPhone.LOG_TAG, "Invalid Request type");
    135             return null;
    136         }
    137     }
    138 
    139     public TeleserviceType TeleserviceTypeFromRILInt(int type) {
    140         try {
    141             return TeleserviceType.values()[type];
    142         } catch (IndexOutOfBoundsException e) {
    143             Rlog.e(GsmCdmaPhone.LOG_TAG, "Invalid Teleservice type");
    144             return null;
    145         }
    146     }
    147 
    148     public String toString() {
    149         return "[SsData] " + "ServiceType: " + serviceType
    150             + " RequestType: " + requestType
    151             + " TeleserviceType: " + teleserviceType
    152             + " ServiceClass: " + serviceClass
    153             + " Result: " + result
    154             + " Is Service Type CF: " + serviceType.isTypeCF();
    155     }
    156 }
    157