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