19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Savillepackage com.android.internal.telephony; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide} 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class 2304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink SavilleIccIoResult { 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int sw1; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int sw2; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public byte[] payload; 2804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 2904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public IccIoResult(int sw1, int sw2, byte[] payload) { 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.sw1 = sw1; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.sw2 = sw2; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.payload = payload; 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public IccIoResult(int sw1, int sw2, String hexString) { 3604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville this(sw1, sw2, IccUtils.hexStringToBytes(hexString)); 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public String toString() { 4004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville return "IccIoResponse sw1:0x" + Integer.toHexString(sw1) + " sw2:0x" 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + Integer.toHexString(sw2); 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * true if this operation was successful 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See GSM 11.11 Section 9.4 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (the fun stuff is absent in 51.011) 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public boolean success() { 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return sw1 == 0x90 || sw1 == 0x91 || sw1 == 0x9e || sw1 == 0x9f; 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns exception on error or null if success 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public IccException getException() { 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (success()) return null; 5804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch (sw1) { 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 0x94: 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (sw2 == 0x08) { 6204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville return new IccFileTypeMismatch(); 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 6404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville return new IccFileNotFound(); 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project default: 6704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville return new IccException("sw1:" + sw1 + " sw2:" + sw2); 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 71