summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/Makefile8
-rw-r--r--src/test/ao_aprs_test.c39
-rw-r--r--src/test/ao_flight_test.c54
-rw-r--r--src/test/ao_ms5607_convert_test.c2
4 files changed, 69 insertions, 34 deletions
diff --git a/src/test/Makefile b/src/test/Makefile
index c6025219..017f7f71 100644
--- a/src/test/Makefile
+++ b/src/test/Makefile
@@ -1,4 +1,4 @@
-vpath % ..:../core:../drivers:../util:../micropeak:../aes:../product
+vpath % ..:../kernel:../drivers:../util:../micropeak:../aes:../product
PROGS=ao_flight_test ao_flight_test_baro ao_flight_test_accel ao_flight_test_noisy_accel ao_flight_test_mm \
ao_gps_test ao_gps_test_skytraq ao_gps_test_ublox ao_convert_test ao_convert_pa_test ao_fec_test \
@@ -9,7 +9,7 @@ INCS=ao_kalman.h ao_ms5607.h ao_log.h ao_data.h altitude-pa.h altitude.h ao_quat
KALMAN=make-kalman
-CFLAGS=-I.. -I. -I../core -I../drivers -I../micropeak -I../product -O0 -g -Wall
+CFLAGS=-I.. -I. -I../kernel -I../drivers -I../micropeak -I../product -O0 -g -Wall
all: $(PROGS) ao_aprs_data.wav
@@ -52,10 +52,10 @@ ao_kalman.h: $(KALMAN)
(cd .. && make ao_kalman.h)
ao_fec_test: ao_fec_test.c ao_fec_tx.c ao_fec_rx.c
- cc $(CFLAGS) -DAO_FEC_DEBUG=1 -o $@ ao_fec_test.c ../core/ao_fec_tx.c ../core/ao_fec_rx.c -lm
+ cc $(CFLAGS) -DAO_FEC_DEBUG=1 -o $@ ao_fec_test.c ../kernel/ao_fec_tx.c ../kernel/ao_fec_rx.c -lm
ao_aprs_test: ao_aprs_test.c ao_aprs.c
- cc $(CFLAGS) -o $@ ao_aprs_test.c
+ cc $(CFLAGS) -o $@ ao_aprs_test.c -lm
SOX_INPUT_ARGS=--type raw --encoding unsigned-integer -b 8 -c 1 -r 9600
SOX_OUTPUT_ARGS=--type wav
diff --git a/src/test/ao_aprs_test.c b/src/test/ao_aprs_test.c
index 69147786..86cf527a 100644
--- a/src/test/ao_aprs_test.c
+++ b/src/test/ao_aprs_test.c
@@ -23,7 +23,16 @@
#include <ao_telemetry.h>
+#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
- *
+ *
*/
@@ -88,14 +97,42 @@ audio_gap(int secs)
#endif
}
+#include <math.h>
+
+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;
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();
diff --git a/src/test/ao_flight_test.c b/src/test/ao_flight_test.c
index 0abb4090..0647fc6c 100644
--- a/src/test/ao_flight_test.c
+++ b/src/test/ao_flight_test.c
@@ -49,13 +49,12 @@ int ao_gps_new;
#define HAS_MPU6000 1
#define HAS_MMA655X 1
#define HAS_HMC5883 1
+#define HAS_BEEP 1
struct ao_adc {
int16_t sense[AO_ADC_NUM_SENSE];
int16_t v_batt;
int16_t v_pbatt;
- int16_t accel_ref;
- int16_t accel;
int16_t temp;
};
#else
@@ -309,7 +308,7 @@ struct ao_cmds {
#if TELEMEGA
#include "ao_convert_pa.c"
#include <ao_ms5607.h>
-struct ao_ms5607_prom ms5607_prom;
+struct ao_ms5607_prom ao_ms5607_prom;
#include "ao_ms5607_convert.c"
#define AO_PYRO_NUM 4
#include <ao_pyro.h>
@@ -317,22 +316,8 @@ struct ao_ms5607_prom ms5607_prom;
#include "ao_convert.c"
#endif
-struct ao_config {
- uint16_t main_deploy;
- int16_t accel_plus_g;
- int16_t accel_minus_g;
- uint8_t pad_orientation;
- uint16_t apogee_lockout;
-#if TELEMEGA
- struct ao_pyro pyro[AO_PYRO_NUM]; /* minor version 12 */
- int16_t accel_zero_along;
- int16_t accel_zero_across;
- int16_t accel_zero_through;
-#endif
-};
-
-#define AO_PAD_ORIENTATION_ANTENNA_UP 0
-#define AO_PAD_ORIENTATION_ANTENNA_DOWN 1
+#include <ao_config.h>
+#include <ao_fake_flight.h>
#define ao_config_get()
@@ -732,6 +717,18 @@ ao_sleep(void *wchan)
ao_flight_started = 1;
ao_ground_pres = int32(bytes, 4);
ao_ground_height = ao_pa_to_altitude(ao_ground_pres);
+ ao_ground_accel_along = int16(bytes, 8);
+ ao_ground_accel_across = int16(bytes, 10);
+ ao_ground_accel_through = int16(bytes, 12);
+ ao_ground_roll = int16(bytes, 14);
+ ao_ground_pitch = int16(bytes, 16);
+ ao_ground_yaw = int16(bytes, 18);
+ ao_ground_mpu6000.accel_x = ao_ground_accel_across;
+ ao_ground_mpu6000.accel_y = ao_ground_accel_along;
+ ao_ground_mpu6000.accel_z = ao_ground_accel_through;
+ ao_ground_mpu6000.gyro_x = ao_ground_pitch >> 9;
+ ao_ground_mpu6000.gyro_y = ao_ground_roll >> 9;
+ ao_ground_mpu6000.gyro_z = ao_ground_yaw >> 9;
break;
case 'A':
ao_data_static.tick = tick;
@@ -768,21 +765,21 @@ ao_sleep(void *wchan)
continue;
} else if (nword == 3 && strcmp(words[0], "ms5607") == 0) {
if (strcmp(words[1], "reserved:") == 0)
- ms5607_prom.reserved = strtoul(words[2], NULL, 10);
+ ao_ms5607_prom.reserved = strtoul(words[2], NULL, 10);
else if (strcmp(words[1], "sens:") == 0)
- ms5607_prom.sens = strtoul(words[2], NULL, 10);
+ ao_ms5607_prom.sens = strtoul(words[2], NULL, 10);
else if (strcmp(words[1], "off:") == 0)
- ms5607_prom.off = strtoul(words[2], NULL, 10);
+ ao_ms5607_prom.off = strtoul(words[2], NULL, 10);
else if (strcmp(words[1], "tcs:") == 0)
- ms5607_prom.tcs = strtoul(words[2], NULL, 10);
+ ao_ms5607_prom.tcs = strtoul(words[2], NULL, 10);
else if (strcmp(words[1], "tco:") == 0)
- ms5607_prom.tco = strtoul(words[2], NULL, 10);
+ ao_ms5607_prom.tco = strtoul(words[2], NULL, 10);
else if (strcmp(words[1], "tref:") == 0)
- ms5607_prom.tref = strtoul(words[2], NULL, 10);
+ ao_ms5607_prom.tref = strtoul(words[2], NULL, 10);
else if (strcmp(words[1], "tempsens:") == 0)
- ms5607_prom.tempsens = strtoul(words[2], NULL, 10);
+ ao_ms5607_prom.tempsens = strtoul(words[2], NULL, 10);
else if (strcmp(words[1], "crc:") == 0)
- ms5607_prom.crc = strtoul(words[2], NULL, 10);
+ ao_ms5607_prom.crc = strtoul(words[2], NULL, 10);
continue;
} else if (nword >= 3 && strcmp(words[0], "Pyro") == 0) {
int p = strtoul(words[1], NULL, 10);
@@ -791,7 +788,7 @@ ao_sleep(void *wchan)
for (i = 2; i < nword; i++) {
for (j = 0; j < NUM_PYRO_VALUES; j++)
- if (!strcmp (words[2], ao_pyro_values[j].name))
+ if (!strcmp (words[i], ao_pyro_values[j].name))
break;
if (j == NUM_PYRO_VALUES)
continue;
@@ -991,6 +988,7 @@ void run_flight_fixed(char *name, FILE *f, int summary, char *info)
emulator_in = f;
emulator_info = info;
ao_summary = summary;
+
ao_flight_init();
ao_flight();
}
diff --git a/src/test/ao_ms5607_convert_test.c b/src/test/ao_ms5607_convert_test.c
index ad593204..1c571f1c 100644
--- a/src/test/ao_ms5607_convert_test.c
+++ b/src/test/ao_ms5607_convert_test.c
@@ -23,7 +23,7 @@
#include <stdint.h>
#include <ao_ms5607.h>
-struct ao_ms5607_prom ms5607_prom = {
+struct ao_ms5607_prom ao_ms5607_prom = {
0x002c,
0xa6e0,
0x988e,