diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2005-07-12 19:57:31 +0000 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2005-07-12 19:57:31 +0000 |
commit | 50fc825f363fe6b5b4115f2235bcb397794b2f18 (patch) | |
tree | f30865b8afd84c8a9aeb268d150d0138ce763257 | |
parent | 8f44ee89c8eeed7e1f1c0801932e598d5b0ec5eb (diff) | |
download | gpsd-50fc825f363fe6b5b4115f2235bcb397794b2f18.tar.gz |
Added output_mag, conditioned out, just in case we ever want to issue
RTCM streams.
-rw-r--r-- | rtcmdecode.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/rtcmdecode.c b/rtcmdecode.c index 75b9df60..24c22744 100644 --- a/rtcmdecode.c +++ b/rtcmdecode.c @@ -237,8 +237,41 @@ void rtcm_init(/*@out@*/struct rtcm_ctx * ctx) } /*@ +usereleased +compdef @*/ +#ifdef __UNUSED __ +void rtcm_output_mag(RTCMWORD * ip) +/* ship an RTCM message to standard output in Magnavox format */ +{ + static RTCMWORD w = 0; + int len; + static uint sqnum = 0; + + len = ((struct rtcm_msghdr *) ip)->w2.frmlen + 2; + ((struct rtcm_msghdr *) ip)->w2.sqnum = sqnum++; + sqnum &= 0x7; + + while (len-- > 0) { + w <<= 30; + w |= *ip++ & W_DATA_MASK; + + w |= rtcmparity(w); + + /* weird-assed inversion */ + if (w & P_30_MASK) + w ^= W_DATA_MASK; + + /* msb first */ + putchar(MAG_TAG_DATA | reverse_bits[(w >> 24) & 0x3f]); + putchar(MAG_TAG_DATA | reverse_bits[(w >> 18) & 0x3f]); + putchar(MAG_TAG_DATA | reverse_bits[(w >> 12) & 0x3f]); + putchar(MAG_TAG_DATA | reverse_bits[(w >> 6) & 0x3f]); + putchar(MAG_TAG_DATA | reverse_bits[(w) & 0x3f]); + } +} +#endif /* UNUSED */ + #ifdef TESTMAIN void rtcm_print_msg(struct rtcm_msghdr *msghdr) +/* dump the contents of a parsed RTCM104 message */ { int len = (int)msghdr->w2.frmlen; double zcount = msghdr->w2.zcnt * ZCOUNT_SCALE; |