1963db55d59a170f4b17ff907c96615a19ef6fe17John Wang/*
2963db55d59a170f4b17ff907c96615a19ef6fe17John Wang * Copyright (C) 2008 The Android Open Source Project
3963db55d59a170f4b17ff907c96615a19ef6fe17John Wang *
4963db55d59a170f4b17ff907c96615a19ef6fe17John Wang * Licensed under the Apache License, Version 2.0 (the "License");
5963db55d59a170f4b17ff907c96615a19ef6fe17John Wang * you may not use this file except in compliance with the License.
6963db55d59a170f4b17ff907c96615a19ef6fe17John Wang * You may obtain a copy of the License at
7963db55d59a170f4b17ff907c96615a19ef6fe17John Wang *
8963db55d59a170f4b17ff907c96615a19ef6fe17John Wang *      http://www.apache.org/licenses/LICENSE-2.0
9963db55d59a170f4b17ff907c96615a19ef6fe17John Wang *
10963db55d59a170f4b17ff907c96615a19ef6fe17John Wang * Unless required by applicable law or agreed to in writing, software
11963db55d59a170f4b17ff907c96615a19ef6fe17John Wang * distributed under the License is distributed on an "AS IS" BASIS,
12963db55d59a170f4b17ff907c96615a19ef6fe17John Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13963db55d59a170f4b17ff907c96615a19ef6fe17John Wang * See the License for the specific language governing permissions and
14963db55d59a170f4b17ff907c96615a19ef6fe17John Wang * limitations under the License.
15963db55d59a170f4b17ff907c96615a19ef6fe17John Wang */
16963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
17963db55d59a170f4b17ff907c96615a19ef6fe17John Wangpackage android.telephony;
18963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
19963db55d59a170f4b17ff907c96615a19ef6fe17John Wangimport android.os.Parcel;
20963db55d59a170f4b17ff907c96615a19ef6fe17John Wangimport android.os.Parcelable;
21963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
22963db55d59a170f4b17ff907c96615a19ef6fe17John Wang/**
23963db55d59a170f4b17ff907c96615a19ef6fe17John Wang * CellIdentity is to represent a unique CDMA cell
24963db55d59a170f4b17ff907c96615a19ef6fe17John Wang *
25963db55d59a170f4b17ff907c96615a19ef6fe17John Wang * @hide pending API review
26963db55d59a170f4b17ff907c96615a19ef6fe17John Wang */
27963db55d59a170f4b17ff907c96615a19ef6fe17John Wangpublic final class CdmaCellIdentity extends CellIdentity implements Parcelable {
28963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    // Network Id 0..65535
29963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    private final int mNetworkId;
30963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    // CDMA System Id 0..32767
31963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    private final int mSystemId;
32963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    // Base Station Id 0..65535
33963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    private final int mBasestationId;
34963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /**
35963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * Longitude is a decimal number as specified in 3GPP2 C.S0005-A v6.0.
36963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * It is represented in units of 0.25 seconds and ranges from -2592000
37963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * to 2592000, both values inclusive (corresponding to a range of -180
38963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * to +180 degrees).
39963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     */
40963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    private final int mLongitude;
41963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /**
42963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * Latitude is a decimal number as specified in 3GPP2 C.S0005-A v6.0.
43963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * It is represented in units of 0.25 seconds and ranges from -1296000
44963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * to 1296000, both values inclusive (corresponding to a range of -90
45963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * to +90 degrees).
46963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     */
47963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    private final int mLatitude;
48963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
49963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /**
50963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * public constructor
51963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @param nid Network Id 0..65535
52963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @param sid CDMA System Id 0..32767
53963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @param bid Base Station Id 0..65535
54963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @param lon Longitude is a decimal number ranges from -2592000
55963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     *        to 2592000
56963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @param lat Latitude is a decimal number ranges from -1296000
57963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     *        to 1296000
58963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @param attr is comma separated “key=value” attribute pairs.
59963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     */
60963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    public CdmaCellIdentity (int nid, int sid,
61963db55d59a170f4b17ff907c96615a19ef6fe17John Wang            int bid, int lon, int lat, String attr) {
62963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        super(CELLID_TYPE_CDMA, attr);
63963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mNetworkId = nid;
64963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mSystemId = sid;
65963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mBasestationId = bid;
66963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mLongitude = lon;
67963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mLatitude = lat;
68963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
69963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
70963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    private CdmaCellIdentity(Parcel in) {
71963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        super(in);
72963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mNetworkId = in.readInt();
73963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mSystemId = in.readInt();
74963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mBasestationId = in.readInt();
75963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mLongitude = in.readInt();
76963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mLatitude = in.readInt();
77963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
78963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
79963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    CdmaCellIdentity(CdmaCellIdentity cid) {
80963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        super(cid);
81963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mNetworkId = cid.mNetworkId;
82963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mSystemId = cid.mSystemId;
83963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mBasestationId = cid.mBasestationId;
84963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mLongitude = cid.mLongitude;
85963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mLatitude = cid.mLatitude;
86963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
87963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
88963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /**
89963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @return Network Id 0..65535
90963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     */
91963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    public int getNetworkId() {
92963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        return mNetworkId;
93963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
94963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
95963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /**
96963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @return System Id 0..32767
97963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     */
98963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    public int getSystemId() {
99963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        return mSystemId;
100963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
101963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
102963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /**
103963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @return Base Station Id 0..65535
104963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     */
105963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    public int getBasestationId() {
106963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        return mBasestationId;
107963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
108963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
109963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /**
110963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @return Base station longitude, which is a decimal number as
111963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * specified in 3GPP2 C.S0005-A v6.0. It is represented in units
112963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * of 0.25 seconds and ranges from -2592000 to 2592000, both
113963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * values inclusive (corresponding to a range of -180
114963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * to +180 degrees).
115963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     */
116963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    public int getLongitude() {
117963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        return mLongitude;
118963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
119963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
120963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /**
121963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @return Base station
122963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     */
123963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /**
124963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @return Base station latitude, which is a decimal number as
125963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * specified in 3GPP2 C.S0005-A v6.0. It is represented in units
126963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * of 0.25 seconds and ranges from -1296000 to 1296000, both
127963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * values inclusive (corresponding to a range of -90
128963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * to +90 degrees).
129963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     */
130963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    public int getLatitude() {
131963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        return mLatitude;
132963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
133963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
134963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /** Implement the Parcelable interface {@hide} */
135963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    @Override
136963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    public int describeContents() {
137963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        return 0;
138963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
139963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
140963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /** Implement the Parcelable interface {@hide} */
141963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    @Override
142963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    public void writeToParcel(Parcel dest, int flags) {
143963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        super.writeToParcel(dest, flags);
144963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        dest.writeInt(mNetworkId);
145963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        dest.writeInt(mSystemId);
146963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        dest.writeInt(mBasestationId);
147963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        dest.writeInt(mLongitude);
148963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        dest.writeInt(mLatitude);
149963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
150963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
151963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /** Implement the Parcelable interface {@hide} */
152963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    public static final Creator<CdmaCellIdentity> CREATOR =
153963db55d59a170f4b17ff907c96615a19ef6fe17John Wang            new Creator<CdmaCellIdentity>() {
154963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        @Override
155963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        public CdmaCellIdentity createFromParcel(Parcel in) {
156963db55d59a170f4b17ff907c96615a19ef6fe17John Wang            return new CdmaCellIdentity(in);
157963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        }
158963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
159963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        @Override
160963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        public CdmaCellIdentity[] newArray(int size) {
161963db55d59a170f4b17ff907c96615a19ef6fe17John Wang            return new CdmaCellIdentity[size];
162963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        }
163963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    };
164963db55d59a170f4b17ff907c96615a19ef6fe17John Wang}
165