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

Commit e29c45ad authored by destradaa's avatar destradaa Committed by Android (Google) Code Review
Browse files

Merge "Update handling of enum/flag fields in GPS data structures."

parents 83a0068d c91ac688
Loading
Loading
Loading
Loading
+2 −14
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package android.location;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.Log;

/**
 * A class containing a GPS clock timestamp.
@@ -29,7 +28,6 @@ import android.util.Log;
 */
@SystemApi
public class GpsClock implements Parcelable {
    private static final String TAG = "GpsClock";

    // The following enumerations must be in sync with the values declared in gps.h

@@ -109,17 +107,7 @@ public class GpsClock implements Parcelable {
     * Sets the type of time reported.
     */
    public void setType(byte value) {
        switch (value) {
            case TYPE_UNKNOWN:
            case TYPE_GPS_TIME:
            case TYPE_LOCAL_HW_TIME:
        mType = value;
                break;
            default:
                Log.d(TAG, "Sanitizing invalid 'type': " + value);
                mType = TYPE_UNKNOWN;
                break;
        }
    }

    /**
@@ -135,7 +123,7 @@ public class GpsClock implements Parcelable {
            case TYPE_LOCAL_HW_TIME:
                return "LocalHwClock";
            default:
                return "<Invalid>";
                return "<Invalid:" + mType + ">";
        }
    }

+60 −76
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package android.location;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.Log;

/**
 * A class representing a GPS satellite measurement, containing raw and computed information.
@@ -28,8 +27,6 @@ import android.util.Log;
 */
@SystemApi
public class GpsMeasurement implements Parcelable {
    private static final String TAG = "GpsMeasurement";

    private int mFlags;
    private byte mPrn;
    private double mTimeOffsetInNs;
@@ -139,6 +136,12 @@ public class GpsMeasurement implements Parcelable {
     */
    public static final short STATE_TOW_DECODED = (1<<3);

    /**
     * All the GPS receiver state flags.
     */
    private static final short STATE_ALL =
            STATE_CODE_LOCK | STATE_BIT_SYNC | STATE_SUBFRAME_SYNC | STATE_TOW_DECODED;

    /**
     * The state of the 'Accumulated Delta Range' is invalid or unknown.
     */
@@ -159,6 +162,11 @@ public class GpsMeasurement implements Parcelable {
     */
    public static final short ADR_STATE_CYCLE_SLIP = (1<<2);

    /**
     * All the 'Accumulated Delta Range' flags.
     */
    private static final short ADR_ALL = ADR_STATE_VALID | ADR_STATE_RESET | ADR_STATE_CYCLE_SLIP;

    // End enumerations in sync with gps.h

    GpsMeasurement() {
@@ -263,19 +271,7 @@ public class GpsMeasurement implements Parcelable {
     * Sets the sync state.
     */
    public void setState(short value) {
        switch (value) {
            case STATE_UNKNOWN:
            case STATE_BIT_SYNC:
            case STATE_CODE_LOCK:
            case STATE_SUBFRAME_SYNC:
            case STATE_TOW_DECODED:
        mState = value;
                break;
            default:
                Log.d(TAG, "Sanitizing invalid 'sync state': " + value);
                mState = STATE_UNKNOWN;
                break;
        }
    }

    /**
@@ -283,20 +279,30 @@ public class GpsMeasurement implements Parcelable {
     * For internal and logging use only.
     */
    private String getStateString() {
        switch (mState) {
            case STATE_UNKNOWN:
        if (mState == STATE_UNKNOWN) {
            return "Unknown";
            case STATE_BIT_SYNC:
                return "BitSync";
            case STATE_CODE_LOCK:
                return "CodeLock";
            case STATE_SUBFRAME_SYNC:
                return "SubframeSync";
            case STATE_TOW_DECODED:
                return "TowDecoded";
            default:
                return "<Invalid>";
        }
        StringBuilder builder = new StringBuilder();
        if ((mState & STATE_CODE_LOCK) == STATE_CODE_LOCK) {
            builder.append("CodeLock|");
        }
        if ((mState & STATE_BIT_SYNC) == STATE_BIT_SYNC) {
            builder.append("BitSync|");
        }
        if ((mState & STATE_SUBFRAME_SYNC) == STATE_SUBFRAME_SYNC) {
            builder.append("SubframeSync|");
        }
        if ((mState & STATE_TOW_DECODED) == STATE_TOW_DECODED) {
            builder.append("TowDecoded|");
        }
        int remainingStates = mState & ~STATE_ALL;
        if (remainingStates > 0) {
            builder.append("Other(");
            builder.append(Integer.toBinaryString(remainingStates));
            builder.append(")|");
        }
        builder.deleteCharAt(builder.length() - 1);
        return builder.toString();
    }

    /**
@@ -395,18 +401,7 @@ public class GpsMeasurement implements Parcelable {
     * Sets the 'Accumulated Delta Range' state.
     */
    public void setAccumulatedDeltaRangeState(short value) {
        switch (value) {
            case ADR_STATE_UNKNOWN:
            case ADR_STATE_VALID:
            case ADR_STATE_RESET:
            case ADR_STATE_CYCLE_SLIP:
        mAccumulatedDeltaRangeState = value;
                break;
            default:
                Log.d(TAG, "Sanitizing invalid 'Accumulated Delta Range state': " + value);
                mAccumulatedDeltaRangeState = ADR_STATE_UNKNOWN;
                break;
        }
    }

    /**
@@ -414,18 +409,27 @@ public class GpsMeasurement implements Parcelable {
     * For internal and logging use only.
     */
    private String getAccumulatedDeltaRangeStateString() {
        switch (mAccumulatedDeltaRangeState) {
            case ADR_STATE_UNKNOWN:
        if (mAccumulatedDeltaRangeState == ADR_STATE_UNKNOWN) {
            return "Unknown";
            case ADR_STATE_VALID:
                return "Valid";
            case ADR_STATE_RESET:
                return "Reset";
            case ADR_STATE_CYCLE_SLIP:
                return "CycleSlip";
            default:
                return "<Invalid>";
        }
        StringBuilder builder = new StringBuilder();
        if ((mAccumulatedDeltaRangeState & ADR_STATE_VALID) == ADR_STATE_VALID) {
            builder.append("Valid|");
        }
        if ((mAccumulatedDeltaRangeState & ADR_STATE_RESET) == ADR_STATE_RESET) {
            builder.append("Reset|");
        }
        if ((mAccumulatedDeltaRangeState & ADR_STATE_CYCLE_SLIP) == ADR_STATE_CYCLE_SLIP) {
            builder.append("CycleSlip|");
        }
        int remainingStates = mAccumulatedDeltaRangeState & ~ADR_ALL;
        if (remainingStates > 0) {
            builder.append("Other(");
            builder.append(Integer.toBinaryString(remainingStates));
            builder.append(")|");
        }
        builder.deleteCharAt(builder.length() - 1);
        return builder.toString();
    }

    /**
@@ -744,17 +748,7 @@ public class GpsMeasurement implements Parcelable {
     * Sets the 'loss of lock' status.
     */
    public void setLossOfLock(byte value) {
        switch (value) {
            case LOSS_OF_LOCK_UNKNOWN:
            case LOSS_OF_LOCK_OK:
            case LOSS_OF_LOCK_CYCLE_SLIP:
        mLossOfLock = value;
                break;
            default:
                Log.d(TAG, "Sanitizing invalid 'loss of lock': " + value);
                mLossOfLock = LOSS_OF_LOCK_UNKNOWN;
                break;
        }
    }

    /**
@@ -770,7 +764,7 @@ public class GpsMeasurement implements Parcelable {
            case LOSS_OF_LOCK_CYCLE_SLIP:
                return "CycleSlip";
            default:
                return "<Invalid>";
                return "<Invalid:" + mLossOfLock + ">";
        }
    }

@@ -919,17 +913,7 @@ public class GpsMeasurement implements Parcelable {
     * Sets the 'multi-path' indicator.
     */
    public void setMultipathIndicator(byte value) {
        switch (value) {
            case MULTIPATH_INDICATOR_UNKNOWN:
            case MULTIPATH_INDICATOR_DETECTED:
            case MULTIPATH_INDICATOR_NOT_USED:
        mMultipathIndicator = value;
                break;
            default:
                Log.d(TAG, "Sanitizing invalid 'muti-path indicator': " + value);
                mMultipathIndicator = MULTIPATH_INDICATOR_UNKNOWN;
                break;
        }
    }

    /**
@@ -945,7 +929,7 @@ public class GpsMeasurement implements Parcelable {
            case MULTIPATH_INDICATOR_NOT_USED:
                return "NotUsed";
            default:
                return "<Invalid>";
                return "<Invalid:" + mMultipathIndicator + ">";
        }
    }

+3 −16
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.Log;

import java.security.InvalidParameterException;

@@ -31,7 +30,7 @@ import java.security.InvalidParameterException;
 */
@SystemApi
public class GpsNavigationMessage implements Parcelable {
    private static final String TAG = "GpsNavigationMessage";

    private static final byte[] EMPTY_ARRAY = new byte[0];

    // The following enumerations must be in sync with the values declared in gps.h
@@ -102,19 +101,7 @@ public class GpsNavigationMessage implements Parcelable {
     * Sets the type of the navigation message.
     */
    public void setType(byte value) {
        switch (value) {
            case TYPE_UNKNOWN:
            case TYPE_L1CA:
            case TYPE_L2CNAV:
            case TYPE_L5CNAV:
            case TYPE_CNAV2:
        mType = value;
                break;
            default:
                Log.d(TAG, "Sanitizing invalid 'type': " + value);
                mType = TYPE_UNKNOWN;
                break;
        }
    }

    /**
@@ -134,7 +121,7 @@ public class GpsNavigationMessage implements Parcelable {
            case TYPE_CNAV2:
                return "CNAV-2";
            default:
                return "<Invalid>";
                return "<Invalid:" + mType + ">";
        }
    }