From 43be26603827b5930bf3e8082610cfa19b45534d Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 21 May 2014 13:58:54 -0700 Subject: altos/test: Get APRS generation test working again APRS now includes sat info, so we have to fake that up to generate an APRS test file Signed-off-by: Keith Packard --- src/test/ao_aprs_test.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/test/ao_aprs_test.c') diff --git a/src/test/ao_aprs_test.c b/src/test/ao_aprs_test.c index 69147786..b1d17d3f 100644 --- a/src/test/ao_aprs_test.c +++ b/src/test/ao_aprs_test.c @@ -23,7 +23,16 @@ #include +#define AO_GPS_NUM_SAT_MASK (0xf << 0) +#define AO_GPS_NUM_SAT_SHIFT (0) + +#define AO_GPS_VALID (1 << 4) +#define AO_GPS_RUNNING (1 << 5) +#define AO_GPS_DATE_VALID (1 << 6) +#define AO_GPS_COURSE_VALID (1 << 7) + struct ao_telemetry_location ao_gps_data; +struct ao_telemetry_satellite ao_gps_tracking_data; #define AO_APRS_TEST @@ -73,7 +82,7 @@ ao_radio_send_aprs(ao_radio_fill_func fill); * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * */ @@ -96,6 +105,7 @@ int main(int argc, char **argv) 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; + ao_gps_data.flags = (AO_GPS_VALID|AO_GPS_RUNNING); /* Transmit one packet */ ao_aprs_send(); -- cgit v1.2.3 From 12c408c5aa1d234fe9c946078d8a343b4fda7ebb Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 30 May 2014 17:30:08 -0700 Subject: altos: Test APRS altitude encoding MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Verify fixed point version against naïve implementation Signed-off-by: Keith Packard --- src/test/ao_aprs_test.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/test/ao_aprs_test.c') diff --git a/src/test/ao_aprs_test.c b/src/test/ao_aprs_test.c index b1d17d3f..86cf527a 100644 --- a/src/test/ao_aprs_test.c +++ b/src/test/ao_aprs_test.c @@ -97,9 +97,36 @@ audio_gap(int secs) #endif } +#include + +int +ao_aprs_encode_altitude_expensive(int meters) +{ + double feet = meters / 0.3048; + + double encode = log(feet) / log(1.002); + return floor(encode + 0.5); +} + // This is where we go after reset. int main(int argc, char **argv) { + int e, x; + int a; + + for (a = 1; a < 100000; a++) { + e = ao_aprs_encode_altitude(a); + x = ao_aprs_encode_altitude_expensive(a); + + if (e != x) { + double back_feet, back_meters; + back_feet = pow(1.002, e); + back_meters = back_feet * 0.3048; + fprintf (stderr, "APRS altitude encoding failure: altitude %d actual %d expected %d actual meters %f\n", + a, e, x, back_meters); + } + } + audio_gap(1); ao_gps_data.latitude = (45.0 + 28.25 / 60.0) * 10000000; -- cgit v1.2.3