diff options
| author | Keith Packard <keithp@keithp.com> | 2011-10-11 23:30:53 -0600 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2011-10-11 23:30:53 -0600 | 
| commit | 0debe7ffc2aab2b4d08f42e488cb783ae91c36ab (patch) | |
| tree | 30b1954f002d76ab14ad713d7cd9546ac8afe893 /src | |
| parent | 65873a3ad1d8e8b5ec002be2576c6f496543306a (diff) | |
altos: Add TeleTerra v0.2 product
This includes most of the necessary drivers.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/product/ao_teleterra_0_2.c | 36 | ||||
| -rw-r--r-- | src/teleterra-v0.2/Makefile | 104 | ||||
| -rw-r--r-- | src/teleterra-v0.2/ao_pins.h | 214 | 
3 files changed, 354 insertions, 0 deletions
| diff --git a/src/product/ao_teleterra_0_2.c b/src/product/ao_teleterra_0_2.c new file mode 100644 index 00000000..a6c10158 --- /dev/null +++ b/src/product/ao_teleterra_0_2.c @@ -0,0 +1,36 @@ +/* + * Copyright © 2009 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. + */ + +#define AO_NO_ADC_ISR 1 +#include "ao.h" + +void +main(void) +{ +	ao_clock_init(); + +	ao_timer_init(); +	ao_beep_init(); +	ao_cmd_init(); +	ao_usb_init(); +	ao_serial_init(); +	ao_gps_init(); +	ao_monitor_init(0, TRUE); +	ao_radio_init(); +	ao_config_init(); +	ao_start_scheduler(); +} diff --git a/src/teleterra-v0.2/Makefile b/src/teleterra-v0.2/Makefile new file mode 100644 index 00000000..892c37e2 --- /dev/null +++ b/src/teleterra-v0.2/Makefile @@ -0,0 +1,104 @@ +# +# TeleTerra build file +# + +vpath %.c ..:../core:../cc1111:../drivers:../product +vpath %.h ..:../core:../cc1111:../drivers:../product +vpath ao-make-product.5c ../util + +ifndef VERSION +include ../Version +endif + +INC = \ +	ao.h \ +	ao_pins.h \ +	cc1111.h \ +	ao_product.h + +CORE_SRC = \ +	ao_cmd.c \ +	ao_config.c \ +	ao_monitor.c \ +	ao_log_single.c \ +	ao_log_telem.c \ +	ao_mutex.c \ +	ao_panic.c \ +	ao_rssi.c \ +	ao_state.c \ +	ao_stdio.c \ +	ao_storage.c \ +	ao_task.c + +CC1111_SRC = \ +	ao_beep.c \ +	ao_dbg.c \ +	ao_dma.c \ +	ao_led.c \ +	ao_packet.c \ +	ao_packet_master.c \ +	ao_radio.c \ +	ao_romconfig.c \ +	ao_serial.c \ +	ao_spi.c \ +	ao_string.c \ +	ao_timer.c \ +	ao_usb.c \ +	ao_lcd_port.c \ +	_bp.c + +DRIVER_SRC = \ +	ao_m25.c \ +	ao_lcd.c \ +	ao_gps_skytraq.c + +PRODUCT_SRC = \ +	ao_teleterra_0_2.c + +SRC = \ +	$(CORE_SRC) \ +	$(CC1111_SRC) \ +	$(DRIVER_SRC) \ +	$(PRODUCT_SRC) + +TELETERRA_VER=0.2 +TELETERRA_DEF=0_2 +PROG = teleterra-v$(TELETERRA_VER)-$(VERSION).ihx +PRODUCT=TeleTerra-v$(TELETERRA_VER) +PRODUCT_DEF=-DTELETERRA_V_$(TELETERRA_DEF) +IDPRODUCT=0x000d + +include ../cc1111/Makefile.cc1111 + +NICKLE=nickle +CHECK_STACK=sh ../util/check-stack + +V=0 +# The user has explicitly enabled quiet compilation. +ifeq ($(V),0) +quiet = @printf "  $1 $2 $@\n"; $($1) +endif +# Otherwise, print the full command line. +quiet ?= $($1) + +all: ../$(PROG) + +../$(PROG): $(REL) Makefile +	$(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(REL) && cp $(PROG) $(PMAP) .. +	$(call quiet,CHECK_STACK) ../cc1111/ao_arch.h $(PMEM) + +ao_product.h: ao-make-product.5c ../Version +	$(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@ + +distclean:	clean + +clean: +	rm -f $(ADB) $(ASM) $(LNK) $(LST) $(REL) $(RST) $(SYM) +	rm -f $(PROG) $(PCDB) $(PLNK) $(PMAP) $(PMEM) $(PAOM) +	rm -f ao_product.h +	rm -f ../$(PROG) ../$(PMAP) + +install: + +uninstall: + diff --git a/src/teleterra-v0.2/ao_pins.h b/src/teleterra-v0.2/ao_pins.h new file mode 100644 index 00000000..671d3876 --- /dev/null +++ b/src/teleterra-v0.2/ao_pins.h @@ -0,0 +1,214 @@ +/* + * Copyright © 2011 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_PINS_H_ +#define _AO_PINS_H_ + +#ifdef TELETERRA_V_0_2 +	#define HAS_FLIGHT		0 +	#define HAS_USB			1 +	#define HAS_BEEP		1 +	#define HAS_GPS			1 +	#define HAS_SERIAL_1		1 +	#define HAS_ADC			0 +	#define USE_SERIAL_STDIN	0 +	#define HAS_EEPROM		1 +	#define HAS_LOG			1 +	#define USE_INTERNAL_FLASH	0 +	#define HAS_DBG			1 +	#define DBG_ON_P1 		1 +	#define DBG_ON_P0 		0 +	#define IGNITE_ON_P2		0 +	#define IGNITE_ON_P0		0 +	#define PACKET_HAS_MASTER	1 +	#define PACKET_HAS_SLAVE	0 + +	#define HAS_COMPANION		0 + +	#define LEDS_AVAILABLE		0 +	#define HAS_EXTERNAL_TEMP	0 +	#define HAS_ACCEL_REF		0 +	#define HAS_ACCEL		0 +	#define HAS_IGNITE		0 +	#define HAS_MONITOR		1 +	#define LEGACY_MONITOR		0 +	#define HAS_RSSI		0 +	#define HAS_AES			0 + +	#define SPI_CS_ON_P1		1 +	#define SPI_CS_ON_P0		0 +	#define M25_CS_MASK		0x04 +	#define M25_MAX_CHIPS		1 +#endif + +#if DBG_ON_P1 + +	#define DBG_CLOCK	(1 << 4)	/* mi0 */ +	#define DBG_DATA	(1 << 5)	/* mo0 */ +	#define DBG_RESET_N	(1 << 3)	/* c0 */ + +	#define DBG_CLOCK_PIN	(P1_4) +	#define DBG_DATA_PIN	(P1_5) +	#define DBG_RESET_N_PIN	(P1_3) + +	#define DBG_PORT_NUM	1 +	#define DBG_PORT	P1 +	#define DBG_PORT_SEL	P1SEL +	#define DBG_PORT_INP	P1INP +	#define DBG_PORT_DIR	P1DIR + +#endif /* DBG_ON_P1 */ + +#if DBG_ON_P0 + +	#define DBG_CLOCK	(1 << 3) +	#define DBG_DATA	(1 << 4) +	#define DBG_RESET_N	(1 << 5) + +	#define DBG_CLOCK_PIN	(P0_3) +	#define DBG_DATA_PIN	(P0_4) +	#define DBG_RESET_N_PIN	(P0_5) + +	#define DBG_PORT_NUM	0 +	#define DBG_PORT	P0 +	#define DBG_PORT_SEL	P0SEL +	#define DBG_PORT_INP	P0INP +	#define DBG_PORT_DIR	P0DIR + +#endif /* DBG_ON_P0 */ + +#if COMPANION_CS_ON_P1 +	#define COMPANION_CS_PORT	P1 +	#define COMPANION_CS_SEL	P1SEL +	#define COMPANION_CS_DIR	P1DIR +#endif + +#if SPI_CS_ON_P1 +	#define SPI_CS_PORT	P1 +	#define SPI_CS_SEL	P1SEL +	#define SPI_CS_DIR	P1DIR +#endif + +#if SPI_CS_ON_P0 +	#define SPI_CS_PORT	P0 +	#define SPI_CS_SEL	P0SEL +	#define SPI_CS_DIR	P0DIR +#endif + +#ifndef IGNITE_ON_P2 +#error Please define IGNITE_ON_P2 +#endif + +#ifndef IGNITE_ON_P0 +#error Please define IGNITE_ON_P0 +#endif + +#ifndef HAS_SERIAL_1 +#error Please define HAS_SERIAL_1 +#endif + +#ifndef USE_SERIAL_STDIN +#error Please define USE_SERIAL_STDIN +#endif + +#ifndef HAS_ADC +#error Please define HAS_ADC +#endif + +#ifndef HAS_EEPROM +#error Please define HAS_EEPROM +#endif + +#ifndef HAS_LOG +#error Please define HAS_LOG +#endif + +#if HAS_EEPROM +#ifndef USE_INTERNAL_FLASH +#error Please define USE_INTERNAL_FLASH +#endif +#endif + +#ifndef HAS_DBG +#error Please define HAS_DBG +#endif + +#ifndef HAS_IGNITE +#error Please define HAS_IGNITE +#endif + +#if HAS_IGNITE +#define HAS_IGNITE_REPORT 1 +#endif + +#ifndef PACKET_HAS_MASTER +#error Please define PACKET_HAS_MASTER +#endif + +#ifndef PACKET_HAS_SLAVE +#error Please define PACKET_HAS_SLAVE +#endif + +#ifndef HAS_MONITOR +#error Please define HAS_MONITOR +#endif + +#if HAS_MONITOR +#ifndef HAS_RSSI +#error Please define HAS_RSSI +#endif +#endif + +#ifndef HAS_ADC +#error Please define HAS_ADC +#endif + +#if HAS_ADC + +#if HAS_ACCEL +#ifndef HAS_ACCEL_REF +#error Please define HAS_ACCEL_REF +#endif +#else +#define HAS_ACCEL_REF 0 +#endif + +#endif /* HAS_ADC */ + +#if IGNITE_ON_P2 +#define AO_IGNITER_DROGUE	P2_3 +#define AO_IGNITER_MAIN		P2_4 +#define AO_IGNITER_DIR		P2DIR +#define AO_IGNITER_DROGUE_BIT	(1 << 3) +#define AO_IGNITER_MAIN_BIT	(1 << 4) +#endif + +#if IGNITE_ON_P0 +#define AO_IGNITER_DROGUE	P0_5 +#define AO_IGNITER_MAIN		P0_4 +#define AO_IGNITER_DIR		P0DIR +#define AO_IGNITER_DROGUE_BIT	(1 << 5) +#define AO_IGNITER_MAIN_BIT	(1 << 4) +#endif + +/* test these values with real igniters */ +#define AO_IGNITER_OPEN		1000 +#define AO_IGNITER_CLOSED	7000 +#define AO_IGNITER_FIRE_TIME	AO_MS_TO_TICKS(50) +#define AO_IGNITER_CHARGE_TIME	AO_MS_TO_TICKS(2000) + +#endif /* _AO_PINS_H_ */ | 
