[teqc] helpful tip of week 1986

Lou Estey lou at unavco.org
Thu Feb 1 07:25:38 MST 2018

This week's tip: the '+latency' options

The '+latency' options, available starting in the 2018Jan11 version, are for
outputting time latency from GNSS measurement records from the time that
the measurements were made:

  [255] teqc +help | grep latency
         +latency .           output time latency measurements to stdout
         +latency ..          output time latency measurements to stderr
         +latency name        output time latency measurements to file 'name'
         ++latency name       append time latency measurements to file 'name'
         -latency             don't output time latency measurements (default)

where the command options above follow the same form as several other options that have
been discussed so far for outputting special parameters, such as '+eds', '+rx_state',
'+psp', '+diag', '+dUTC_p', and '+ion_p' discussed in earlier tips of the week.

The intended application is where one is collecting a real-time stream and
reading this with teqc as stdin (e.g. review the recent tip of the week

The idea is to measure the latency between the time when a record or message with
an epoch (like a data epoch) is created on a receiver and the processing time of
that record or message on a computer.  If you are streaming data from a receiver,
this latency would include:

- the amount of time for the firmware to package up the record and push it out
    (to the Internet, intranet, or whatever),
- the transfer time of the bytes between the receiver's NIC and your computer
    (i.e. this portion would roughly be the `ping` time between your computer
    and a receiver on the network),
- the time for your computer to read the stream with some software and transfer
    it to teqc (e.g. using a 'pipe' in UNIX/Linux), and
- the time for teqc to partially read the record to get its time and then
    query the system's time for a comparison.

At the moment, this option is only set up to read these BINEX records:
0x00 - metadata and comments
0x05 - position solution information
0x7d - receiver state parameters
0x7e - ancillary site data
0x7f - GNNS observations

In general, though, this option could be added to any format which contains
a time stamp of creation for the individual records or messages of that format.

There are some caveats for the system on which teqc is running:

- the system time needs to be in UTC (otherwise, teqc has no idea what sort of
    time offsets to expect), and
- the system needs to be running NTP against a reliable time server to keep its
    system very well synced with UTC.

The offset between GPS time and UTC for the latency is done by teqc.  Obviously,
the number of leap seconds inserted into UTC after 6.0 Jan 1980 (the beginning of
GPS time) needs to be known.  The latest version of teqc will automatically take
the leap seconds into account until the next UTC leap second insertion, which is
written into teqc up to at least then end of 2018 (because there will be no leap
second inserted into UTC at the end of June 2018).  If at any time you need to
override teqc'c automatic setting of the leap second value, use the '-O.leap #'
or '-N.leap #' option, where # is the accumulated leap seconds in UTC since
6.0 Jan 1980.

A typical program that can read a stream on the Internet is `nc` ("network cat"
or "netcat").  This is often available on UNIX/Linux systems.  After some searching,
I've found what seems to be reliable builds (32- and 64-bit) of `nc` for Windows:
Using `nc` to capture a stream and pipe the stream to teqc, the typical use of
a '+latency' option would be:

[1001] nc <receiverIP> <BINEXport> | teqc -binex +latency . +mds
now - BINEX 0x7f-05 (@ 2017 Dec  7 19:44:51.000)= 0.017 s
now - BINEX 0x05    (@ 2017 Dec  7 19:44:51.000)= 0.017 s
now - BINEX 0x7d-00 (@ 2017 Dec  7 19:44:51.000)= 0.017 s
now - BINEX 0x7f-05 (@ 2017 Dec  7 19:44:52.000)= 0.004 s
now - BINEX 0x05    (@ 2017 Dec  7 19:44:52.000)= 0.011 s
now - BINEX 0x7d-00 (@ 2017 Dec  7 19:44:52.000)= 0.016 s
now - BINEX 0x7f-05 (@ 2017 Dec  7 19:44:53.000)= 0.005 s
now - BINEX 0x05    (@ 2017 Dec  7 19:44:53.000)= 0.012 s
now - BINEX 0x7d-00 (@ 2017 Dec  7 19:44:53.000)= 0.018 s

... where the epoch times shown are in GPS time.  The '+mds' option is included
here merely to suppress conversion of the raw data to RINEX (see tip of the week
https://postal.unavco.org/pipermail/teqc/2016/002108.html) and instead put a small
"metdata" summary at the end.  (The above case was for a Septentrio PolaRx5
receiver that we happened to be testing.)

Happy teqc-ing!


Louis H. Estey, Ph.D.              office:  [+001] 303-381-7456
UNAVCO, 6350 Nautilus Drive           FAX:  [+001] 303-381-7451
Boulder, CO  80301-5554            e-mail:  lou  unavco.org

"If the universe is the answer, what is the question?"
                                                -- Leon Lederman

Past helpful tips:

week 1894: using teqc config files - http://postal.unavco.org/pipermail/teqc/2016/002067.html
week 1895: qc of high-rate data - http://postal.unavco.org/pipermail/teqc/2016/002071.html
week 1896: UNIX/Linux shells for Windows - http://postal.unavco.org/pipermail/teqc/2016/002072.html
week 1897: '-' vs. '+' teqc options - http://postal.unavco.org/pipermail/teqc/2016/002076.html
week 1898: auto-identification of formats - http://postal.unavco.org/pipermail/teqc/2016/002092.html
week 1899: auto-identification vs. format flags - http://postal.unavco.org/pipermail/teqc/2016/002096.html
week 1900: square brackets in options - http://postal.unavco.org/pipermail/teqc/2016/002105.html
week 1901: using option '+mds' - http://postal.unavco.org/pipermail/teqc/2016/002108.html
week 1902: qc results w/ problematic nav messages - http://postal.unavco.org/pipermail/teqc/2016/002113.html
week 1903: '-no_orb[it]' and '-no_pos[ition]' options - http://postal.unavco.org/pipermail/teqc/2016/002115.html
week 1904: '-week' option - http://postal.unavco.org/pipermail/teqc/2016/002117.html
week 1905: using '+bcf' for XYZ/geodetic conversion - http://postal.unavco.org/pipermail/teqc/2016/002126.html
week 1906: the '+v[erify]' option - http://postal.unavco.org/pipermail/teqc/2016/002128.html
week 1907: '+C2', '+L5', "+L6', '+L7', '+L8', '+all' options - http://postal.unavco.org/pipermail/teqc/2016/002130.html
week 1908: getting RINEX doppler and L2 - http://postal.unavco.org/pipermail/teqc/2016/002131.html
week 1909: using paths w/ file names - http://postal.unavco.org/pipermail/teqc/2016/002132.html
week 1910: the (un)importance of file names - http://postal.unavco.org/pipermail/teqc/2016/002133.html
week 1911: notices, warnings, and errors - http://postal.unavco.org/pipermail/teqc/2016/002134.html
week 1912: the '-max_rx_SVs' option - http://postal.unavco.org/pipermail/teqc/2016/002137.html
week 1913: the end of '++igs' and '+igs' - http://postal.unavco.org/pipermail/teqc/2016/002140.html
week 1914: splicing together RINEX files - http://postal.unavco.org/pipermail/teqc/2016/002144.html
week 1915: using '-O.int' and '-O.dec' - http://postal.unavco.org/pipermail/teqc/2016/002145.html
week 1916: '+doy' option - http://postal.unavco.org/pipermail/teqc/2016/002146.html
week 1917: '-tbin' and '-ast' options - http://postal.unavco.org/pipermail/teqc/2016/002152.html
week 1918: mp12 RMS before/after Oct 2013 - http://postal.unavco.org/pipermail/teqc/2016/002158.html
week 1919: the global windowing options - http://postal.unavco.org/pipermail/teqc/2016/002159.html
week 1920: '-M.dec' and '-N.dec' options - http://postal.unavco.org/pipermail/teqc/2016/002163.html
week 1921: combining time filtering options - http://postal.unavco.org/pipermail/teqc/2016/002176.html
week 1922: helping me (or someone else on the list) help you - http://postal.unavco.org/pipermail/teqc/2016/002187.html
week 1923: the "build" line - http://postal.unavco.org/pipermail/teqc/2016/002190.html
week 1924: the qc '-w[idth]' option - http://postal.unavco.org/pipermail/teqc/2016/002193.html
week 1925: qc with explicit time windowing - http://postal.unavco.org/pipermail/teqc/2016/002194.html
week 1926: the '+rx_state' option - http://postal.unavco.org/pipermail/teqc/2016/002200.html
week 1927: the '-O.sum' option - http://postal.unavco.org/pipermail/teqc/2016/002204.html
week 1928: the '+meta' and '+mds' options - http://postal.unavco.org/pipermail/teqc/2016/002206.html
week 1930: more on '-O.sum' - http://postal.unavco.org/pipermail/teqc/2017/002207.html
week 1931: the '-O.s[ystem]' option - http://postal.unavco.org/pipermail/teqc/2017/002208.html
week 1932: leap seconds - http://postal.unavco.org/pipermail/teqc/2017/002215.html
week 1936: what you can (and shouldn't) do in a RINEX obs file - http://postal.unavco.org/pipermail/teqc/2017/002229.html
week 1938: the '+psp' option - http://postal.unavco.org/pipermail/teqc/2017/002231.html
week 1939: the '+diag' option - http://postal.unavco.org/pipermail/teqc/2017/002235.html
week 1951: '-n_<system>' and SV filtering options - http://postal.unavco.org/pipermail/teqc/2017/002277.html
week 1953: more with '+diag' option - http://postal.unavco.org/pipermail/teqc/2017/002287.html
week 1954: using '+diag' output to split raw files - http://postal.unavco.org/pipermail/teqc/2017/002290.html
week 1955: current qc notation - http://postal.unavco.org/pipermail/teqc/2017/002302.html
week 1956: the '+qcq' option - http://postal.unavco.org/pipermail/teqc/2017/002304.html
week 1957: using Trimble formats - http://postal.unavco.org/pipermail/teqc/2017/002305.html
week 1958: ToC != ToE messages - http://postal.unavco.org/pipermail/teqc/2017/002310.html
week 1959: receivers vs. formats - http://postal.unavco.org/pipermail/teqc/2017/002311.html
week 1960: when the '-week' option is very wrong to use - https://postal.unavco.org/pipermail/teqc/2017/002314.html
week 1961: "less" is usually best - https://postal.unavco.org/pipermail/teqc/2017/002315.html
week 1962: using GPS L2C with teqc - https://postal.unavco.org/pipermail/teqc/2017/002316.html
week 1964: the '+eds' options - https://postal.unavco.org/pipermail/teqc/2017/002317.html
week 1965: handling RINEX comment lines - https://postal.unavco.org/pipermail/teqc/2017/002324.html
week 1966: the '+dUTC_p' options - https://postal.unavco.org/pipermail/teqc/2017/002331.html
week 1967: the strange position from '+meta' - https://postal.unavco.org/pipermail/teqc/2017/002355.html
week 1972: what shows up as metadata in RINEX headers - https://postal.unavco.org/pipermail/teqc/2017/002362.html
week 1973: GPS L2C navigation messages - https://postal.unavco.org/pipermail/teqc/2017/002363.html
week 1974: the '+ion_p' options - https://postal.unavco.org/pipermail/teqc/2017/002370.html
week 1975: the '+event' options - https://postal.unavco.org/pipermail/teqc/2017/002372.html
week 1976: options '+smtt' (default) vs. '-smtt' - https://postal.unavco.org/pipermail/teqc/2017/002374.html
week 1977: the reported interval with '+meta' for a RINEX obs file - https://postal.unavco.org/pipermail/teqc/2017/002377.html
week 1978: the '-N.dUTC' options - https://postal.unavco.org/pipermail/teqc/2017/002378.html
week 1979: the various qc elevation angles - https://postal.unavco.org/pipermail/teqc/2017/002383.html
week 1980: avoid in RINEX: Transit data - https://postal.unavco.org/pipermail/teqc/2017/002385.html
week 1981: avoid in RINEX: epoch flag = 6 - https://postal.unavco.org/pipermail/teqc/2017/002389.html
week 1982: avoid in RINEX: RCV CLOCK OFFS APPL = 1 - https://postal.unavco.org/pipermail/teqc/2018/002392.html
week 1983: don't count on in RINEX: receiver clock offset per epoch - https://postal.unavco.org/pipermail/teqc/2018/002393.html
week 1984: requirements for multiple target files/stdin - https://postal.unavco.org/pipermail/teqc/2018/002410.html
week 1985: default output for various input - https://postal.unavco.org/pipermail/teqc/2018/002412.html

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://postal.unavco.org/pipermail/teqc/attachments/20180201/20bd8aa9/attachment-0001.html>

More information about the teqc mailing list