diff options
| author | Keith Packard <keithp@keithp.com> | 2009-10-09 22:48:29 -0700 |
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2009-10-09 22:48:29 -0700 |
| commit | 2f7603490a169df8f18b565db4fa967832ffc9bd (patch) | |
| tree | 3f18dfe786fcff179cfc4ae39d930133134f76df /src/skytraq-cksum | |
| parent | 33b0b6f2f2e07de105619a7b463226d2813152ab (diff) | |
Build two versions of TM, one for SiRF, one for SkyTraq
This creates two separate images, depending on which GPS unit is
connected.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/skytraq-cksum')
| -rw-r--r-- | src/skytraq-cksum | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/skytraq-cksum b/src/skytraq-cksum new file mode 100644 index 00000000..e4960bff --- /dev/null +++ b/src/skytraq-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 &= 0xff; + } + 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, 0xa1, 0x02x, 0x%02x,\t\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, 0x0d, 0x0a,\n", + csum); +} + +main(); |
