On May 16, 2018, at 13:58, Peter Monta <[email protected]> wrote:
> 
> "Code phase" represents where you are along the 1023-bit C/A code (each bit 
> or "chip" of this code lasts ~1 microsecond or ~300 meters).  The 
> scaled-by-16 code phase will thus range from 0 to 16*1023.  To get the full 
> pseudorange, though, suitable for placing into a RINEX file for example, you 
> need to also add in the integer number of code periods from the satellite to 
> you.
...
> If you know your position to within 150 kilometers (0.5 ms), you can dispense 
> with the pseudorange-assembly arithmetic

To put that in code, the assembly of collected Observations might look like 
this:

    raw_time = nav_ms_of_frame(sv);
    raw_time += 
((double)(1023<<PHASE_BITS)-(double)nd[c].phase)/(double)(1023<<PHASE_BITS);
    raw_time += nav_subframe_of_week(sv)*6000.0;
    raw_time /= 1000.0;

That pulls all the Observation pieces together to give you a (still 
uncorrected) transmit time in seconds (taken from working code).

> and just use the code phase directly, after adding in the appropriate integer 
> number of milliseconds, only one of which will put you within your known 
> 300-kilometer-diameter (1 ms) sphere.

Oh... that is a very useful simplification when in Over Determined Clock.  So 
long as your time is already accurate to better than 0.5ms, which is no big 
trick.  Seems obvious now, but I hadn't thought of calculating or validating 
psudoranges that way before, thanks!

J.

> Cheers,
> Peter
> _______________________________________________
> time-nuts mailing list -- [email protected]
> To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts
> and follow the instructions there.

_______________________________________________
time-nuts mailing list -- [email protected]
To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts
and follow the instructions there.

Reply via email to