This allows the observables to send messages back to the tracking
channels, for example when system time has been received by at least one
channel, it can then be broadcast back to all other channels.
This is useful in long code tracking, so that we don't have to receive a
TOW on every single channel before we start tracking.
Note that in this version the PRS is not tracked, we simply generate all
the required correlator outputs based on the E1 OS tracking parameters.
The next stage will be to close the loop for the E1A signal.
Not sure about this one. From my understanding of the Spirent knowledge
base description of the way in which the PRS code is generated, the
first PRS code chip for PRN 1 should be the same as the second p-code
chip for PRN 1, but it appears that in fact what is generated is the
last chip of the week. In other words the offset is -1 not +1.
With this modification I can successfully process E1 PRS data for both
even and odd numbered PRNs
The idea behind the long code interface is to allow us to configure a
PRS receiver to use different codes depending on how the data is
generated. Different simulators may generate the PRS code in different
ways and we want to be able to plug and play without having separate
tracking strategies for each.
Note that there is an error in IS GPS 200 H, which is where we get the
testvectors from. This commit passes against test vectors from the
proposed modification: IS GPS 200 H PIRN 001
This is to be used to pass messages between blocks using the GnuRadio
message passing API. The primary use case is for passing information
from the telemetry_decoder to the tracking block. This can help inform
the tracking block of parity failure, time synch and other messages
which may be useful in determining the tracking state.
Note that this is not used at present, but important to treat non-zero
IF properly in case we need to revert to using the local carrier instead
of the gnuradio rotator (for example if we use 16 bit ints as input)
This is more efficient than using floating point rounding and more
accurate than relying on the sampling rate.
Note there was a bug in the original code wherein the early and late
local replicas are actually the late and early respectively. I've
continued this for now, but it should be fixed.