10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2006 The Android Open Source Project 30825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * you may not use this file except in compliance with the License. 60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * You may obtain a copy of the License at 70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Unless required by applicable law or agreed to in writing, software 110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See the License for the specific language governing permissions and 140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * limitations under the License. 150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 170825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepackage com.android.internal.telephony; 180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 190825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Parcel; 200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Parcelable; 210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/** 230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@hide} 240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 250825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic class OperatorInfo implements Parcelable { 260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public enum State { 270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville UNKNOWN, 280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AVAILABLE, 290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CURRENT, 300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville FORBIDDEN; 310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private String operatorAlphaLong; 340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private String operatorAlphaShort; 350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private String operatorNumeric; 360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private State state = State.UNKNOWN; 380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String 410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getOperatorAlphaLong() { 420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return operatorAlphaLong; 430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String 460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getOperatorAlphaShort() { 470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return operatorAlphaShort; 480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String 510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getOperatorNumeric() { 520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return operatorNumeric; 530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public State 560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getState() { 570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return state; 580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville OperatorInfo(String operatorAlphaLong, 610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String operatorAlphaShort, 620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String operatorNumeric, 630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville State state) { 640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville this.operatorAlphaLong = operatorAlphaLong; 660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville this.operatorAlphaShort = operatorAlphaShort; 670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville this.operatorNumeric = operatorNumeric; 680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville this.state = state; 700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public OperatorInfo(String operatorAlphaLong, 740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String operatorAlphaShort, 750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String operatorNumeric, 760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String stateString) { 770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville this (operatorAlphaLong, operatorAlphaShort, 780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville operatorNumeric, rilStateToState(stateString)); 790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See state strings defined in ril.h RIL_REQUEST_QUERY_AVAILABLE_NETWORKS 830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static State rilStateToState(String s) { 850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (s.equals("unknown")) { 860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return State.UNKNOWN; 870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (s.equals("available")) { 880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return State.AVAILABLE; 890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (s.equals("current")) { 900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return State.CURRENT; 910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (s.equals("forbidden")) { 920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return State.FORBIDDEN; 930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "RIL impl error: Invalid network state '" + s + "'"); 960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String toString() { 1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return "OperatorInfo " + operatorAlphaLong 1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "/" + operatorAlphaShort 1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "/" + operatorNumeric 1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "/" + state; 1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Parcelable interface implemented below. 1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * This is a simple effort to make OperatorInfo parcelable rather than 1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * trying to make the conventional containing object (AsyncResult), 1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * implement parcelable. This functionality is needed for the 1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * NetworkQueryService to fix 1128695. 1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public int describeContents() { 1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 0; 1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Implement the Parcelable interface. 1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Method to serialize a OperatorInfo object. 1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void writeToParcel(Parcel dest, int flags) { 1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dest.writeString(operatorAlphaLong); 1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dest.writeString(operatorAlphaShort); 1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dest.writeString(operatorNumeric); 1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dest.writeSerializable(state); 1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Implement the Parcelable interface 1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Method to deserialize a OperatorInfo object, or an array thereof. 1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public static final Creator<OperatorInfo> CREATOR = 1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new Creator<OperatorInfo>() { 1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public OperatorInfo createFromParcel(Parcel in) { 1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville OperatorInfo opInfo = new OperatorInfo( 1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville in.readString(), /*operatorAlphaLong*/ 1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville in.readString(), /*operatorAlphaShort*/ 1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville in.readString(), /*operatorNumeric*/ 1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville (State) in.readSerializable()); /*state*/ 1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return opInfo; 1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public OperatorInfo[] newArray(int size) { 1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return new OperatorInfo[size]; 1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }; 1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 150