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