With GnssLogger v3.1, users can view and analyze raw GNSS data on the Measurements screen.
Here is the Measurements screen, followed by a few tips and tricks to make the most out of this data:

In the top card:
- The top left shows the GNSS clock data (corresponding to
GnssClock
). - The top right shows the count of GNSS hardware (HW) discontinuities (from
GnssClock.getHardwareClockDiscontinuityCount
), which helps determine if duty-cycling is on or off. When this counter increments, it indicates that there was a disruption in the continuous observation of GNSS signals (e.g., duty-cycling is on). Further down, the card displays aggregate information for all measurements:- # valid measurements — For a measurement to be considered valid, the
STATE_CODE_LOCK
andSTATE_TOW_KNOWN
orSTATE_TOW_DECODED
flags must be set inGnssMeasurement.getState
. - # usable accumulated delta range (ADR) — For ADR, or carrier phase, to be
considered usable for positioning, the
ADR_STATE_VALID
flag must be set and neither theADR_STATE_RESET
nor theADR_STATE_CYCLE_SLIP
flags can be set inGnssMeasurement.getAccumulatedDeltaRangeState
.
- # valid measurements — For a measurement to be considered valid, the
If your device always reports 0 usable ADR, even when in open sky with duty-cycling disabled, that's a good indication that your device doesn't support carrier phase measurements that can be used for high-accuracy GNSS.
In the bottom card, each row represents an individual GnssMeasurement
.
- The Code type column shows the exact type of GNSS signal using the code types defined in RINEX 4.01. For example, the GPS L1 signals with code type "C", represent L1 C/A, as indicated by the last letter in the three character code in the RINEX tables. GPS L5 Q would similarly have a "Q" code type. See the tables for other GNSS constellations at the end of this document for reference.
- In the Rx SV Time (ns) column, the text is green if the measurement is valid.
- In the State column, the state is also green if the measurement is valid. State shows a human-readable version of the bitwise flags that are set in the GnssMeasurement.getState() field.
Provide feedback on new features using our public issue tracker.
Table 10 : RINEX Version 4.01 GPS Observation Codes
For each measurement, the "Code Type" shown is the last letter of the "Pseudo Range" value defined in the RINEX 4.01 specification for the relevant GNSS system and carrier frequency. For example, "C" is used for GPS L1 [C/A] while "Q" is used for GPS L5 Q.

Users can scroll to the right to see additional columns for each measurement:

- PRR is the Pseudo Range Rate in meters per second from GnssMeasurement.getPseudorangeRateMetersPerSecond()
- The ADR State column shows the human-readable version of the bitwise flags set in the GnssMeasurement.getAccumulatedDeltaRangeState() column. If the ADR is usable for positioning, the text in the ADR (m) and ADR State fields is green.
RINEX 4.01 observation codes
The last of the three letters in the RINEX observation codes in the Pseudo Range column is the Code type value shown on the Measurements screen in GnssLogger.
Following are tables from the RINEX 4.01 spec for convenience. See the full specification for details.






