diff options
| author | Keith Packard <keithp@keithp.com> | 2009-06-29 23:03:58 -0700 |
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2009-06-29 23:03:58 -0700 |
| commit | 527d7c803ed9597b210634018cb2eb9d048d9846 (patch) | |
| tree | f409b8ebe8a74e3736dd7abf76ba401133eafec5 /src/sirf-cksum | |
| parent | ee4919dd771b00e2a2dd1083c9528efa7baab50f (diff) | |
Add GPS speed and error data to telemetry and aoview
Having switched to the SiRF binary GPS format, the velocity and error data
can now be displayed.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/sirf-cksum')
| -rwxr-xr-x | src/sirf-cksum | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/sirf-cksum b/src/sirf-cksum new file mode 100755 index 00000000..b905f318 --- /dev/null +++ b/src/sirf-cksum @@ -0,0 +1,44 @@ +#!/usr/bin/env nickle + +int checksum(int[] msg) +{ + int sum = 0; + for (int i = 0; i < dim(msg); i++) { + sum += msg[i]; + sum &= 0x7fff; + } + return sum; +} + +void main() +{ + string[...] input; + int[...] msg; + + setdim(input, 0); + while (!File::end(stdin)) { + input[dim(input)] = gets(); + } + + setdim(msg, 0); + for (int i = 0; i < dim(input); i++) { + string[*] words = String::wordsplit(input[i], " ,\t"); + for (int j = 0; j < dim(words); j++) { + if (words[j] == "/" + "*") + break; + if (String::length(words[j]) > 0 && + Ctype::isdigit(words[j][0])) { + msg[dim(msg)] = string_to_integer(words[j]); + } + } + } + printf("\t0xa0, 0xa2, 0x%02x, 0x%02x,\t/* length: %d bytes */\n", + dim(msg) >> 8, dim(msg) & 0xff, dim(msg)); + for (int i = 0; i < dim(input); i++) + printf("%s\n", input[i]); + int csum = checksum(msg); + printf ("\t0x%02x, 0x%02x, 0xb0, 0xb3,\n", + csum >> 8, csum & 0xff); +} + +main(); |
