Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7590feeb authored by Nathan Harold's avatar Nathan Harold
Browse files

Add Conversion from CellIdentity to CellLocation

Add OO conversion from CellIdentity to CellLocation
in the respective CellIdentity classes.

Bug: 67711865
Test: manual
Change-Id: I4e2dab7de5e5c5fa3bb42a22b14934874560c9fc
parent 6d891937
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -129,6 +129,12 @@ public abstract class CellIdentity implements Parcelable {
        return mAlphaShort;
    }

    /**
     * @return a CellLocation object for this CellIdentity
     * @hide
     */
    public abstract CellLocation asCellLocation();

    @Override
    public boolean equals(Object other) {
        if (!(other instanceof CellIdentity)) {
+13 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ package android.telephony;

import android.annotation.Nullable;
import android.os.Parcel;
import android.text.TextUtils;
import android.telephony.cdma.CdmaCellLocation;

import java.util.Objects;

@@ -176,6 +176,18 @@ public final class CellIdentityCdma extends CellIdentity {
                super.hashCode());
    }

    /** @hide */
    @Override
    public CdmaCellLocation asCellLocation() {
        CdmaCellLocation cl = new CdmaCellLocation();
        int bsid = mBasestationId != Integer.MAX_VALUE ? mBasestationId : -1;
        int sid = mSystemId != Integer.MAX_VALUE ? mSystemId : -1;
        int nid = mNetworkId != Integer.MAX_VALUE ? mNetworkId : -1;
        // lat and long already use Integer.MAX_VALUE for invalid/unknown
        cl.setCellLocationData(bsid, mLatitude, mLongitude, sid, nid);
        return cl;
    }

    @Override
    public boolean equals(Object other) {
        if (this == other) {
+12 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.telephony;

import android.annotation.Nullable;
import android.os.Parcel;
import android.telephony.gsm.GsmCellLocation;
import android.text.TextUtils;

import java.util.Objects;
@@ -194,6 +195,17 @@ public final class CellIdentityGsm extends CellIdentity {
        return Integer.MAX_VALUE;
    }

    /** @hide */
    @Override
    public GsmCellLocation asCellLocation() {
        GsmCellLocation cl = new GsmCellLocation();
        int lac = mLac != Integer.MAX_VALUE ? mLac : -1;
        int cid = mCid != Integer.MAX_VALUE ? mCid : -1;
        cl.setLacAndCid(lac, cid);
        cl.setPsc(-1);
        return cl;
    }

    @Override
    public int hashCode() {
        return Objects.hash(mLac, mCid, super.hashCode());
+23 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.telephony;

import android.annotation.Nullable;
import android.os.Parcel;
import android.telephony.gsm.GsmCellLocation;
import android.text.TextUtils;

import java.util.Objects;
@@ -196,6 +197,28 @@ public final class CellIdentityLte extends CellIdentity {
        return mEarfcn;
    }

    /**
     * A hack to allow tunneling of LTE information via GsmCellLocation
     * so that older Network Location Providers can return some information
     * on LTE only networks, see bug 9228974.
     *
     * The tunnel'd LTE information is returned as follows:
     *   LAC = TAC field
     *   CID = CI field
     *   PSC = 0.
     *
     * @hide
     */
    @Override
    public GsmCellLocation asCellLocation() {
        GsmCellLocation cl = new GsmCellLocation();
        int tac = mTac != Integer.MAX_VALUE ? mTac : -1;
        int cid = mCi != Integer.MAX_VALUE ? mCi : -1;
        cl.setLacAndCid(tac, cid);
        cl.setPsc(0);
        return cl;
    }

    @Override
    public int hashCode() {
        return Objects.hash(mCi, mPci, mTac, super.hashCode());
+12 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.telephony;

import android.os.Parcel;
import android.telephony.gsm.GsmCellLocation;

import java.util.Objects;

@@ -134,6 +135,17 @@ public final class CellIdentityTdscdma extends CellIdentity {
        return mUarfcn;
    }

    /** @hide */
    @Override
    public GsmCellLocation asCellLocation() {
        GsmCellLocation cl = new GsmCellLocation();
        int lac = mLac != Integer.MAX_VALUE ? mLac : -1;
        int cid = mCid != Integer.MAX_VALUE ? mCid : -1;
        cl.setLacAndCid(lac, cid);
        cl.setPsc(-1); // There is no PSC for TD-SCDMA; not using this for CPI to stem shenanigans
        return cl;
    }

    @Override
    public boolean equals(Object other) {
        if (this == other) {
Loading