1e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville/*
2e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Copyright (C) 2013 The Android Open Source Project
3e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville *
4e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Licensed under the Apache License, Version 2.0 (the "License");
5e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * you may not use this file except in compliance with the License.
6e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * You may obtain a copy of the License at
7e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville *
8e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville *      http://www.apache.org/licenses/LICENSE-2.0
9e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville *
10e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Unless required by applicable law or agreed to in writing, software
11e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * distributed under the License is distributed on an "AS IS" BASIS,
12e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * See the License for the specific language governing permissions and
14e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * limitations under the License.
15e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */
16e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
17e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Savillepackage android.telephony;
18e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
19e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Savilleimport android.os.Parcel;
20e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Savilleimport android.os.Parcelable;
21e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Savilleimport android.telephony.Rlog;
22e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
237d1d2e39f382416ffa8db8771c83e4f9e2f53adcBrian Williammeeimport java.util.Objects;
247d1d2e39f382416ffa8db8771c83e4f9e2f53adcBrian Williammee
25e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville/**
26e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * CellIdentity to represent a unique UMTS cell
27e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */
28e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Savillepublic final class CellIdentityWcdma implements Parcelable {
29e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
30e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    private static final String LOG_TAG = "CellIdentityWcdma";
31e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    private static final boolean DBG = false;
32e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
33e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    // 3-digit Mobile Country Code, 0..999
34e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    private final int mMcc;
35e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    // 2 or 3-digit Mobile Network Code, 0..999
36e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    private final int mMnc;
37e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    // 16-bit Location Area Code, 0..65535
38e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    private final int mLac;
39e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    // 28-bit UMTS Cell Identity described in TS 25.331, 0..268435455
40e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    private final int mCid;
41e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    // 9-bit UMTS Primary Scrambling Code described in TS 25.331, 0..511
42e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    private final int mPsc;
430c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe    // 16-bit UMTS Absolute RF Channel Number
440c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe    private final int mUarfcn;
45e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
46e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    /**
47e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     * @hide
48e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     */
49e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    public CellIdentityWcdma() {
50e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mMcc = Integer.MAX_VALUE;
51e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mMnc = Integer.MAX_VALUE;
52e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mLac = Integer.MAX_VALUE;
53e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mCid = Integer.MAX_VALUE;
54e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mPsc = Integer.MAX_VALUE;
550c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe        mUarfcn = Integer.MAX_VALUE;
56e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    }
57e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    /**
58e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     * public constructor
59e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     * @param mcc 3-digit Mobile Country Code, 0..999
60e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     * @param mnc 2 or 3-digit Mobile Network Code, 0..999
61e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     * @param lac 16-bit Location Area Code, 0..65535
62e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     * @param cid 28-bit UMTS Cell Identity
63e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     * @param psc 9-bit UMTS Primary Scrambling Code
64e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     *
65e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     * @hide
66e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     */
67e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    public CellIdentityWcdma (int mcc, int mnc, int lac, int cid, int psc) {
680c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe        this(mcc, mnc, lac, cid, psc, Integer.MAX_VALUE);
690c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe    }
700c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe
710c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe    /**
720c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe     * public constructor
730c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe     * @param mcc 3-digit Mobile Country Code, 0..999
740c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe     * @param mnc 2 or 3-digit Mobile Network Code, 0..999
750c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe     * @param lac 16-bit Location Area Code, 0..65535
760c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe     * @param cid 28-bit UMTS Cell Identity
770c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe     * @param psc 9-bit UMTS Primary Scrambling Code
780c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe     * @param uarfcn 16-bit UMTS Absolute RF Channel Number
790c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe     *
800c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe     * @hide
810c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe     */
820c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe    public CellIdentityWcdma (int mcc, int mnc, int lac, int cid, int psc, int uarfcn) {
83e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mMcc = mcc;
84e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mMnc = mnc;
85e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mLac = lac;
86e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mCid = cid;
87e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mPsc = psc;
880c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe        mUarfcn = uarfcn;
89e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    }
90e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
91e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    private CellIdentityWcdma(CellIdentityWcdma cid) {
92e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mMcc = cid.mMcc;
93e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mMnc = cid.mMnc;
94e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mLac = cid.mLac;
95e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mCid = cid.mCid;
96e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mPsc = cid.mPsc;
970c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe        mUarfcn = cid.mUarfcn;
98e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    }
99e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
100e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    CellIdentityWcdma copy() {
101e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville       return new CellIdentityWcdma(this);
102e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    }
103e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
104e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    /**
105e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     * @return 3-digit Mobile Country Code, 0..999, Integer.MAX_VALUE if unknown
106e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     */
107e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    public int getMcc() {
108e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        return mMcc;
109e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    }
110e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
111e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    /**
112e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     * @return 2 or 3-digit Mobile Network Code, 0..999, Integer.MAX_VALUE if unknown
113e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     */
114e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    public int getMnc() {
115e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        return mMnc;
116e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    }
117e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
118e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    /**
119e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     * @return 16-bit Location Area Code, 0..65535, Integer.MAX_VALUE if unknown
120e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     */
121e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    public int getLac() {
122e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        return mLac;
123e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    }
124e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
125e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    /**
126e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     * @return CID
127e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     * 28-bit UMTS Cell Identity described in TS 25.331, 0..268435455, Integer.MAX_VALUE if unknown
128e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     */
129e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    public int getCid() {
130e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        return mCid;
131e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    }
132e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
133e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    /**
134e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     * @return 9-bit UMTS Primary Scrambling Code described in TS 25.331, 0..511, Integer.MAX_VALUE
135e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     * if unknown
136e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     */
137e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    public int getPsc() {
138e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        return mPsc;
139e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    }
140e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
141e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    @Override
142e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    public int hashCode() {
1437d1d2e39f382416ffa8db8771c83e4f9e2f53adcBrian Williammee        return Objects.hash(mMcc, mMnc, mLac, mCid, mPsc);
144e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    }
145e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
1460c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe    /**
1470c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe     * @return 16-bit UMTS Absolute RF Channel Number, Integer.MAX_VALUE if unknown
1480c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe     */
1490c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe    public int getUarfcn() {
1500c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe        return mUarfcn;
1510c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe    }
1520c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe
153e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    @Override
154e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    public boolean equals(Object other) {
1557d1d2e39f382416ffa8db8771c83e4f9e2f53adcBrian Williammee        if (this == other) {
1567d1d2e39f382416ffa8db8771c83e4f9e2f53adcBrian Williammee            return true;
1577d1d2e39f382416ffa8db8771c83e4f9e2f53adcBrian Williammee        }
1587d1d2e39f382416ffa8db8771c83e4f9e2f53adcBrian Williammee
1597d1d2e39f382416ffa8db8771c83e4f9e2f53adcBrian Williammee        if (!(other instanceof CellIdentityWcdma)) {
160e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville            return false;
161e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        }
1627d1d2e39f382416ffa8db8771c83e4f9e2f53adcBrian Williammee
1637d1d2e39f382416ffa8db8771c83e4f9e2f53adcBrian Williammee        CellIdentityWcdma o = (CellIdentityWcdma) other;
1647d1d2e39f382416ffa8db8771c83e4f9e2f53adcBrian Williammee        return mMcc == o.mMcc &&
1657d1d2e39f382416ffa8db8771c83e4f9e2f53adcBrian Williammee                mMnc == o.mMnc &&
1667d1d2e39f382416ffa8db8771c83e4f9e2f53adcBrian Williammee                mLac == o.mLac &&
1677d1d2e39f382416ffa8db8771c83e4f9e2f53adcBrian Williammee                mCid == o.mCid &&
1680c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe                mPsc == o.mPsc &&
1690c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe                mUarfcn == o.mUarfcn;
170e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    }
171e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
172e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    @Override
173e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    public String toString() {
174e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        StringBuilder sb = new StringBuilder("CellIdentityWcdma:{");
175e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        sb.append(" mMcc=").append(mMcc);
176e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        sb.append(" mMnc=").append(mMnc);
177e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        sb.append(" mLac=").append(mLac);
178e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        sb.append(" mCid=").append(mCid);
179e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        sb.append(" mPsc=").append(mPsc);
1800c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe        sb.append(" mUarfcn=").append(mUarfcn);
181e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        sb.append("}");
182e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
183e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        return sb.toString();
184e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    }
185e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
186e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    /** Implement the Parcelable interface */
187e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    @Override
188e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    public int describeContents() {
189e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        return 0;
190e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    }
191e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
192e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    /** Implement the Parcelable interface */
193e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    @Override
194e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    public void writeToParcel(Parcel dest, int flags) {
195e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        if (DBG) log("writeToParcel(Parcel, int): " + toString());
196e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        dest.writeInt(mMcc);
197e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        dest.writeInt(mMnc);
198e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        dest.writeInt(mLac);
199e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        dest.writeInt(mCid);
200e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        dest.writeInt(mPsc);
2010c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe        dest.writeInt(mUarfcn);
202e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    }
203e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
204e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    /** Construct from Parcel, type has already been processed */
205e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    private CellIdentityWcdma(Parcel in) {
206e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mMcc = in.readInt();
207e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mMnc = in.readInt();
208e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mLac = in.readInt();
209e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mCid = in.readInt();
210e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        mPsc = in.readInt();
2110c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe        mUarfcn = in.readInt();
212e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        if (DBG) log("CellIdentityWcdma(Parcel): " + toString());
213e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    }
214e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
215e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    /** Implement the Parcelable interface */
216e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    @SuppressWarnings("hiding")
217e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    public static final Creator<CellIdentityWcdma> CREATOR =
218e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville            new Creator<CellIdentityWcdma>() {
219e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        @Override
220e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        public CellIdentityWcdma createFromParcel(Parcel in) {
221e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville            return new CellIdentityWcdma(in);
222e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        }
223e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
224e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        @Override
225e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        public CellIdentityWcdma[] newArray(int size) {
226e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville            return new CellIdentityWcdma[size];
227e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        }
228e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    };
229e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville
230e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    /**
231e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     * log
232e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville     */
233e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    private static void log(String s) {
234e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville        Rlog.w(LOG_TAG, s);
235e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville    }
236e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville}
237