diff options
| author | Keith Packard <keithp@keithp.com> | 2011-08-25 20:43:44 -0700 |
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2011-08-25 20:49:11 -0700 |
| commit | 9513be7f9d3d0b0ec29f6487fa9dc8f1ac24d0de (patch) | |
| tree | 6cfa006884cab18f56e95c79c3268df4817885f1 /src/util/sirf-cksum | |
| parent | 3bfe8df44b575ca430ffaa051e20faa955a06c03 (diff) | |
altos: Restructure altos build to prepare for multi-arch support
Split out sources into separate directories:
core: architecture and product independent bits
cc1111: cc1111-specific code
drivers: architecture independent drivers
product: product-specific sources and Makefile fragments
util: scripts for building stuff
This should have no effect on the built products, but testing is encouraged
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/util/sirf-cksum')
| -rwxr-xr-x | src/util/sirf-cksum | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/util/sirf-cksum b/src/util/sirf-cksum new file mode 100755 index 00000000..b905f318 --- /dev/null +++ b/src/util/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(); |
