/*
|
* Copyright (C) 2006 The Android Open Source Project
|
*
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
* you may not use this file except in compliance with the License.
|
* You may obtain a copy of the License at
|
*
|
* http://www.apache.org/licenses/LICENSE-2.0
|
*
|
* Unless required by applicable law or agreed to in writing, software
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the License for the specific language governing permissions and
|
* limitations under the License.
|
*/
|
|
package com.android.internal.telephony;
|
|
import android.annotation.UnsupportedAppUsage;
|
import android.os.Build;
|
import android.os.Parcel;
|
import android.os.Parcelable;
|
|
/**
|
* @hide
|
*/
|
public class OperatorInfo implements Parcelable {
|
public enum State {
|
UNKNOWN,
|
AVAILABLE,
|
@UnsupportedAppUsage
|
CURRENT,
|
@UnsupportedAppUsage
|
FORBIDDEN;
|
}
|
|
@UnsupportedAppUsage
|
private String mOperatorAlphaLong;
|
@UnsupportedAppUsage
|
private String mOperatorAlphaShort;
|
@UnsupportedAppUsage
|
private String mOperatorNumeric;
|
|
@UnsupportedAppUsage
|
private State mState = State.UNKNOWN;
|
|
|
@UnsupportedAppUsage
|
public String
|
getOperatorAlphaLong() {
|
return mOperatorAlphaLong;
|
}
|
|
@UnsupportedAppUsage
|
public String
|
getOperatorAlphaShort() {
|
return mOperatorAlphaShort;
|
}
|
|
@UnsupportedAppUsage
|
public String
|
getOperatorNumeric() {
|
return mOperatorNumeric;
|
}
|
|
@UnsupportedAppUsage
|
public State
|
getState() {
|
return mState;
|
}
|
|
@UnsupportedAppUsage
|
OperatorInfo(String operatorAlphaLong,
|
String operatorAlphaShort,
|
String operatorNumeric,
|
State state) {
|
|
mOperatorAlphaLong = operatorAlphaLong;
|
mOperatorAlphaShort = operatorAlphaShort;
|
mOperatorNumeric = operatorNumeric;
|
|
mState = state;
|
}
|
|
|
@UnsupportedAppUsage
|
public OperatorInfo(String operatorAlphaLong,
|
String operatorAlphaShort,
|
String operatorNumeric,
|
String stateString) {
|
this (operatorAlphaLong, operatorAlphaShort,
|
operatorNumeric, rilStateToState(stateString));
|
}
|
|
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
|
public OperatorInfo(String operatorAlphaLong,
|
String operatorAlphaShort,
|
String operatorNumeric) {
|
this(operatorAlphaLong, operatorAlphaShort, operatorNumeric, State.UNKNOWN);
|
}
|
|
/**
|
* See state strings defined in ril.h RIL_REQUEST_QUERY_AVAILABLE_NETWORKS
|
*/
|
@UnsupportedAppUsage
|
private static State rilStateToState(String s) {
|
if (s.equals("unknown")) {
|
return State.UNKNOWN;
|
} else if (s.equals("available")) {
|
return State.AVAILABLE;
|
} else if (s.equals("current")) {
|
return State.CURRENT;
|
} else if (s.equals("forbidden")) {
|
return State.FORBIDDEN;
|
} else {
|
throw new RuntimeException(
|
"RIL impl error: Invalid network state '" + s + "'");
|
}
|
}
|
|
|
@Override
|
public String toString() {
|
return "OperatorInfo " + mOperatorAlphaLong
|
+ "/" + mOperatorAlphaShort
|
+ "/" + mOperatorNumeric
|
+ "/" + mState;
|
}
|
|
/**
|
* Parcelable interface implemented below.
|
* This is a simple effort to make OperatorInfo parcelable rather than
|
* trying to make the conventional containing object (AsyncResult),
|
* implement parcelable. This functionality is needed for the
|
* NetworkQueryService to fix 1128695.
|
*/
|
|
@Override
|
public int describeContents() {
|
return 0;
|
}
|
|
/**
|
* Implement the Parcelable interface.
|
* Method to serialize a OperatorInfo object.
|
*/
|
@Override
|
public void writeToParcel(Parcel dest, int flags) {
|
dest.writeString(mOperatorAlphaLong);
|
dest.writeString(mOperatorAlphaShort);
|
dest.writeString(mOperatorNumeric);
|
dest.writeSerializable(mState);
|
}
|
|
/**
|
* Implement the Parcelable interface
|
* Method to deserialize a OperatorInfo object, or an array thereof.
|
*/
|
@UnsupportedAppUsage
|
public static final Creator<OperatorInfo> CREATOR =
|
new Creator<OperatorInfo>() {
|
@Override
|
public OperatorInfo createFromParcel(Parcel in) {
|
OperatorInfo opInfo = new OperatorInfo(
|
in.readString(), /*operatorAlphaLong*/
|
in.readString(), /*operatorAlphaShort*/
|
in.readString(), /*operatorNumeric*/
|
(State) in.readSerializable()); /*state*/
|
return opInfo;
|
}
|
|
@Override
|
public OperatorInfo[] newArray(int size) {
|
return new OperatorInfo[size];
|
}
|
};
|
}
|