diff options
author | Keith Packard <keithp@keithp.com> | 2012-12-05 22:23:46 -0800 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2012-12-05 22:23:46 -0800 |
commit | 74969483736381858484dca9ebb528d9d2d73f5b (patch) | |
tree | 0981c6a8333e71adb7ab5ff2e9c16d9cadb0970b /src/test/ao_aprs_test.c | |
parent | 933d654ec917d9794e87407a7e579438bb738d54 (diff) |
altos: Start restructuring APRS code to create and send packets
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/test/ao_aprs_test.c')
-rw-r--r-- | src/test/ao_aprs_test.c | 52 |
1 files changed, 48 insertions, 4 deletions
diff --git a/src/test/ao_aprs_test.c b/src/test/ao_aprs_test.c index 93dab577..d350ca0d 100644 --- a/src/test/ao_aprs_test.c +++ b/src/test/ao_aprs_test.c @@ -25,6 +25,27 @@ #define AO_APRS_TEST +typedef int16_t (*ao_radio_fill_func)(uint8_t *buffer, int16_t len); + +#define DEBUG 0 +#if DEBUG +void +ao_aprs_bit(uint8_t bit) +{ + static int seq = 0; + printf ("%6d %d\n", seq++, bit ? 1 : 0); +} +#else +void +ao_aprs_bit(uint8_t bit) +{ + putchar (bit ? 0xc0 : 0x40); +} +#endif + +void +ao_radio_send_lots(ao_radio_fill_func fill); + #include <ao_aprs.c> /* @@ -57,10 +78,12 @@ static void audio_gap(int secs) { +#if !DEBUG int samples = secs * 9600; while (samples--) - putchar(0x7f); + ao_aprs_bit(0); +#endif } // This is where we go after reset. @@ -76,6 +99,27 @@ int main(int argc, char **argv) exit(0); } - - - +void +ao_radio_send_lots(ao_radio_fill_func fill) +{ + int16_t len; + uint8_t done = 0; + uint8_t buf[16], *b, c; + uint8_t bit; + + while (!done) { + len = (*fill)(buf, sizeof (buf)); + if (len < 0) { + done = 1; + len = -len; + } + b = buf; + while (len--) { + c = *b++; + for (bit = 0; bit < 8; bit++) { + ao_aprs_bit(c & 0x80); + c <<= 1; + } + } + } +} |