1/*
2 * Copyright (C) 2011 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
17package com.android.phone;
18
19/**
20 * App-wide constants and enums for the phone app.
21 *
22 * Any constants that need to be shared between two or more classes within
23 * the com.android.phone package should be defined here.  (Constants that
24 * are private to only one class can go in that class's .java file.)
25 */
26public class Constants {
27
28    /**
29     * Complete list of error / diagnostic indications we might possibly
30     * need to present to the user.
31     *
32     * This enum is basically a high-level list of the kinds of failures
33     * or "exceptional conditions" that can occur when making a phone
34     * call.  When an error occurs, the CallController stashes away one of
35     * these codes in the InCallUiState.pendingCallStatusCode flag and
36     * launches the InCallScreen; the InCallScreen will then display some
37     * kind of message to the user (usually an error dialog) explaining
38     * what happened.
39     *
40     * The enum values here cover all possible result status / error
41     * conditions that can happen when attempting to place an outgoing
42     * call (see CallController.placeCall() and placeCallInternal()), as
43     * well as some other conditions (like CDMA_CALL_LOST and EXITED_ECM)
44     * that don't technically result from the placeCall() sequence but
45     * still need to be communicated to the user.
46     */
47    public enum CallStatusCode {
48        /**
49         * No error or exceptional condition occurred.
50         * The InCallScreen does not need to display any kind of alert to the user.
51         */
52        SUCCESS,
53
54        /**
55         * Radio is explictly powered off, presumably because the
56         * device is in airplane mode.
57         */
58        POWER_OFF,
59
60        /**
61         * Only emergency numbers are allowed, but we tried to dial
62         * a non-emergency number.
63         */
64        EMERGENCY_ONLY,
65
66        /**
67         * No network connection.
68         */
69        OUT_OF_SERVICE,
70
71        /**
72         * The supplied CALL Intent didn't contain a valid phone number.
73         */
74        NO_PHONE_NUMBER_SUPPLIED,
75
76        /**
77         * Our initial phone number was actually an MMI sequence.
78         */
79        DIALED_MMI,
80
81        /**
82         * We couldn't successfully place the call due to an
83         * unknown failure in the telephony layer.
84         */
85        CALL_FAILED,
86
87        /**
88         * We tried to call a voicemail: URI but the device has no
89         * voicemail number configured.
90         *
91         * When InCallUiState.pendingCallStatusCode is set to this
92         * value, the InCallScreen will bring up a UI explaining what
93         * happened, and allowing the user to go into Settings to fix the
94         * problem.
95         */
96        VOICEMAIL_NUMBER_MISSING,
97
98        /**
99         * This status indicates that InCallScreen should display the
100         * CDMA-specific "call lost" dialog.  (If an outgoing call fails,
101         * and the CDMA "auto-retry" feature is enabled, *and* the retried
102         * call fails too, we display this specific dialog.)
103         *
104         * TODO: this is currently unused, since the "call lost" dialog
105         * needs to be triggered by a *disconnect* event, rather than when
106         * the InCallScreen first comes to the foreground.  For now we use
107         * the needToShowCallLostDialog field for this (see below.)
108         */
109        CDMA_CALL_LOST,
110
111        /**
112         * This status indicates that the call was placed successfully,
113         * but additionally, the InCallScreen needs to display the
114         * "Exiting ECM" dialog.
115         *
116         * (Details: "Emergency callback mode" is a CDMA-specific concept
117         * where the phone disallows data connections over the cell
118         * network for some period of time after you make an emergency
119         * call.  If the phone is in ECM and you dial a non-emergency
120         * number, that automatically *cancels* ECM, but we additionally
121         * need to warn the user that ECM has been canceled (see bug
122         * 4207607.))
123         */
124        EXITED_ECM
125    }
126
127    //
128    // TODO: Move all the various EXTRA_* and intent action constants here too.
129    // (Currently they're all over the place: InCallScreen,
130    // OutgoingCallBroadcaster, OtaUtils, etc.)
131    //
132
133}
134