FileDocCategorySizeDatePackage
NetworkInfo.javaAPI DocAndroid 1.5 API4326Wed May 06 22:42:02 BST 2009com.android.internal.telephony.gsm

NetworkInfo.java

/*
 * 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.gsm;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * {@hide}
 */
public class NetworkInfo implements Parcelable
{
    public enum State {
        UNKNOWN,
        AVAILABLE,
        CURRENT,
        FORBIDDEN;
    }

    String operatorAlphaLong;
    String operatorAlphaShort;
    String operatorNumeric;

    State state = State.UNKNOWN;


    public String
    getOperatorAlphaLong()
    {
        return operatorAlphaLong;
    }

    public String
    getOperatorAlphaShort()
    {
        return operatorAlphaShort;
    }

    public String
    getOperatorNumeric()
    {
        return operatorNumeric;
    }

    public State
    getState()
    {
        return state;
    }

    NetworkInfo(String operatorAlphaLong, 
                String operatorAlphaShort, 
                String operatorNumeric, 
                State state)
    {

        this.operatorAlphaLong = operatorAlphaLong;
        this.operatorAlphaShort = operatorAlphaShort;
        this.operatorNumeric = operatorNumeric;

        this.state = state;
    }


    NetworkInfo(String operatorAlphaLong, 
                String operatorAlphaShort, 
                String operatorNumeric, 
                String stateString)
    {
        this (operatorAlphaLong, operatorAlphaShort, 
                operatorNumeric, rilStateToState(stateString));
    }

    /**
     * See state strings defined in ril.h RIL_REQUEST_QUERY_AVAILABLE_NETWORKS
     */
    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 + "'");
        }
    }


    public String toString()
    {
        return "NetworkInfo " + operatorAlphaLong 
                + "/" + operatorAlphaShort 
                + "/" + operatorNumeric 
                + "/" + state;
    }
    
    /** 
     * Parcelable interface implemented below.
     * This is a simple effort to make NetworkInfo parcelable rather than
     * trying to make the conventional containing object (AsyncResult),
     * implement parcelable.  This functionality is needed for the 
     * NetworkQueryService to fix 1128695.
     */
    
    public int describeContents() {
        return 0;
    }

    /** 
     * Implement the Parcelable interface.
     * Method to serialize a NetworkInfo object. 
     */
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(operatorAlphaLong);
        dest.writeString(operatorAlphaShort);
        dest.writeString(operatorNumeric);
        dest.writeSerializable(state);
    }

    /** 
     * Implement the Parcelable interface
     * Method to deserialize a NetworkInfo object, or an array thereof. 
     */
    public static final Creator<NetworkInfo> CREATOR =
        new Creator<NetworkInfo>() {
            public NetworkInfo createFromParcel(Parcel in) {
                NetworkInfo netInfo = new NetworkInfo(
                        in.readString(), /*operatorAlphaLong*/
                        in.readString(), /*operatorAlphaShort*/
                        in.readString(), /*operatorNumeric*/
                        (State) in.readSerializable()); /*state*/
                return netInfo;
            }

            public NetworkInfo[] newArray(int size) {
                return new NetworkInfo[size];
            }
        };
}