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 3322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville private String mOperatorAlphaLong; 3422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville private String mOperatorAlphaShort; 3522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville private String mOperatorNumeric; 360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville private State mState = State.UNKNOWN; 380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String 410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getOperatorAlphaLong() { 4222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville return mOperatorAlphaLong; 430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String 460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getOperatorAlphaShort() { 4722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville return mOperatorAlphaShort; 480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String 510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getOperatorNumeric() { 5222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville return mOperatorNumeric; 530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public State 560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getState() { 5722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville return mState; 580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville OperatorInfo(String operatorAlphaLong, 610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String operatorAlphaShort, 620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String operatorNumeric, 630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville State state) { 640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mOperatorAlphaLong = operatorAlphaLong; 6622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mOperatorAlphaShort = operatorAlphaShort; 6722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mOperatorNumeric = operatorNumeric; 680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mState = 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 100cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String toString() { 10222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville return "OperatorInfo " + mOperatorAlphaLong 10322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville + "/" + mOperatorAlphaShort 10422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville + "/" + mOperatorNumeric 10522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville + "/" + mState; 1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Parcelable interface implemented below. 1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * This is a simple effort to make OperatorInfo parcelable rather than 1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * trying to make the conventional containing object (AsyncResult), 1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * implement parcelable. This functionality is needed for the 1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * NetworkQueryService to fix 1128695. 1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 116cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public int describeContents() { 1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 0; 1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Implement the Parcelable interface. 1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Method to serialize a OperatorInfo object. 1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 125cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void writeToParcel(Parcel dest, int flags) { 12722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville dest.writeString(mOperatorAlphaLong); 12822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville dest.writeString(mOperatorAlphaShort); 12922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville dest.writeString(mOperatorNumeric); 13022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville dest.writeSerializable(mState); 1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Implement the Parcelable interface 1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Method to deserialize a OperatorInfo object, or an array thereof. 1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public static final Creator<OperatorInfo> CREATOR = 1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new Creator<OperatorInfo>() { 139cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public OperatorInfo createFromParcel(Parcel in) { 1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville OperatorInfo opInfo = new OperatorInfo( 1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville in.readString(), /*operatorAlphaLong*/ 1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville in.readString(), /*operatorAlphaShort*/ 1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville in.readString(), /*operatorNumeric*/ 1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville (State) in.readSerializable()); /*state*/ 1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return opInfo; 1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 149cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public OperatorInfo[] newArray(int size) { 1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return new OperatorInfo[size]; 1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }; 1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 155