diff options
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/Makefile | 18 | ||||
| -rw-r--r-- | src/test/ao_flight_test.c | 10 | ||||
| -rw-r--r-- | src/test/ao_lisp_os.h | 59 | ||||
| -rw-r--r-- | src/test/ao_lisp_test.c | 134 | ||||
| -rw-r--r-- | src/test/hanoi.lisp | 155 | 
5 files changed, 14 insertions, 362 deletions
diff --git a/src/test/Makefile b/src/test/Makefile index 08808430..7bd13db9 100644 --- a/src/test/Makefile +++ b/src/test/Makefile @@ -1,10 +1,13 @@ -vpath % ..:../kernel:../drivers:../util:../micropeak:../aes:../product:../lisp +vpath %.o . +vpath %.c ..:../kernel:../drivers:../util:../micropeak:../aes:../product +vpath %.h ..:../kernel:../drivers:../util:../micropeak:../aes:../product +vpath make-kalman ..:../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_flight_test_metrum ao_flight_test_mini \  	ao_gps_test ao_gps_test_skytraq ao_gps_test_ublox ao_convert_test ao_convert_pa_test ao_fec_test \  	ao_aprs_test ao_micropeak_test ao_fat_test ao_aes_test ao_int64_test \ -	ao_ms5607_convert_test ao_quaternion_test ao_lisp_test +	ao_ms5607_convert_test ao_quaternion_test  INCS=ao_kalman.h ao_ms5607.h ao_log.h ao_data.h altitude-pa.h altitude.h ao_quaternion.h ao_eeprom_read.h  TEST_SRC=ao_flight_test.c @@ -17,7 +20,7 @@ CFLAGS=-I.. -I. -I../kernel -I../drivers -I../micropeak -I../product -I../lisp -  all: $(PROGS) ao_aprs_data.wav -clean: +clean::  	rm -f $(PROGS) ao_aprs_data.wav run-out.baro run-out.full  install: @@ -94,12 +97,3 @@ ao_ms5607_convert_test: ao_ms5607_convert_test.c ao_ms5607_convert_8051.c ao_int  ao_quaternion_test: ao_quaternion_test.c ao_quaternion.h  	cc $(CFLAGS) -o $@ ao_quaternion_test.c -lm -AO_LISP_OBJS = ao_lisp_test.o ao_lisp_mem.o  ao_lisp_cons.o ao_lisp_string.o \ -	ao_lisp_atom.o ao_lisp_int.o ao_lisp_eval.o ao_lisp_poly.o \ -	ao_lisp_builtin.o ao_lisp_read.o ao_lisp_rep.o ao_lisp_frame.o \ -	ao_lisp_lambda.o ao_lisp_error.o ao_lisp_save.o ao_lisp_stack.o - -ao_lisp_test: $(AO_LISP_OBJS) -	cc $(CFLAGS) -o $@ $(AO_LISP_OBJS) - -$(AO_LISP_OBJS): ao_lisp.h ao_lisp_const.h ao_lisp_os.h diff --git a/src/test/ao_flight_test.c b/src/test/ao_flight_test.c index 298848d6..2d862f82 100644 --- a/src/test/ao_flight_test.c +++ b/src/test/ao_flight_test.c @@ -25,6 +25,7 @@  #include <string.h>  #include <getopt.h>  #include <math.h> +#define log ao_log_data  #define GRAVITY 9.80665 @@ -370,7 +371,7 @@ extern int16_t ao_accel_2g;  typedef int16_t	accel_t;  uint16_t	ao_serial_number; -uint16_t	ao_flight_number; +int16_t		ao_flight_number;  extern uint16_t	ao_sample_tick; @@ -998,7 +999,7 @@ main (int argc, char **argv)  #else  	emulator_app="baro";  #endif -	while ((c = getopt_long(argc, argv, "sdi:", options, NULL)) != -1) { +	while ((c = getopt_long(argc, argv, "sdpi:", options, NULL)) != -1) {  		switch (c) {  		case 's':  			summary = 1; @@ -1006,6 +1007,11 @@ main (int argc, char **argv)  		case 'd':  			ao_flight_debug = 1;  			break; +		case 'p': +#if PYRO_DBG +			pyro_dbg = 1; +#endif +			break;  		case 'i':  			info = optarg;  			break; diff --git a/src/test/ao_lisp_os.h b/src/test/ao_lisp_os.h deleted file mode 100644 index 9ff2e1fe..00000000 --- a/src/test/ao_lisp_os.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright © 2016 Keith Packard <keithp@keithp.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * General Public License for more details. - * - * 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. - */ - -#ifndef _AO_LISP_OS_H_ -#define _AO_LISP_OS_H_ - -#include <stdio.h> -#include <stdlib.h> -#include <time.h> - -#define AO_LISP_POOL_TOTAL	3072 -#define AO_LISP_SAVE		1 -#define DBG_MEM_STATS		1 - -extern int ao_lisp_getc(void); - -static inline void -ao_lisp_os_flush() { -	fflush(stdout); -} - -static inline void -ao_lisp_abort(void) -{ -	abort(); -} - -static inline void -ao_lisp_os_led(int led) -{ -	printf("leds set to 0x%x\n", led); -} - -static inline void -ao_lisp_os_delay(int delay) -{ -	if (!delay) -		return; -	struct timespec ts = { -		.tv_sec = delay / 1000, -		.tv_nsec = (delay % 1000) * 1000000, -	}; -	nanosleep(&ts, NULL); -} -#endif diff --git a/src/test/ao_lisp_test.c b/src/test/ao_lisp_test.c deleted file mode 100644 index 68e3a202..00000000 --- a/src/test/ao_lisp_test.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright © 2016 Keith Packard <keithp@keithp.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * General Public License for more details. - */ - -#include "ao_lisp.h" -#include <stdio.h> - -static FILE *ao_lisp_file; -static int newline = 1; - -static char save_file[] = "lisp.image"; - -int -ao_lisp_os_save(void) -{ -	FILE	*save = fopen(save_file, "w"); - -	if (!save) { -		perror(save_file); -		return 0; -	} -	fwrite(ao_lisp_pool, 1, AO_LISP_POOL_TOTAL, save); -	fclose(save); -	return 1; -} - -int -ao_lisp_os_restore_save(struct ao_lisp_os_save *save, int offset) -{ -	FILE	*restore = fopen(save_file, "r"); -	size_t	ret; - -	if (!restore) { -		perror(save_file); -		return 0; -	} -	fseek(restore, offset, SEEK_SET); -	ret = fread(save, sizeof (struct ao_lisp_os_save), 1, restore); -	fclose(restore); -	if (ret != 1) -		return 0; -	return 1; -} - -int -ao_lisp_os_restore(void) -{ -	FILE	*restore = fopen(save_file, "r"); -	size_t	ret; - -	if (!restore) { -		perror(save_file); -		return 0; -	} -	ret = fread(ao_lisp_pool, 1, AO_LISP_POOL_TOTAL, restore); -	fclose(restore); -	if (ret != AO_LISP_POOL_TOTAL) -		return 0; -	return 1; -} - -int -ao_lisp_getc(void) -{ -	int c; - -	if (ao_lisp_file) -		return getc(ao_lisp_file); - -	if (newline) { -		printf("> "); -		newline = 0; -	} -	c = getchar(); -	if (c == '\n') -		newline = 1; -	return c; -} - -int -main (int argc, char **argv) -{ -	while (*++argv) { -		ao_lisp_file = fopen(*argv, "r"); -		if (!ao_lisp_file) { -			perror(*argv); -			exit(1); -		} -		ao_lisp_read_eval_print(); -		fclose(ao_lisp_file); -		ao_lisp_file = NULL; -	} -	ao_lisp_read_eval_print(); - -	printf ("collects: full: %d incremental %d\n", -		ao_lisp_collects[AO_LISP_COLLECT_FULL], -		ao_lisp_collects[AO_LISP_COLLECT_INCREMENTAL]); - -	printf ("freed: full %d incremental %d\n", -		ao_lisp_freed[AO_LISP_COLLECT_FULL], -		ao_lisp_freed[AO_LISP_COLLECT_INCREMENTAL]); - -	printf("loops: full %d incremental %d\n", -		ao_lisp_loops[AO_LISP_COLLECT_FULL], -		ao_lisp_loops[AO_LISP_COLLECT_INCREMENTAL]); - -	printf("loops per collect: full %f incremental %f\n", -	       (double) ao_lisp_loops[AO_LISP_COLLECT_FULL] / -	       (double) ao_lisp_collects[AO_LISP_COLLECT_FULL], -	       (double) ao_lisp_loops[AO_LISP_COLLECT_INCREMENTAL] / -	       (double) ao_lisp_collects[AO_LISP_COLLECT_INCREMENTAL]); - -	printf("freed per collect: full %f incremental %f\n", -	       (double) ao_lisp_freed[AO_LISP_COLLECT_FULL] / -	       (double) ao_lisp_collects[AO_LISP_COLLECT_FULL], -	       (double) ao_lisp_freed[AO_LISP_COLLECT_INCREMENTAL] / -	       (double) ao_lisp_collects[AO_LISP_COLLECT_INCREMENTAL]); - -	printf("freed per loop: full %f incremental %f\n", -	       (double) ao_lisp_freed[AO_LISP_COLLECT_FULL] / -	       (double) ao_lisp_loops[AO_LISP_COLLECT_FULL], -	       (double) ao_lisp_freed[AO_LISP_COLLECT_INCREMENTAL] / -	       (double) ao_lisp_loops[AO_LISP_COLLECT_INCREMENTAL]); -} diff --git a/src/test/hanoi.lisp b/src/test/hanoi.lisp deleted file mode 100644 index e2eb0fa0..00000000 --- a/src/test/hanoi.lisp +++ /dev/null @@ -1,155 +0,0 @@ -; -; Towers of Hanoi -; -; Copyright © 2016 Keith Packard <keithp@keithp.com> -; -; This program is free software; you can redistribute it and/or modify -; it under the terms of the GNU General Public License as published by -; the Free Software Foundation, either version 2 of the License, or -; (at your option) any later version. -; -; This program is distributed in the hope that it will be useful, but -; WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -; General Public License for more details. -; - -					; ANSI control sequences - -(defun move-to (col row) -  (patom "\033[" row ";" col "H") -  ) - -(defun clear () -  (patom "\033[2J") -  ) - -(defun display-string (x y str) -  (move-to x y) -  (patom str) -  ) - -					; Here's the pieces to display - -(setq stack '("     *     " "    ***    " "   *****   " "  *******  " " ********* " "***********")) - -					; Here's all of the stacks of pieces -					; This is generated when the program is run - -(setq stacks nil) - -					; Display one stack, clearing any -					; space above it - -(defun display-stack (x y clear stack) -  (cond ((= 0 clear) -	 (cond (stack  -		(display-string x y (car stack)) -		(display-stack x (1+ y) 0 (cdr stack)) -		) -	       ) -	 ) -	(t  -	 (display-string x y "                   ") -	 (display-stack x (1+ y) (1- clear) stack) -	 ) -	) -  ) - -					; Position of the top of the stack on the screen -					; Shorter stacks start further down the screen - -(defun stack-pos (y stack) -  (- y (length stack)) -  ) - -					; Display all of the stacks, spaced 20 columns apart - -(defun display-stacks (x y stacks) -  (cond (stacks -	 (display-stack x 0 (stack-pos y (car stacks)) (car stacks)) -	 (display-stacks (+ x 20) y (cdr stacks))) -	) -  ) - -					; Display all of the stacks, then move the cursor -					; out of the way and flush the output - -(defun display () -  (display-stacks 0 top stacks) -  (move-to 1 21) -  (flush) -  ) - -					; Reset stacks to the starting state, with -					; all of the pieces in the first stack and the -					; other two empty - -(defun reset-stacks () -  (setq stacks (list stack nil nil)) -  (setq top (+ (length stack) 3)) -  (length stack) -  ) - -					; more functions which could usefully -					; be in the rom image - -(defun min (a b) -  (cond ((< a b) a) -	(b) -	) -  ) - -					; Replace a stack in the list of stacks -					; with a new value - -(defun replace (list pos member) -  (cond ((= pos 0) (cons member (cdr list))) -	((cons (car list) (replace (cdr list) (1- pos) member))) -	) -  ) - -					; Move a piece from the top of one stack -					; to the top of another - -(setq move-delay 100) - -(defun move-piece (from to) -  (let ((from-stack (nth stacks from)) -	(to-stack (nth stacks to)) -	(piece (car from-stack))) -    (setq from-stack (cdr from-stack)) -    (setq to-stack (cons piece to-stack)) -    (setq stacks (replace stacks from from-stack)) -    (setq stacks (replace stacks to to-stack)) -    (display) -    (delay move-delay) -    ) -  ) - -; The implementation of the game - -(defun _hanoi (n from to use) -  (cond ((= 1 n) -	 (move-piece from to) -	 ) -	(t -	 (_hanoi (1- n) from use to) -	 (_hanoi 1 from to use) -	 (_hanoi (1- n) use to from) -	 ) -	) -  ) - -					; A pretty interface which -					; resets the state of the game, -					; clears the screen and runs -					; the program - -(defun hanoi () -  (setq len (reset-stacks)) -  (clear) -  (_hanoi len 0 1 2) -  (move-to 0 23) -  t -  )  | 
