X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Ftest%2Fao_aprs_test.c;h=69147786ff26e413533a441be00bfa9d94f105d2;hb=56a7cbbf51f5c9ebbfe17d1cc30ed807572af3cc;hp=947a02b47b1ea9a3151bc1a8f3de7db790bb8793;hpb=3e1254c4f3261f66d8070250898fe906eb80d8f2;p=fw%2Faltos diff --git a/src/test/ao_aprs_test.c b/src/test/ao_aprs_test.c index 947a02b4..69147786 100644 --- a/src/test/ao_aprs_test.c +++ b/src/test/ao_aprs_test.c @@ -23,8 +23,31 @@ #include +struct ao_telemetry_location ao_gps_data; + #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_aprs(ao_radio_fill_func fill); + #include /* @@ -57,26 +80,53 @@ 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. int main(int argc, char **argv) { - gpsInit(); - tncInit(); - audio_gap(1); + ao_gps_data.latitude = (45.0 + 28.25 / 60.0) * 10000000; + ao_gps_data.longitude = (-(122 + 44.2649 / 60.0)) * 10000000; + ao_gps_data.altitude = 84; + /* Transmit one packet */ - tncTxPacket(TNC_MODE_1200_AFSK); + ao_aprs_send(); + + tncBuffer[strlen((char *) tncBuffer) - 2] = '\0'; + fprintf(stderr, "packet: %s\n", tncBuffer); exit(0); } - - - +void +ao_radio_send_aprs(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; + } + } + } +}