1 /*
2  * Copyright (C) 2007 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.internal.telephony.gsm;
18 
19 import android.telephony.PhoneNumberUtils;
20 
21 /**
22  * Represents a Supplementary Service Notification received from the network.
23  *
24  * {@hide}
25  */
26 public class SuppServiceNotification {
27     /** Type of notification: 0 = code1; 1 = code2 */
28     public int notificationType;
29     /** TS 27.007 7.17 "code1" or "code2" */
30     public int code;
31     /** TS 27.007 7.17 "index" */
32     public int index;
33     /** TS 27.007 7.17 "type" (MT only) */
34     public int type;
35     /** TS 27.007 7.17 "number" (MT only) */
36     public String number;
37 
38     /** List of forwarded numbers, if any */
39     public String[] history;
40 
41     /**
42      * Notification type is from the "code 1" group (per TS 27.007 7.17).
43      * This means the {@link #code} will be a code such as {@link #CODE_1_CALL_FORWARDED}.
44      */
45     public static final int NOTIFICATION_TYPE_CODE_1 = 0;
46 
47     /**
48      * Notification type is from the "code 2" group (per TS 27.007 7.17).
49      * This means the {@link #code} will be a code such as {@link #CODE_2_CALL_ON_HOLD}.
50      */
51     public static final int NOTIFICATION_TYPE_CODE_2 = 1;
52 
53     /**
54      * Indicates that unconditional call forwarding is active.
55      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_1}.
56      * See TS 27.007 7.17.
57      */
58     public static final int CODE_1_UNCONDITIONAL_CF_ACTIVE     = 0;
59 
60     /**
61      * Indicates that some conditional call forwarding options are active.
62      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_1}.
63      * See TS 27.007 7.17.
64      */
65     public static final int CODE_1_SOME_CF_ACTIVE              = 1;
66 
67     /**
68      * Indicates that an outgoing call has been forwarded to another number.
69      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_1}.
70      * See TS 27.007 7.17.
71      */
72     public static final int CODE_1_CALL_FORWARDED              = 2;
73 
74     /**
75      * Indicates that an outgoing call is waiting.  This means that the called party is already in
76      * another call and is hearing the call waiting tone.
77      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_1}.
78      * See TS 27.007 7.17.
79      */
80     public static final int CODE_1_CALL_IS_WAITING             = 3;
81 
82     /**
83      * Indicates that an outgoing call is to a number in a closed user group.
84      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_1}.
85      * See TS 27.007 7.17.
86      */
87     public static final int CODE_1_CUG_CALL                    = 4;
88 
89     /**
90      * Indicates that outgoing calls are barred.
91      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_1}.
92      * See TS 27.007 7.17.
93      */
94     public static final int CODE_1_OUTGOING_CALLS_BARRED       = 5;
95 
96     /**
97      * Indicates that incoming calls are barred.
98      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_1}.
99      * See TS 27.007 7.17.
100      */
101     public static final int CODE_1_INCOMING_CALLS_BARRED       = 6;
102 
103     /**
104      * Indicates that CLIR suppression has been rejected for an outgoing call.
105      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_1}.
106      * See TS 27.007 7.17.
107      */
108     public static final int CODE_1_CLIR_SUPPRESSION_REJECTED   = 7;
109 
110     /**
111      * Indicates that an outgoing call bas been deflected to another number.
112      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_1}.
113      * See TS 27.007 7.17.
114      */
115     public static final int CODE_1_CALL_DEFLECTED              = 8;
116 
117     /**
118      * Indicates that an incoming call is a forwarded call.
119      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_2}.
120      * See TS 27.007 7.17.
121      */
122     public static final int CODE_2_FORWARDED_CALL              = 0;
123 
124     /**
125      * Indicates that an incoming call is from a member of a closed user group.
126      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_2}.
127      * See TS 27.007 7.17.
128      */
129     public static final int CODE_2_CUG_CALL                    = 1;
130 
131     /**
132      * Indicates that a call has been remotely put on hold.
133      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_2}.
134      * See TS 27.007 7.17.
135      */
136     public static final int CODE_2_CALL_ON_HOLD                = 2;
137 
138     /**
139      * Indicates that a call has been remotely resumed (retrieved).
140      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_2}.
141      * See TS 27.007 7.17.
142      */
143     public static final int CODE_2_CALL_RETRIEVED              = 3;
144 
145     /**
146      * Indicates that a conference call has been entered.
147      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_2}.
148      * See TS 27.007 7.17.
149      */
150     public static final int CODE_2_MULTI_PARTY_CALL            = 4;
151 
152     /**
153      * Indicates that an ongoing call on hold has been released.
154      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_2}.
155      * See TS 27.007 7.17.
156      */
157     public static final int CODE_2_ON_HOLD_CALL_RELEASED       = 5;
158 
159     /**
160      * Indicates that a forward check message was received.
161      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_2}.
162      * See TS 27.007 7.17.
163      */
164     public static final int CODE_2_FORWARD_CHECK_RECEIVED      = 6;
165 
166     /**
167      * Indicates that a call is being connected (alerting) with another party as a result of an
168      * explicit call transfer operation.
169      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_2}.
170      * See TS 27.007 7.17.
171      */
172     public static final int CODE_2_CALL_CONNECTING_ECT         = 7;
173 
174     /**
175      * Indicates that a call has been connected with another party as a result of an explicit call
176      * transfer operation.
177      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_2}.
178      * See TS 27.007 7.17.
179      */
180     public static final int CODE_2_CALL_CONNECTED_ECT          = 8;
181 
182     /**
183      * Indicates that an outgoing call has been deflected to another number.
184      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_2}.
185      * See TS 27.007 7.17.
186      */
187     public static final int CODE_2_DEFLECTED_CALL              = 9;
188 
189     /**
190      * Indicates that an additional incoming call has been forwarded.
191      * Valid {@link #code} when {@link #type} is {@link #NOTIFICATION_TYPE_CODE_2}.
192      * See TS 27.007 7.17.
193      */
194     public static final int CODE_2_ADDITIONAL_CALL_FORWARDED   = 10;
195 
196     @Override
toString()197     public String toString()
198     {
199         return super.toString() + " mobile"
200             + (notificationType == 0 ? " originated " : " terminated ")
201             + " code: " + code
202             + " index: " + index
203             + " history: " + history
204             + " \""
205             + PhoneNumberUtils.stringFromStringAndTOA(number, type) + "\" ";
206     }
207 
208 }
209