Merge "Update handling of enum/flag fields in GPS data structures."
This commit is contained in:
@@ -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;
|
||||
}
|
||||
mType = value;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -135,7 +123,7 @@ public class GpsClock implements Parcelable {
|
||||
case TYPE_LOCAL_HW_TIME:
|
||||
return "LocalHwClock";
|
||||
default:
|
||||
return "<Invalid>";
|
||||
return "<Invalid:" + mType + ">";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
mState = value;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -283,20 +279,30 @@ public class GpsMeasurement implements Parcelable {
|
||||
* For internal and logging use only.
|
||||
*/
|
||||
private String getStateString() {
|
||||
switch (mState) {
|
||||
case 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>";
|
||||
if (mState == STATE_UNKNOWN) {
|
||||
return "Unknown";
|
||||
}
|
||||
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;
|
||||
}
|
||||
mAccumulatedDeltaRangeState = value;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -414,18 +409,27 @@ public class GpsMeasurement implements Parcelable {
|
||||
* For internal and logging use only.
|
||||
*/
|
||||
private String getAccumulatedDeltaRangeStateString() {
|
||||
switch (mAccumulatedDeltaRangeState) {
|
||||
case 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>";
|
||||
if (mAccumulatedDeltaRangeState == ADR_STATE_UNKNOWN) {
|
||||
return "Unknown";
|
||||
}
|
||||
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;
|
||||
}
|
||||
mLossOfLock = value;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -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;
|
||||
}
|
||||
mMultipathIndicator = value;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -945,7 +929,7 @@ public class GpsMeasurement implements Parcelable {
|
||||
case MULTIPATH_INDICATOR_NOT_USED:
|
||||
return "NotUsed";
|
||||
default:
|
||||
return "<Invalid>";
|
||||
return "<Invalid:" + mMultipathIndicator + ">";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
mType = value;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -134,7 +121,7 @@ public class GpsNavigationMessage implements Parcelable {
|
||||
case TYPE_CNAV2:
|
||||
return "CNAV-2";
|
||||
default:
|
||||
return "<Invalid>";
|
||||
return "<Invalid:" + mType + ">";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user