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 LTE cell
24963db55d59a170f4b17ff907c96615a19ef6fe17John Wang *
25963db55d59a170f4b17ff907c96615a19ef6fe17John Wang * @hide pending API review
26963db55d59a170f4b17ff907c96615a19ef6fe17John Wang */
27963db55d59a170f4b17ff907c96615a19ef6fe17John Wangpublic final class LteCellIdentity extends CellIdentity implements Parcelable {
28963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
29963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    // 3-digit Mobile Country Code, 0..999
30963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    private final int mMcc;
31963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    // 2 or 3-digit Mobile Network Code, 0..999
32963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    private final int mMnc;
33963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    // 28-bit cell identity
34963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    private final int mCi;
35963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    // physical cell id 0..503
36963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    private final int mPci;
37963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    // 16-bit tracking area code
38963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    private final int mTac;
39963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
40963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /**
41963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     *
42963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @param mcc 3-digit Mobile Country Code, 0..999
43963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @param mnc 2 or 3-digit Mobile Network Code, 0..999
44963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @param ci 28-bit Cell Identity
45963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @param pci Physical Cell Id 0..503
46963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @param tac 16-bit Tracking Area Code
47963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @param attr is comma separated “key=value” attribute pairs.
48963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     */
49963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    public LteCellIdentity (int mcc, int mnc,
50963db55d59a170f4b17ff907c96615a19ef6fe17John Wang            int ci, int pci, int tac, String attr) {
51963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        super(CELLID_TYPE_CDMA, attr);
52963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mMcc = mcc;
53963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mMnc = mnc;
54963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mCi = ci;
55963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mPci = pci;
56963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mTac = tac;
57963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
58963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
59963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    private LteCellIdentity(Parcel in) {
60963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        super(in);
61963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mMcc = in.readInt();
62963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mMnc = in.readInt();
63963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mCi = in.readInt();
64963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mPci = in.readInt();
65963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mTac = in.readInt();
66963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
67963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
68963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    LteCellIdentity(LteCellIdentity cid) {
69963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        super(cid);
70963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mMcc = cid.mMcc;
71963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mMnc = cid.mMnc;
72963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mCi = cid.mCi;
73963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mPci = cid.mPci;
74963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        mTac = cid.mTac;
75963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
76963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
77963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /**
78963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @return 3-digit Mobile Country Code, 0..999
79963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     */
80963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    public int getMcc() {
81963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        return mMcc;
82963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
83963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
84963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /**
85963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @return 2 or 3-digit Mobile Network Code, 0..999
86963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     */
87963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    public int getMnc() {
88963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        return mMnc;
89963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
90963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
91963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /**
92963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @return 28-bit Cell Identity
93963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     */
94963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    public int getCi() {
95963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        return mCi;
96963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
97963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
98963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /**
99963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @return Physical Cell Id 0..503
100963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     */
101963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    public int getPci() {
102963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        return mPci;
103963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
104963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
105963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /**
106963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     * @return 16-bit Tracking Area Code
107963db55d59a170f4b17ff907c96615a19ef6fe17John Wang     */
108963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    public int getTac() {
109963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        return mTac;
110963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
111963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
112963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /** Implement the Parcelable interface {@hide} */
113963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    @Override
114963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    public int describeContents() {
115963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        return 0;
116963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
117963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
118963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /** Implement the Parcelable interface {@hide} */
119963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    @Override
120963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    public void writeToParcel(Parcel dest, int flags) {
121963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        super.writeToParcel(dest, flags);
122963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        dest.writeInt(mMcc);
123963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        dest.writeInt(mMnc);
124963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        dest.writeInt(mCi);
125963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        dest.writeInt(mPci);
126963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        dest.writeInt(mTac);
127963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    }
128963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
129963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    /** Implement the Parcelable interface {@hide} */
130963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    public static final Creator<LteCellIdentity> CREATOR =
131963db55d59a170f4b17ff907c96615a19ef6fe17John Wang            new Creator<LteCellIdentity>() {
132963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        @Override
133963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        public LteCellIdentity createFromParcel(Parcel in) {
134963db55d59a170f4b17ff907c96615a19ef6fe17John Wang            return new LteCellIdentity(in);
135963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        }
136963db55d59a170f4b17ff907c96615a19ef6fe17John Wang
137963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        @Override
138963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        public LteCellIdentity[] newArray(int size) {
139963db55d59a170f4b17ff907c96615a19ef6fe17John Wang            return new LteCellIdentity[size];
140963db55d59a170f4b17ff907c96615a19ef6fe17John Wang        }
141963db55d59a170f4b17ff907c96615a19ef6fe17John Wang    };
142963db55d59a170f4b17ff907c96615a19ef6fe17John Wang}
143