17d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/*
27d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Copyright (C) 2011 The Android Open Source Project
37d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon *
47d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Licensed under the Apache License, Version 2.0 (the "License");
57d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * you may not use this file except in compliance with the License.
67d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * You may obtain a copy of the License at
77d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon *
87d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon *      http://www.apache.org/licenses/LICENSE-2.0
97d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon *
107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Unless required by applicable law or agreed to in writing, software
117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * distributed under the License is distributed on an "AS IS" BASIS,
127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * See the License for the specific language governing permissions and
147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * limitations under the License.
157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */
167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonpackage com.android.phone;
187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/**
207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * App-wide constants and enums for the phone app.
217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon *
227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Any constants that need to be shared between two or more classes within
237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * the com.android.phone package should be defined here.  (Constants that
247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * are private to only one class can go in that class's .java file.)
257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */
267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonpublic class Constants {
277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    /**
297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     * Complete list of error / diagnostic indications we might possibly
307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     * need to present to the user.
317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     *
327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     * This enum is basically a high-level list of the kinds of failures
337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     * or "exceptional conditions" that can occur when making a phone
347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     * call.  When an error occurs, the CallController stashes away one of
357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     * these codes in the InCallUiState.pendingCallStatusCode flag and
367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     * launches the InCallScreen; the InCallScreen will then display some
377d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     * kind of message to the user (usually an error dialog) explaining
387d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     * what happened.
397d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     *
407d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     * The enum values here cover all possible result status / error
417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     * conditions that can happen when attempting to place an outgoing
427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     * call (see CallController.placeCall() and placeCallInternal()), as
437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     * well as some other conditions (like CDMA_CALL_LOST and EXITED_ECM)
447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     * that don't technically result from the placeCall() sequence but
457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     * still need to be communicated to the user.
467d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     */
477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    public enum CallStatusCode {
487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        /**
497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * No error or exceptional condition occurred.
507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * The InCallScreen does not need to display any kind of alert to the user.
517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         */
527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        SUCCESS,
537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        /**
557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * Radio is explictly powered off, presumably because the
567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * device is in airplane mode.
577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         */
587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        POWER_OFF,
597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        /**
617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * Only emergency numbers are allowed, but we tried to dial
627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * a non-emergency number.
637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         */
647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        EMERGENCY_ONLY,
657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        /**
677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * No network connection.
687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         */
697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        OUT_OF_SERVICE,
707d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
717d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        /**
727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * The supplied CALL Intent didn't contain a valid phone number.
737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         */
747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        NO_PHONE_NUMBER_SUPPLIED,
757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        /**
777d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * Our initial phone number was actually an MMI sequence.
787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         */
797d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        DIALED_MMI,
807d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
817d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        /**
827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * We couldn't successfully place the call due to an
837d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * unknown failure in the telephony layer.
847d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         */
857d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        CALL_FAILED,
867d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        /**
887d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * We tried to call a voicemail: URI but the device has no
897d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * voicemail number configured.
907d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         *
917d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * When InCallUiState.pendingCallStatusCode is set to this
927d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * value, the InCallScreen will bring up a UI explaining what
937d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * happened, and allowing the user to go into Settings to fix the
947d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * problem.
957d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         */
967d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        VOICEMAIL_NUMBER_MISSING,
977d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
987d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        /**
997d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * This status indicates that InCallScreen should display the
1007d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * CDMA-specific "call lost" dialog.  (If an outgoing call fails,
1017d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * and the CDMA "auto-retry" feature is enabled, *and* the retried
1027d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * call fails too, we display this specific dialog.)
1037d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         *
1047d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * TODO: this is currently unused, since the "call lost" dialog
1057d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * needs to be triggered by a *disconnect* event, rather than when
1067d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * the InCallScreen first comes to the foreground.  For now we use
1077d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * the needToShowCallLostDialog field for this (see below.)
1087d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         */
1097d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        CDMA_CALL_LOST,
1107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
1117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        /**
1127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * This status indicates that the call was placed successfully,
1137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * but additionally, the InCallScreen needs to display the
1147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * "Exiting ECM" dialog.
1157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         *
1167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * (Details: "Emergency callback mode" is a CDMA-specific concept
1177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * where the phone disallows data connections over the cell
1187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * network for some period of time after you make an emergency
1197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * call.  If the phone is in ECM and you dial a non-emergency
1207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * number, that automatically *cancels* ECM, but we additionally
1217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * need to warn the user that ECM has been canceled (see bug
1227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         * 4207607.))
1237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon         */
1247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        EXITED_ECM
1257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    }
1267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
1277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    //
1287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    // TODO: Move all the various EXTRA_* and intent action constants here too.
1297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    // (Currently they're all over the place: InCallScreen,
1307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    // OutgoingCallBroadcaster, OtaUtils, etc.)
1317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    //
1327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
1337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    // Dtmf tone type setting value for CDMA phone
1347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    public static final int DTMF_TONE_TYPE_NORMAL = 0;
1357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    public static final int DTMF_TONE_TYPE_LONG   = 1;
1367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon}
137