Home | History | Annotate | Download | only in telephony
      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;
     18 
     19 import android.telephony.Rlog;
     20 
     21 /**
     22  * {@hide}
     23  */
     24 public class CommandException extends RuntimeException {
     25     private Error mError;
     26 
     27     public enum Error {
     28         INVALID_RESPONSE,
     29         RADIO_NOT_AVAILABLE,
     30         GENERIC_FAILURE,
     31         PASSWORD_INCORRECT,
     32         SIM_PIN2,
     33         SIM_PUK2,
     34         REQUEST_NOT_SUPPORTED,
     35         OP_NOT_ALLOWED_DURING_VOICE_CALL,
     36         OP_NOT_ALLOWED_BEFORE_REG_NW,
     37         SMS_FAIL_RETRY,
     38         SIM_ABSENT,
     39         SUBSCRIPTION_NOT_AVAILABLE,
     40         MODE_NOT_SUPPORTED,
     41         FDN_CHECK_FAILURE,
     42         ILLEGAL_SIM_OR_ME,
     43         MISSING_RESOURCE,
     44         NO_SUCH_ELEMENT,
     45         SUBSCRIPTION_NOT_SUPPORTED,
     46         DIAL_MODIFIED_TO_USSD,
     47         DIAL_MODIFIED_TO_SS,
     48         DIAL_MODIFIED_TO_DIAL,
     49         USSD_MODIFIED_TO_DIAL,
     50         USSD_MODIFIED_TO_SS,
     51         USSD_MODIFIED_TO_USSD,
     52         SS_MODIFIED_TO_DIAL,
     53         SS_MODIFIED_TO_DIAL_VIDEO,
     54         SS_MODIFIED_TO_USSD,
     55         SS_MODIFIED_TO_SS,
     56         SIM_ALREADY_POWERED_OFF,
     57         SIM_ALREADY_POWERED_ON,
     58         SIM_DATA_NOT_AVAILABLE,
     59         SIM_SAP_CONNECT_FAILURE,
     60         SIM_SAP_MSG_SIZE_TOO_LARGE,
     61         SIM_SAP_MSG_SIZE_TOO_SMALL,
     62         SIM_SAP_CONNECT_OK_CALL_ONGOING,
     63         LCE_NOT_SUPPORTED,
     64         NO_MEMORY,
     65         INTERNAL_ERR,
     66         SYSTEM_ERR,
     67         MODEM_ERR,
     68         INVALID_STATE,
     69         NO_RESOURCES,
     70         SIM_ERR,
     71         INVALID_ARGUMENTS,
     72         INVALID_SIM_STATE,
     73         INVALID_MODEM_STATE,
     74         INVALID_CALL_ID,
     75         NO_SMS_TO_ACK,
     76         NETWORK_ERR,
     77         REQUEST_RATE_LIMITED,
     78         SIM_BUSY,
     79         SIM_FULL,
     80         NETWORK_REJECT,
     81         OPERATION_NOT_ALLOWED,
     82         EMPTY_RECORD,
     83         INVALID_SMS_FORMAT,
     84         ENCODING_ERR,
     85         INVALID_SMSC_ADDRESS,
     86         NO_SUCH_ENTRY,
     87         NETWORK_NOT_READY,
     88         NOT_PROVISIONED,
     89         NO_SUBSCRIPTION,
     90         NO_NETWORK_FOUND,
     91         DEVICE_IN_USE,
     92         ABORTED,
     93         OEM_ERROR_1,
     94         OEM_ERROR_2,
     95         OEM_ERROR_3,
     96         OEM_ERROR_4,
     97         OEM_ERROR_5,
     98         OEM_ERROR_6,
     99         OEM_ERROR_7,
    100         OEM_ERROR_8,
    101         OEM_ERROR_9,
    102         OEM_ERROR_10,
    103         OEM_ERROR_11,
    104         OEM_ERROR_12,
    105         OEM_ERROR_13,
    106         OEM_ERROR_14,
    107         OEM_ERROR_15,
    108         OEM_ERROR_16,
    109         OEM_ERROR_17,
    110         OEM_ERROR_18,
    111         OEM_ERROR_19,
    112         OEM_ERROR_20,
    113         OEM_ERROR_21,
    114         OEM_ERROR_22,
    115         OEM_ERROR_23,
    116         OEM_ERROR_24,
    117         OEM_ERROR_25,
    118     }
    119 
    120     public CommandException(Error e) {
    121         super(e.toString());
    122         mError = e;
    123     }
    124 
    125     public CommandException(Error e, String errString) {
    126         super(errString);
    127         mError = e;
    128     }
    129 
    130     public static CommandException
    131     fromRilErrno(int ril_errno) {
    132         switch(ril_errno) {
    133             case RILConstants.SUCCESS:                       return null;
    134             case RILConstants.RIL_ERRNO_INVALID_RESPONSE:
    135                 return new CommandException(Error.INVALID_RESPONSE);
    136             case RILConstants.RADIO_NOT_AVAILABLE:
    137                 return new CommandException(Error.RADIO_NOT_AVAILABLE);
    138             case RILConstants.GENERIC_FAILURE:
    139                 return new CommandException(Error.GENERIC_FAILURE);
    140             case RILConstants.PASSWORD_INCORRECT:
    141                 return new CommandException(Error.PASSWORD_INCORRECT);
    142             case RILConstants.SIM_PIN2:
    143                 return new CommandException(Error.SIM_PIN2);
    144             case RILConstants.SIM_PUK2:
    145                 return new CommandException(Error.SIM_PUK2);
    146             case RILConstants.REQUEST_NOT_SUPPORTED:
    147                 return new CommandException(Error.REQUEST_NOT_SUPPORTED);
    148             case RILConstants.OP_NOT_ALLOWED_DURING_VOICE_CALL:
    149                 return new CommandException(Error.OP_NOT_ALLOWED_DURING_VOICE_CALL);
    150             case RILConstants.OP_NOT_ALLOWED_BEFORE_REG_NW:
    151                 return new CommandException(Error.OP_NOT_ALLOWED_BEFORE_REG_NW);
    152             case RILConstants.SMS_SEND_FAIL_RETRY:
    153                 return new CommandException(Error.SMS_FAIL_RETRY);
    154             case RILConstants.SIM_ABSENT:
    155                 return new CommandException(Error.SIM_ABSENT);
    156             case RILConstants.SUBSCRIPTION_NOT_AVAILABLE:
    157                 return new CommandException(Error.SUBSCRIPTION_NOT_AVAILABLE);
    158             case RILConstants.MODE_NOT_SUPPORTED:
    159                 return new CommandException(Error.MODE_NOT_SUPPORTED);
    160             case RILConstants.FDN_CHECK_FAILURE:
    161                 return new CommandException(Error.FDN_CHECK_FAILURE);
    162             case RILConstants.ILLEGAL_SIM_OR_ME:
    163                 return new CommandException(Error.ILLEGAL_SIM_OR_ME);
    164             case RILConstants.MISSING_RESOURCE:
    165                 return new CommandException(Error.MISSING_RESOURCE);
    166             case RILConstants.NO_SUCH_ELEMENT:
    167                 return new CommandException(Error.NO_SUCH_ELEMENT);
    168             case RILConstants.SUBSCRIPTION_NOT_SUPPORTED:
    169                 return new CommandException(Error.SUBSCRIPTION_NOT_SUPPORTED);
    170             case RILConstants.DIAL_MODIFIED_TO_USSD:
    171                 return new CommandException(Error.DIAL_MODIFIED_TO_USSD);
    172             case RILConstants.DIAL_MODIFIED_TO_SS:
    173                 return new CommandException(Error.DIAL_MODIFIED_TO_SS);
    174             case RILConstants.DIAL_MODIFIED_TO_DIAL:
    175                 return new CommandException(Error.DIAL_MODIFIED_TO_DIAL);
    176             case RILConstants.USSD_MODIFIED_TO_DIAL:
    177                 return new CommandException(Error.USSD_MODIFIED_TO_DIAL);
    178             case RILConstants.USSD_MODIFIED_TO_SS:
    179                 return new CommandException(Error.USSD_MODIFIED_TO_SS);
    180             case RILConstants.USSD_MODIFIED_TO_USSD:
    181                 return new CommandException(Error.USSD_MODIFIED_TO_USSD);
    182             case RILConstants.SS_MODIFIED_TO_DIAL:
    183                 return new CommandException(Error.SS_MODIFIED_TO_DIAL);
    184             case RILConstants.SS_MODIFIED_TO_USSD:
    185                 return new CommandException(Error.SS_MODIFIED_TO_USSD);
    186             case RILConstants.SS_MODIFIED_TO_SS:
    187                 return new CommandException(Error.SS_MODIFIED_TO_SS);
    188             case RILConstants.SIM_ALREADY_POWERED_OFF:
    189                 return new CommandException(Error.SIM_ALREADY_POWERED_OFF);
    190             case RILConstants.SIM_ALREADY_POWERED_ON:
    191                 return new CommandException(Error.SIM_ALREADY_POWERED_ON);
    192             case RILConstants.SIM_DATA_NOT_AVAILABLE:
    193                 return new CommandException(Error.SIM_DATA_NOT_AVAILABLE);
    194             case RILConstants.SIM_SAP_CONNECT_FAILURE:
    195                 return new CommandException(Error.SIM_SAP_CONNECT_FAILURE);
    196             case RILConstants.SIM_SAP_MSG_SIZE_TOO_LARGE:
    197                 return new CommandException(Error.SIM_SAP_MSG_SIZE_TOO_LARGE);
    198             case RILConstants.SIM_SAP_MSG_SIZE_TOO_SMALL:
    199                 return new CommandException(Error.SIM_SAP_MSG_SIZE_TOO_SMALL);
    200             case RILConstants.SIM_SAP_CONNECT_OK_CALL_ONGOING:
    201                 return new CommandException(Error.SIM_SAP_CONNECT_OK_CALL_ONGOING);
    202             case RILConstants.LCE_NOT_SUPPORTED:
    203                 return new CommandException(Error.LCE_NOT_SUPPORTED);
    204             case RILConstants.NO_MEMORY:
    205                 return new CommandException(Error.NO_MEMORY);
    206             case RILConstants.INTERNAL_ERR:
    207                 return new CommandException(Error.INTERNAL_ERR);
    208             case RILConstants.SYSTEM_ERR:
    209                 return new CommandException(Error.SYSTEM_ERR);
    210             case RILConstants.MODEM_ERR:
    211                 return new CommandException(Error.MODEM_ERR);
    212             case RILConstants.INVALID_STATE:
    213                 return new CommandException(Error.INVALID_STATE);
    214             case RILConstants.NO_RESOURCES:
    215                 return new CommandException(Error.NO_RESOURCES);
    216             case RILConstants.SIM_ERR:
    217                 return new CommandException(Error.SIM_ERR);
    218             case RILConstants.INVALID_ARGUMENTS:
    219                 return new CommandException(Error.INVALID_ARGUMENTS);
    220             case RILConstants.INVALID_SIM_STATE:
    221                 return new CommandException(Error.INVALID_SIM_STATE);
    222             case RILConstants.INVALID_MODEM_STATE:
    223                 return new CommandException(Error.INVALID_MODEM_STATE);
    224             case RILConstants.INVALID_CALL_ID:
    225                 return new CommandException(Error.INVALID_CALL_ID);
    226             case RILConstants.NO_SMS_TO_ACK:
    227                 return new CommandException(Error.NO_SMS_TO_ACK);
    228             case RILConstants.NETWORK_ERR:
    229                 return new CommandException(Error.NETWORK_ERR);
    230             case RILConstants.REQUEST_RATE_LIMITED:
    231                 return new CommandException(Error.REQUEST_RATE_LIMITED);
    232             case RILConstants.SIM_BUSY:
    233                 return new CommandException(Error.SIM_BUSY);
    234             case RILConstants.SIM_FULL:
    235                 return new CommandException(Error.SIM_FULL);
    236             case RILConstants.NETWORK_REJECT:
    237                 return new CommandException(Error.NETWORK_REJECT);
    238             case RILConstants.OPERATION_NOT_ALLOWED:
    239                 return new CommandException(Error.OPERATION_NOT_ALLOWED);
    240             case RILConstants.EMPTY_RECORD:
    241                 return new CommandException(Error.EMPTY_RECORD);
    242             case RILConstants.INVALID_SMS_FORMAT:
    243                 return new CommandException(Error.INVALID_SMS_FORMAT);
    244             case RILConstants.ENCODING_ERR:
    245                 return new CommandException(Error.ENCODING_ERR);
    246             case RILConstants.INVALID_SMSC_ADDRESS:
    247                 return new CommandException(Error.INVALID_SMSC_ADDRESS);
    248             case RILConstants.NO_SUCH_ENTRY:
    249                 return new CommandException(Error.NO_SUCH_ENTRY);
    250             case RILConstants.NETWORK_NOT_READY:
    251                 return new CommandException(Error.NETWORK_NOT_READY);
    252             case RILConstants.NOT_PROVISIONED:
    253                 return new CommandException(Error.NOT_PROVISIONED);
    254             case RILConstants.NO_SUBSCRIPTION:
    255                 return new CommandException(Error.NO_SUBSCRIPTION);
    256             case RILConstants.NO_NETWORK_FOUND:
    257                 return new CommandException(Error.NO_NETWORK_FOUND);
    258             case RILConstants.DEVICE_IN_USE:
    259                 return new CommandException(Error.DEVICE_IN_USE);
    260             case RILConstants.ABORTED:
    261                 return new CommandException(Error.ABORTED);
    262             case RILConstants.INVALID_RESPONSE:
    263                 return new CommandException(Error.INVALID_RESPONSE);
    264             case RILConstants.OEM_ERROR_1:
    265                 return new CommandException(Error.OEM_ERROR_1);
    266             case RILConstants.OEM_ERROR_2:
    267                 return new CommandException(Error.OEM_ERROR_2);
    268             case RILConstants.OEM_ERROR_3:
    269                 return new CommandException(Error.OEM_ERROR_3);
    270             case RILConstants.OEM_ERROR_4:
    271                 return new CommandException(Error.OEM_ERROR_4);
    272             case RILConstants.OEM_ERROR_5:
    273                 return new CommandException(Error.OEM_ERROR_5);
    274             case RILConstants.OEM_ERROR_6:
    275                 return new CommandException(Error.OEM_ERROR_6);
    276             case RILConstants.OEM_ERROR_7:
    277                 return new CommandException(Error.OEM_ERROR_7);
    278             case RILConstants.OEM_ERROR_8:
    279                 return new CommandException(Error.OEM_ERROR_8);
    280             case RILConstants.OEM_ERROR_9:
    281                 return new CommandException(Error.OEM_ERROR_9);
    282             case RILConstants.OEM_ERROR_10:
    283                 return new CommandException(Error.OEM_ERROR_10);
    284             case RILConstants.OEM_ERROR_11:
    285                 return new CommandException(Error.OEM_ERROR_11);
    286             case RILConstants.OEM_ERROR_12:
    287                 return new CommandException(Error.OEM_ERROR_12);
    288             case RILConstants.OEM_ERROR_13:
    289                 return new CommandException(Error.OEM_ERROR_13);
    290             case RILConstants.OEM_ERROR_14:
    291                 return new CommandException(Error.OEM_ERROR_14);
    292             case RILConstants.OEM_ERROR_15:
    293                 return new CommandException(Error.OEM_ERROR_15);
    294             case RILConstants.OEM_ERROR_16:
    295                 return new CommandException(Error.OEM_ERROR_16);
    296             case RILConstants.OEM_ERROR_17:
    297                 return new CommandException(Error.OEM_ERROR_17);
    298             case RILConstants.OEM_ERROR_18:
    299                 return new CommandException(Error.OEM_ERROR_18);
    300             case RILConstants.OEM_ERROR_19:
    301                 return new CommandException(Error.OEM_ERROR_19);
    302             case RILConstants.OEM_ERROR_20:
    303                 return new CommandException(Error.OEM_ERROR_20);
    304             case RILConstants.OEM_ERROR_21:
    305                 return new CommandException(Error.OEM_ERROR_21);
    306             case RILConstants.OEM_ERROR_22:
    307                 return new CommandException(Error.OEM_ERROR_22);
    308             case RILConstants.OEM_ERROR_23:
    309                 return new CommandException(Error.OEM_ERROR_23);
    310             case RILConstants.OEM_ERROR_24:
    311                 return new CommandException(Error.OEM_ERROR_24);
    312             case RILConstants.OEM_ERROR_25:
    313                 return new CommandException(Error.OEM_ERROR_25);
    314 
    315             default:
    316                 Rlog.e("GSM", "Unrecognized RIL errno " + ril_errno);
    317                 return new CommandException(Error.INVALID_RESPONSE);
    318         }
    319     }
    320 
    321     public Error getCommandError() {
    322         return mError;
    323     }
    324 
    325 
    326 
    327 }
    328