1d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal/* 2d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * Copyright (C) 2006 The Android Open Source Project 3d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * 4d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * Licensed under the Apache License, Version 2.0 (the "License"); 5d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * you may not use this file except in compliance with the License. 6d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * You may obtain a copy of the License at 7d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * 8d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * http://www.apache.org/licenses/LICENSE-2.0 9d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * 10d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * Unless required by applicable law or agreed to in writing, software 11d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * distributed under the License is distributed on an "AS IS" BASIS, 12d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * See the License for the specific language governing permissions and 14d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * limitations under the License. 15d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal */ 16d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 17d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawalpackage com.android.internal.telephony; 18d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 19d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawalimport android.os.Parcel; 20d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawalimport android.os.Parcelable; 21d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 22d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal/** 23d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * {@hide} 24d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal */ 25d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawalpublic class OperatorInfo implements Parcelable { 26d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal public enum State { 27d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal UNKNOWN, 28d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal AVAILABLE, 29d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal CURRENT, 30d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal FORBIDDEN; 31d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal } 32d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 33d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal private String mOperatorAlphaLong; 34d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal private String mOperatorAlphaShort; 35d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal private String mOperatorNumeric; 36d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 37d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal private State mState = State.UNKNOWN; 38d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 39d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 40d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal public String 41d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal getOperatorAlphaLong() { 42d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal return mOperatorAlphaLong; 43d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal } 44d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 45d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal public String 46d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal getOperatorAlphaShort() { 47d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal return mOperatorAlphaShort; 48d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal } 49d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 50d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal public String 51d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal getOperatorNumeric() { 52d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal return mOperatorNumeric; 53d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal } 54d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 55d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal public State 56d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal getState() { 57d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal return mState; 58d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal } 59d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 60d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal OperatorInfo(String operatorAlphaLong, 61d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal String operatorAlphaShort, 62d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal String operatorNumeric, 63d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal State state) { 64d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 65d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal mOperatorAlphaLong = operatorAlphaLong; 66d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal mOperatorAlphaShort = operatorAlphaShort; 67d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal mOperatorNumeric = operatorNumeric; 68d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 69d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal mState = state; 70d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal } 71d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 72d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 73d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal public OperatorInfo(String operatorAlphaLong, 74d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal String operatorAlphaShort, 75d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal String operatorNumeric, 76d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal String stateString) { 77d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal this (operatorAlphaLong, operatorAlphaShort, 78d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal operatorNumeric, rilStateToState(stateString)); 79d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal } 80d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 81d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal public OperatorInfo(String operatorAlphaLong, 82d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal String operatorAlphaShort, 83d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal String operatorNumeric) { 84d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal this(operatorAlphaLong, operatorAlphaShort, operatorNumeric, State.UNKNOWN); 85d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal } 86d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 87d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal /** 88d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * See state strings defined in ril.h RIL_REQUEST_QUERY_AVAILABLE_NETWORKS 89d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal */ 90d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal private static State rilStateToState(String s) { 91d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal if (s.equals("unknown")) { 92d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal return State.UNKNOWN; 93d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal } else if (s.equals("available")) { 94d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal return State.AVAILABLE; 95d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal } else if (s.equals("current")) { 96d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal return State.CURRENT; 97d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal } else if (s.equals("forbidden")) { 98d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal return State.FORBIDDEN; 99d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal } else { 100d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal throw new RuntimeException( 101d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal "RIL impl error: Invalid network state '" + s + "'"); 102d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal } 103d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal } 104d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 105d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 106d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal @Override 107d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal public String toString() { 108d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal return "OperatorInfo " + mOperatorAlphaLong 109d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal + "/" + mOperatorAlphaShort 110d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal + "/" + mOperatorNumeric 111d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal + "/" + mState; 112d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal } 113d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 114d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal /** 115d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * Parcelable interface implemented below. 116d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * This is a simple effort to make OperatorInfo parcelable rather than 117d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * trying to make the conventional containing object (AsyncResult), 118d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * implement parcelable. This functionality is needed for the 119d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * NetworkQueryService to fix 1128695. 120d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal */ 121d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 122d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal @Override 123d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal public int describeContents() { 124d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal return 0; 125d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal } 126d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 127d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal /** 128d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * Implement the Parcelable interface. 129d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * Method to serialize a OperatorInfo object. 130d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal */ 131d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal @Override 132d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal public void writeToParcel(Parcel dest, int flags) { 133d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal dest.writeString(mOperatorAlphaLong); 134d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal dest.writeString(mOperatorAlphaShort); 135d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal dest.writeString(mOperatorNumeric); 136d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal dest.writeSerializable(mState); 137d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal } 138d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 139d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal /** 140d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * Implement the Parcelable interface 141d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal * Method to deserialize a OperatorInfo object, or an array thereof. 142d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal */ 143d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal public static final Creator<OperatorInfo> CREATOR = 144d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal new Creator<OperatorInfo>() { 145d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal @Override 146d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal public OperatorInfo createFromParcel(Parcel in) { 147d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal OperatorInfo opInfo = new OperatorInfo( 148d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal in.readString(), /*operatorAlphaLong*/ 149d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal in.readString(), /*operatorAlphaShort*/ 150d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal in.readString(), /*operatorNumeric*/ 151d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal (State) in.readSerializable()); /*state*/ 152d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal return opInfo; 153d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal } 154d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal 155d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal @Override 156d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal public OperatorInfo[] newArray(int size) { 157d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal return new OperatorInfo[size]; 158d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal } 159d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal }; 160d4f2bcdab5a43e6439babfd5eefeaff908b73870Shishir Agrawal} 161