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 173caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwaltpackage com.android.internal.telephony; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide} 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 253caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwaltpublic class OperatorInfo implements Parcelable { 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public enum State { 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project UNKNOWN, 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project AVAILABLE, 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CURRENT, 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project FORBIDDEN; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 333caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt private String operatorAlphaLong; 343caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt private String operatorAlphaShort; 353caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt private String operatorNumeric; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 373caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt private State state = State.UNKNOWN; 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String 4104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville getOperatorAlphaLong() { 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return operatorAlphaLong; 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String 4604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville getOperatorAlphaShort() { 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return operatorAlphaShort; 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String 5104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville getOperatorNumeric() { 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return operatorNumeric; 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public State 5604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville getState() { 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return state; 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 603caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt OperatorInfo(String operatorAlphaLong, 6104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville String operatorAlphaShort, 6204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville String operatorNumeric, 6304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville State state) { 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.operatorAlphaLong = operatorAlphaLong; 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.operatorAlphaShort = operatorAlphaShort; 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.operatorNumeric = operatorNumeric; 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.state = state; 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 733caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt public OperatorInfo(String operatorAlphaLong, 7404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville String operatorAlphaShort, 7504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville String operatorNumeric, 7604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville String stateString) { 7704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville this (operatorAlphaLong, operatorAlphaShort, 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project operatorNumeric, rilStateToState(stateString)); 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See state strings defined in ril.h RIL_REQUEST_QUERY_AVAILABLE_NETWORKS 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville private static State rilStateToState(String s) { 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (s.equals("unknown")) { 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return State.UNKNOWN; 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (s.equals("available")) { 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return State.AVAILABLE; 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (s.equals("current")) { 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return State.CURRENT; 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (s.equals("forbidden")) { 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return State.FORBIDDEN; 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new RuntimeException( 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "RIL impl error: Invalid network state '" + s + "'"); 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public String toString() { 1013caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt return "OperatorInfo " + operatorAlphaLong 10204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville + "/" + operatorAlphaShort 10304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville + "/" + operatorNumeric 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + "/" + state; 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 10704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville /** 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Parcelable interface implemented below. 1093caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt * This is a simple effort to make OperatorInfo parcelable rather than 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * trying to make the conventional containing object (AsyncResult), 11104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * implement parcelable. This functionality is needed for the 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * NetworkQueryService to fix 1128695. 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville /** 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Implement the Parcelable interface. 1213caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt * Method to serialize a OperatorInfo object. 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int flags) { 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(operatorAlphaLong); 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(operatorAlphaShort); 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(operatorNumeric); 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeSerializable(state); 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville /** 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Implement the Parcelable interface 1323caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt * Method to deserialize a OperatorInfo object, or an array thereof. 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1343caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt public static final Creator<OperatorInfo> CREATOR = 1353caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt new Creator<OperatorInfo>() { 1363caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt public OperatorInfo createFromParcel(Parcel in) { 1373caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt OperatorInfo opInfo = new OperatorInfo( 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project in.readString(), /*operatorAlphaLong*/ 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project in.readString(), /*operatorAlphaShort*/ 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project in.readString(), /*operatorNumeric*/ 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project (State) in.readSerializable()); /*state*/ 1423caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt return opInfo; 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1453caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt public OperatorInfo[] newArray(int size) { 1463caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt return new OperatorInfo[size]; 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 150