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