• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2006 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.cat;
18 
19 
20 /**
21  * Class for errors in the Result object.
22  *
23  * {@hide}
24  */
25 public class ResultException extends CatException {
26     private ResultCode mResult;
27     private int mAdditionalInfo;
28     private String mExplanation;
29 
ResultException(ResultCode result)30     public ResultException(ResultCode result) {
31         super();
32 
33         // ETSI TS 102 223, 8.12 -- For the general results '20', '21', '26',
34         // '38', '39', '3A', '3C', and '3D', it is mandatory for the terminal
35         // to provide a specific cause value as additional information.
36         switch (result) {
37             case TERMINAL_CRNTLY_UNABLE_TO_PROCESS:    // 0x20
38             case NETWORK_CRNTLY_UNABLE_TO_PROCESS:     // 0x21
39             case LAUNCH_BROWSER_ERROR:                 // 0x26
40             case MULTI_CARDS_CMD_ERROR:                // 0x38
41             case USIM_CALL_CONTROL_PERMANENT:          // 0x39
42             case BIP_ERROR:                            // 0x3a
43             case FRAMES_ERROR:                         // 0x3c
44             case MMS_ERROR:                            // 0x3d
45                 throw new AssertionError(
46                         "For result code, " + result +
47                         ", additional information must be given!");
48             default:
49                 break;
50         }
51 
52         mResult = result;
53         mAdditionalInfo = -1;
54         mExplanation = "";
55     }
56 
ResultException(ResultCode result, String explanation)57     public ResultException(ResultCode result, String explanation) {
58         this(result);
59         mExplanation = explanation;
60     }
61 
ResultException(ResultCode result, int additionalInfo)62     public ResultException(ResultCode result, int additionalInfo) {
63         this(result);
64 
65         if (additionalInfo < 0) {
66             throw new AssertionError(
67                     "Additional info must be greater than zero!");
68         }
69 
70         mAdditionalInfo = additionalInfo;
71     }
72 
ResultException(ResultCode result, int additionalInfo, String explanation)73     public ResultException(ResultCode result, int additionalInfo, String explanation) {
74         this(result, additionalInfo);
75         mExplanation = explanation;
76     }
77 
result()78     public ResultCode result() {
79         return mResult;
80     }
81 
hasAdditionalInfo()82     public boolean hasAdditionalInfo() {
83         return mAdditionalInfo >= 0;
84     }
85 
additionalInfo()86     public int additionalInfo() {
87         return mAdditionalInfo;
88     }
89 
explanation()90     public String explanation() {
91         return mExplanation;
92     }
93 
94     @Override
toString()95     public String toString() {
96         return "result=" + mResult + " additionalInfo=" + mAdditionalInfo +
97                 " explantion=" + mExplanation;
98     }
99 }
100