1/* 2 * Copyright (C) 2016 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.voicemail.impl; 18 19import android.support.annotation.IntDef; 20import java.lang.annotation.Retention; 21import java.lang.annotation.RetentionPolicy; 22 23/** 24 * Events internal to the OMTP client. These should be translated into {@link 25 * android.provider.VoicemailContract.Status} error codes before writing into the voicemail status 26 * table. 27 */ 28public enum OmtpEvents { 29 30 // Configuration State 31 CONFIG_REQUEST_STATUS_SUCCESS(Type.CONFIGURATION, true), 32 33 CONFIG_PIN_SET(Type.CONFIGURATION, true), 34 // The voicemail PIN is replaced with a generated PIN, user should change it. 35 CONFIG_DEFAULT_PIN_REPLACED(Type.CONFIGURATION, true), 36 CONFIG_ACTIVATING(Type.CONFIGURATION, true), 37 // There are already activation records, this is only a book-keeping activation. 38 CONFIG_ACTIVATING_SUBSEQUENT(Type.CONFIGURATION, true), 39 CONFIG_STATUS_SMS_TIME_OUT(Type.CONFIGURATION), 40 CONFIG_SERVICE_NOT_AVAILABLE(Type.CONFIGURATION), 41 42 // Data channel State 43 44 // A new sync has started, old errors in data channel should be cleared. 45 DATA_IMAP_OPERATION_STARTED(Type.DATA_CHANNEL, true), 46 // Successfully downloaded/uploaded data from the server, which means the data channel is clear. 47 DATA_IMAP_OPERATION_COMPLETED(Type.DATA_CHANNEL, true), 48 // The port provided in the STATUS SMS is invalid. 49 DATA_INVALID_PORT(Type.DATA_CHANNEL), 50 // No connection to the internet, and the carrier requires cellular data 51 DATA_NO_CONNECTION_CELLULAR_REQUIRED(Type.DATA_CHANNEL), 52 // No connection to the internet. 53 DATA_NO_CONNECTION(Type.DATA_CHANNEL), 54 // Address lookup for the server hostname failed. DNS error? 55 DATA_CANNOT_RESOLVE_HOST_ON_NETWORK(Type.DATA_CHANNEL), 56 // All destination address that resolves to the server hostname are rejected or timed out 57 DATA_ALL_SOCKET_CONNECTION_FAILED(Type.DATA_CHANNEL), 58 // Failed to establish SSL with the server, either with a direct SSL connection or by 59 // STARTTLS command 60 DATA_CANNOT_ESTABLISH_SSL_SESSION(Type.DATA_CHANNEL), 61 // Identity of the server cannot be verified. 62 DATA_SSL_INVALID_HOST_NAME(Type.DATA_CHANNEL), 63 // The server rejected our username/password 64 DATA_BAD_IMAP_CREDENTIAL(Type.DATA_CHANNEL), 65 66 DATA_AUTH_UNKNOWN_USER(Type.DATA_CHANNEL), 67 DATA_AUTH_UNKNOWN_DEVICE(Type.DATA_CHANNEL), 68 DATA_AUTH_INVALID_PASSWORD(Type.DATA_CHANNEL), 69 DATA_AUTH_MAILBOX_NOT_INITIALIZED(Type.DATA_CHANNEL), 70 DATA_AUTH_SERVICE_NOT_PROVISIONED(Type.DATA_CHANNEL), 71 DATA_AUTH_SERVICE_NOT_ACTIVATED(Type.DATA_CHANNEL), 72 DATA_AUTH_USER_IS_BLOCKED(Type.DATA_CHANNEL), 73 74 // A command to the server didn't result with an "OK" or continuation request 75 DATA_REJECTED_SERVER_RESPONSE(Type.DATA_CHANNEL), 76 // The server did not greet us with a "OK", possibly not a IMAP server. 77 DATA_INVALID_INITIAL_SERVER_RESPONSE(Type.DATA_CHANNEL), 78 // An IOException occurred while trying to open an ImapConnection 79 // TODO: reduce scope 80 DATA_IOE_ON_OPEN(Type.DATA_CHANNEL), 81 // The SELECT command on a mailbox is rejected 82 DATA_MAILBOX_OPEN_FAILED(Type.DATA_CHANNEL), 83 // An IOException has occurred 84 // TODO: reduce scope 85 DATA_GENERIC_IMAP_IOE(Type.DATA_CHANNEL), 86 // An SslException has occurred while opening an ImapConnection 87 // TODO: reduce scope 88 DATA_SSL_EXCEPTION(Type.DATA_CHANNEL), 89 90 // Notification Channel 91 92 // Cell signal restored, can received VVM SMSs 93 NOTIFICATION_IN_SERVICE(Type.NOTIFICATION_CHANNEL, true), 94 // Cell signal lost, cannot received VVM SMSs 95 NOTIFICATION_SERVICE_LOST(Type.NOTIFICATION_CHANNEL, false), 96 97 // Other 98 OTHER_SOURCE_REMOVED(Type.OTHER, false), 99 100 // VVM3 101 VVM3_NEW_USER_SETUP_FAILED, 102 // Table 4. client internal error handling 103 VVM3_VMG_DNS_FAILURE, 104 VVM3_SPG_DNS_FAILURE, 105 VVM3_VMG_CONNECTION_FAILED, 106 VVM3_SPG_CONNECTION_FAILED, 107 VVM3_VMG_TIMEOUT, 108 VVM3_STATUS_SMS_TIMEOUT, 109 110 VVM3_SUBSCRIBER_PROVISIONED, 111 VVM3_SUBSCRIBER_BLOCKED, 112 VVM3_SUBSCRIBER_UNKNOWN; 113 114 public static class Type { 115 116 @Retention(RetentionPolicy.SOURCE) 117 @IntDef({CONFIGURATION, DATA_CHANNEL, NOTIFICATION_CHANNEL, OTHER}) 118 public @interface Values {} 119 120 public static final int CONFIGURATION = 1; 121 public static final int DATA_CHANNEL = 2; 122 public static final int NOTIFICATION_CHANNEL = 3; 123 public static final int OTHER = 4; 124 } 125 126 private final int type; 127 private final boolean isSuccess; 128 129 OmtpEvents(int type, boolean isSuccess) { 130 this.type = type; 131 this.isSuccess = isSuccess; 132 } 133 134 OmtpEvents(int type) { 135 this.type = type; 136 isSuccess = false; 137 } 138 139 OmtpEvents() { 140 type = Type.OTHER; 141 isSuccess = false; 142 } 143 144 @Type.Values 145 public int getType() { 146 return type; 147 } 148 149 public boolean isSuccess() { 150 return isSuccess; 151 } 152} 153