diff options
Diffstat (limited to 'src/telelco-v0.1')
| -rw-r--r-- | src/telelco-v0.1/.gitignore | 2 | ||||
| -rw-r--r-- | src/telelco-v0.1/Makefile | 99 | ||||
| -rw-r--r-- | src/telelco-v0.1/ao_lco.c | 392 | ||||
| -rw-r--r-- | src/telelco-v0.1/ao_lco.h | 25 | ||||
| -rw-r--r-- | src/telelco-v0.1/ao_pins.h | 226 | ||||
| -rw-r--r-- | src/telelco-v0.1/ao_telelco.c | 72 |
6 files changed, 0 insertions, 816 deletions
diff --git a/src/telelco-v0.1/.gitignore b/src/telelco-v0.1/.gitignore deleted file mode 100644 index 54267ec1..00000000 --- a/src/telelco-v0.1/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -ao_product.h -telelco-* diff --git a/src/telelco-v0.1/Makefile b/src/telelco-v0.1/Makefile deleted file mode 100644 index f7628c30..00000000 --- a/src/telelco-v0.1/Makefile +++ /dev/null @@ -1,99 +0,0 @@ -# -# AltOS build for TeleLCO -# -# - -include ../stm/Makefile.defs - -INC = \ - ao.h \ - ao_arch.h \ - ao_arch_funcs.h \ - ao_boot.h \ - ao_companion.h \ - ao_data.h \ - ao_sample.h \ - ao_pins.h \ - ao_product.h \ - ao_seven_segment.h \ - ao_lco.h \ - ao_lco_cmd.h \ - ao_lco_func.h \ - ao_radio_spi.h \ - ao_radio_cmac.h \ - stm32l.h - -# -# Common AltOS sources -# - -#PROFILE=ao_profile.c -#PROFILE_DEF=-DAO_PROFILE=1 - -ALTOS_SRC = \ - ao_boot_chain.c \ - ao_interrupt.c \ - ao_product.c \ - ao_romconfig.c \ - ao_cmd.c \ - ao_config.c \ - ao_task.c \ - ao_led.c \ - ao_stdio.c \ - ao_panic.c \ - ao_timer.c \ - ao_mutex.c \ - ao_freq.c \ - ao_dma_stm.c \ - ao_spi_stm.c \ - ao_beep_stm.c \ - ao_storage.c \ - ao_eeprom_stm.c \ - ao_lcd_stm.c \ - ao_usb_stm.c \ - ao_exti_stm.c \ - ao_radio_master.c \ - ao_seven_segment.c \ - ao_quadrature.c \ - ao_button.c \ - ao_event.c \ - ao_lco.c \ - ao_lco_cmd.c \ - ao_lco_func.c \ - ao_radio_cmac_cmd.c - -PRODUCT=TeleLCO-v0.1 -PRODUCT_DEF=-DTELEMEGA -IDPRODUCT=0x0023 - -CFLAGS = $(PRODUCT_DEF) $(STM_CFLAGS) $(PROFILE_DEF) -Os -g - -PROGNAME=telelco-v0.1 -PROG=$(PROGNAME)-$(VERSION).elf -HEX=$(PROGNAME)-$(VERSION).ihx - -SRC=$(ALTOS_SRC) ao_telelco.c -OBJ=$(SRC:.c=.o) - -all: $(PROG) $(HEX) - -$(PROG): Makefile $(OBJ) altos.ld - $(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(OBJ) $(LIBS) - -../altitude.h: make-altitude - nickle $< > $@ - -$(OBJ): $(INC) - -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 *.o $(PROGNAME)-*.elf $(PROGNAME)-*.ihx - rm -f ao_product.h - -install: - -uninstall: diff --git a/src/telelco-v0.1/ao_lco.c b/src/telelco-v0.1/ao_lco.c deleted file mode 100644 index 649bf586..00000000 --- a/src/telelco-v0.1/ao_lco.c +++ /dev/null @@ -1,392 +0,0 @@ -/* - * Copyright © 2012 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. - * - * 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. - */ - -#include <ao.h> -#include <ao_lco.h> -#include <ao_event.h> -#include <ao_seven_segment.h> -#include <ao_quadrature.h> -#include <ao_lco_func.h> -#include <ao_radio_cmac.h> - -#define DEBUG 1 - -#if DEBUG -static uint8_t ao_lco_debug; -#define PRINTD(...) do { if (!ao_lco_debug) break; printf ("\r%5u %s: ", ao_tick_count, __func__); printf(__VA_ARGS__); flush(); } while(0) -#else -#define PRINTD(...) -#endif - -#define AO_LCO_PAD_DIGIT 0 -#define AO_LCO_BOX_DIGIT_1 1 -#define AO_LCO_BOX_DIGIT_10 2 - -static uint8_t ao_lco_min_box, ao_lco_max_box; -static uint8_t ao_lco_mutex; -static uint8_t ao_lco_pad; -static uint8_t ao_lco_box; -static uint8_t ao_lco_armed; -static uint8_t ao_lco_firing; -static uint8_t ao_lco_valid; -static uint8_t ao_lco_got_channels; -static uint16_t ao_lco_tick_offset; - -static struct ao_pad_query ao_pad_query; - -static void -ao_lco_set_pad(void) -{ - ao_seven_segment_set(AO_LCO_PAD_DIGIT, ao_lco_pad + 1); -} - -static void -ao_lco_set_box(void) -{ - ao_seven_segment_set(AO_LCO_BOX_DIGIT_1, ao_lco_box % 10); - ao_seven_segment_set(AO_LCO_BOX_DIGIT_10, ao_lco_box / 10); -} - -#define MASK_SIZE(n) (((n) + 7) >> 3) -#define MASK_ID(n) ((n) >> 3) -#define MASK_SHIFT(n) ((n) & 7) - -static uint8_t ao_lco_box_mask[MASK_SIZE(AO_PAD_MAX_BOXES)]; - -static uint8_t -ao_lco_box_present(uint8_t box) -{ - if (box >= AO_PAD_MAX_BOXES) - return 0; - return (ao_lco_box_mask[MASK_ID(box)] >> MASK_SHIFT(box)) & 1; -} - -static uint8_t -ao_lco_pad_present(uint8_t pad) -{ - if (!ao_lco_got_channels || !ao_pad_query.channels) - return pad == 0; - if (pad >= AO_PAD_MAX_CHANNELS) - return 0; - return (ao_pad_query.channels >> pad) & 1; -} - -static uint8_t -ao_lco_pad_first(void) -{ - uint8_t pad; - - for (pad = 0; pad < AO_PAD_MAX_CHANNELS; pad++) - if (ao_lco_pad_present(pad)) - return pad; - return 0; -} - -static void -ao_lco_input(void) -{ - static struct ao_event event; - int8_t dir, new_box, new_pad; - - ao_beep_for(AO_BEEP_MID, AO_MS_TO_TICKS(200)); - ao_lco_set_pad(); - ao_lco_set_box(); - for (;;) { - ao_event_get(&event); - PRINTD("event type %d unit %d value %d\n", - event.type, event.unit, event.value); - switch (event.type) { - case AO_EVENT_QUADRATURE: - switch (event.unit) { - case AO_QUADRATURE_PAD: - if (!ao_lco_armed) { - if (event.value == ao_lco_pad) - break; - dir = ((int8_t) event.value - (int8_t) ao_lco_pad) > 0 ? 1 : -1; - new_pad = event.value; - while (!ao_lco_pad_present(new_pad)) { - new_pad += dir; - if (new_pad > AO_PAD_MAX_CHANNELS) - new_pad = 0; - else if (new_pad < 0) - new_pad = AO_PAD_MAX_CHANNELS - 1; - if (new_pad == ao_lco_pad) - break; - } - if (new_pad != ao_lco_pad) { - ao_lco_pad = new_pad; - ao_quadrature_count[AO_QUADRATURE_PAD] = ao_lco_pad; - ao_lco_set_pad(); - } - } - break; - case AO_QUADRATURE_BOX: - if (!ao_lco_armed) { - if (event.value == ao_lco_box) - break; - dir = ((int8_t) event.value - (int8_t) ao_lco_box) > 0 ? 1 : -1; - new_box = event.value; - while (!ao_lco_box_present(new_box)) { - new_box += dir; - if (new_box > ao_lco_max_box) - new_box = ao_lco_min_box; - else if (new_box < ao_lco_min_box) - new_box = ao_lco_min_box; - if (new_box == ao_lco_box) - break; - } - ao_quadrature_count[AO_QUADRATURE_PAD] = new_box; - if (ao_lco_box != new_box) { - ao_lco_box = new_box; - ao_lco_got_channels = 0; - ao_lco_set_box(); - } - } - break; - } - break; - case AO_EVENT_BUTTON: - switch (event.unit) { - case AO_BUTTON_ARM: - ao_lco_armed = event.value; - PRINTD("Armed %d\n", ao_lco_armed); - ao_wakeup(&ao_lco_armed); - break; - case AO_BUTTON_FIRE: - if (ao_lco_armed) { - ao_lco_firing = event.value; - PRINTD("Firing %d\n", ao_lco_firing); - ao_wakeup(&ao_lco_armed); - } - break; - } - break; - } - } -} - -static AO_LED_TYPE continuity_led[AO_LED_CONTINUITY_NUM] = { -#ifdef AO_LED_CONTINUITY_0 - AO_LED_CONTINUITY_0, -#endif -#ifdef AO_LED_CONTINUITY_1 - AO_LED_CONTINUITY_1, -#endif -#ifdef AO_LED_CONTINUITY_2 - AO_LED_CONTINUITY_2, -#endif -#ifdef AO_LED_CONTINUITY_3 - AO_LED_CONTINUITY_3, -#endif -#ifdef AO_LED_CONTINUITY_4 - AO_LED_CONTINUITY_4, -#endif -#ifdef AO_LED_CONTINUITY_5 - AO_LED_CONTINUITY_5, -#endif -#ifdef AO_LED_CONTINUITY_6 - AO_LED_CONTINUITY_6, -#endif -#ifdef AO_LED_CONTINUITY_7 - AO_LED_CONTINUITY_7, -#endif -}; - -static void -ao_lco_update(void) -{ - int8_t r; - uint8_t c; - - r = ao_lco_query(ao_lco_box, &ao_pad_query, &ao_lco_tick_offset); - if (r == AO_RADIO_CMAC_OK) { - c = ao_lco_got_channels; - ao_lco_got_channels = 1; - ao_lco_valid = 1; - if (!c) { - ao_lco_pad = ao_lco_pad_first(); - ao_lco_set_pad(); - } - } else - ao_lco_valid = 0; - -#if 0 - PRINTD("lco_query success arm_status %d i0 %d i1 %d i2 %d i3 %d\n", - query.arm_status, - query.igniter_status[0], - query.igniter_status[1], - query.igniter_status[2], - query.igniter_status[3]); -#endif - - ao_wakeup(&ao_pad_query); -} - -static void -ao_lco_box_set_present(uint8_t box) -{ - if (box >= AO_PAD_MAX_BOXES) - return; - ao_lco_box_mask[MASK_ID(box)] |= 1 << MASK_SHIFT(box); -} - -static void -ao_lco_search(void) -{ - uint16_t tick_offset; - int8_t r; - - ao_lco_min_box = 0xff; - ao_lco_max_box = 0x00; - for (ao_lco_box = 0; ao_lco_box < AO_PAD_MAX_BOXES; ao_lco_box++) { - if ((ao_lco_box % 10) == 0) - ao_lco_set_box(); - r = ao_lco_query(ao_lco_box, &ao_pad_query, &ao_lco_tick_offset); - if (r == AO_RADIO_CMAC_OK) { - if (ao_lco_box < ao_lco_min_box) - ao_lco_min_box = ao_lco_box; - if (ao_lco_box > ao_lco_max_box) - ao_lco_max_box = ao_lco_box; - ao_lco_box_set_present(ao_lco_box); - } - } - if (ao_lco_min_box <= ao_lco_max_box) - ao_lco_box = ao_lco_min_box; - else - ao_lco_min_box = ao_lco_max_box = ao_lco_box = 0; - ao_lco_valid = 0; - ao_lco_got_channels = 0; - ao_lco_pad = 0; -} - -static void -ao_lco_igniter_status(void) -{ - uint8_t c; - uint16_t delay; - - for (;;) { - ao_sleep(&ao_pad_query); - if (!ao_lco_valid) { - ao_led_on(AO_LED_RED); - ao_led_off(AO_LED_GREEN); - continue; - } - PRINTD("RSSI %d\n", ao_radio_cmac_rssi); - if (ao_radio_cmac_rssi < -90) - ao_led_on(AO_LED_RED|AO_LED_GREEN); - else { - ao_led_on(AO_LED_GREEN); - ao_led_off(AO_LED_RED); - } - if (ao_pad_query.arm_status) - ao_led_on(AO_LED_REMOTE_ARM); - else - ao_led_off(AO_LED_REMOTE_ARM); - for (c = 0; c < AO_LED_CONTINUITY_NUM; c++) { - uint8_t status; - - if (ao_pad_query.channels & (1 << c)) - status = ao_pad_query.igniter_status[c]; - else - status = AO_PAD_IGNITER_STATUS_NO_IGNITER_RELAY_OPEN; - if (status == AO_PAD_IGNITER_STATUS_GOOD_IGNITER_RELAY_OPEN) - ao_led_on(continuity_led[c]); - else - ao_led_off(continuity_led[c]); - } - } -} - -static void -ao_lco_arm_warn(void) -{ - for (;;) { - while (!ao_lco_armed) - ao_sleep(&ao_lco_armed); - ao_beep_for(AO_BEEP_MID, AO_MS_TO_TICKS(200)); - ao_delay(AO_MS_TO_TICKS(200)); - } -} - -static struct ao_task ao_lco_input_task; -static struct ao_task ao_lco_monitor_task; -static struct ao_task ao_lco_arm_warn_task; -static struct ao_task ao_lco_igniter_status_task; - -static void -ao_lco_monitor(void) -{ - uint16_t delay; - - ao_lco_search(); - ao_add_task(&ao_lco_input_task, ao_lco_input, "lco input"); - ao_add_task(&ao_lco_arm_warn_task, ao_lco_arm_warn, "lco arm warn"); - ao_add_task(&ao_lco_igniter_status_task, ao_lco_igniter_status, "lco igniter status"); - for (;;) { - PRINTD("monitor armed %d firing %d offset %d\n", - ao_lco_armed, ao_lco_firing, ao_lco_tick_offset); - - if (ao_lco_armed && ao_lco_firing) { - PRINTD("Firing box %d pad %d: valid %d\n", - ao_lco_box, ao_lco_pad, ao_lco_valid); - if (!ao_lco_valid) - ao_lco_update(); - if (ao_lco_valid) - ao_lco_ignite(ao_lco_box, 1 << ao_lco_pad, ao_lco_tick_offset); - } else if (ao_lco_armed) { - PRINTD("Arming box %d pad %d\n", - ao_lco_box, ao_lco_pad); - if (!ao_lco_valid) - ao_lco_update(); - ao_lco_arm(ao_lco_box, 1 << ao_lco_pad, ao_lco_tick_offset); - ao_lco_update(); - } else { - ao_lco_update(); - } - if (ao_lco_armed && ao_lco_firing) - delay = AO_MS_TO_TICKS(100); - else - delay = AO_SEC_TO_TICKS(1); - ao_sleep_for(&ao_lco_armed, delay); - } -} - -#if DEBUG -void -ao_lco_set_debug(void) -{ - ao_cmd_decimal(); - if (ao_cmd_status == ao_cmd_success) - ao_lco_debug = ao_cmd_lex_i != 0; -} - -__code struct ao_cmds ao_lco_cmds[] = { - { ao_lco_set_debug, "D <0 off, 1 on>\0Debug" }, - { 0, NULL } -}; -#endif - -void -ao_lco_init(void) -{ - ao_add_task(&ao_lco_monitor_task, ao_lco_monitor, "lco monitor"); -#if DEBUG - ao_cmd_register(&ao_lco_cmds[0]); -#endif -} diff --git a/src/telelco-v0.1/ao_lco.h b/src/telelco-v0.1/ao_lco.h deleted file mode 100644 index 5721eed5..00000000 --- a/src/telelco-v0.1/ao_lco.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright © 2012 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. - * - * 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_LCO_H_ -#define _AO_LCO_H_ - -void -ao_lco_init(void); - -#endif /* _AO_LCO_H_ */ diff --git a/src/telelco-v0.1/ao_pins.h b/src/telelco-v0.1/ao_pins.h deleted file mode 100644 index 23115997..00000000 --- a/src/telelco-v0.1/ao_pins.h +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Copyright © 2012 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. - * - * 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_ - -/* 8MHz High speed external crystal */ -#define AO_HSE 8000000 - -/* PLLVCO = 96MHz (so that USB will work) */ -#define AO_PLLMUL 12 -#define AO_RCC_CFGR_PLLMUL (STM_RCC_CFGR_PLLMUL_12) - -/* SYSCLK = 32MHz (no need to go faster than CPU) */ -#define AO_PLLDIV 3 -#define AO_RCC_CFGR_PLLDIV (STM_RCC_CFGR_PLLDIV_3) - -/* HCLK = 32MHz (CPU clock) */ -#define AO_AHB_PRESCALER 1 -#define AO_RCC_CFGR_HPRE_DIV STM_RCC_CFGR_HPRE_DIV_1 - -/* Run APB1 at 16MHz (HCLK/2) */ -#define AO_APB1_PRESCALER 2 -#define AO_RCC_CFGR_PPRE1_DIV STM_RCC_CFGR_PPRE2_DIV_2 - -/* Run APB2 at 16MHz (HCLK/2) */ -#define AO_APB2_PRESCALER 2 -#define AO_RCC_CFGR_PPRE2_DIV STM_RCC_CFGR_PPRE2_DIV_2 - -#define HAS_EEPROM 1 -#define USE_INTERNAL_FLASH 1 -#define HAS_USB 1 -#define HAS_BEEP 1 -#define HAS_RADIO 1 -#define HAS_TELEMETRY 0 -#define HAS_AES 1 - -#define HAS_SPI_1 0 -#define SPI_1_PA5_PA6_PA7 0 -#define SPI_1_PB3_PB4_PB5 0 -#define SPI_1_PE13_PE14_PE15 0 - -#define HAS_SPI_2 1 /* CC1111 */ -#define SPI_2_PB13_PB14_PB15 1 -#define SPI_2_PD1_PD3_PD4 0 -#define SPI_2_GPIO (&stm_gpiob) -#define SPI_2_SCK 13 -#define SPI_2_MISO 14 -#define SPI_2_MOSI 15 -#define SPI_2_OSPEEDR STM_OSPEEDR_10MHz - -#define HAS_I2C_1 0 - -#define HAS_I2C_2 0 - -#define PACKET_HAS_SLAVE 0 -#define PACKET_HAS_MASTER 0 - -/* - * Radio is a cc1111 connected via SPI - */ -#define AO_RADIO_CAL_DEFAULT 1186611 - -#define AO_RADIO_SPI_BUS AO_SPI_2_PB13_PB14_PB15 -#define AO_RADIO_CS_PORT (&stm_gpiob) -#define AO_RADIO_CS_PIN 12 - -#define AO_RADIO_INT_PORT (&stm_gpioc) -#define AO_RADIO_INT_PIN 14 - -#define LOW_LEVEL_DEBUG 0 - -#define LED_PORT_ENABLE STM_RCC_AHBENR_GPIOCEN -#define LED_PORT (&stm_gpioc) -#define LED_PIN_RED 7 -#define LED_PIN_GREEN 8 -#define LED_PIN_CONTINUITY_3 9 -#define LED_PIN_CONTINUITY_2 10 -#define LED_PIN_CONTINUITY_1 11 -#define LED_PIN_CONTINUITY_0 12 -#define LED_PIN_REMOTE_ARM 13 -#define AO_LED_RED (1 << LED_PIN_RED) -#define AO_LED_GREEN (1 << LED_PIN_GREEN) -#define AO_LED_CONTINUITY_3 (1 << LED_PIN_CONTINUITY_3) -#define AO_LED_CONTINUITY_2 (1 << LED_PIN_CONTINUITY_2) -#define AO_LED_CONTINUITY_1 (1 << LED_PIN_CONTINUITY_1) -#define AO_LED_CONTINUITY_0 (1 << LED_PIN_CONTINUITY_0) - -#define AO_LED_CONTINUITY_NUM 4 - -#define AO_LED_REMOTE_ARM (1 << LED_PIN_REMOTE_ARM) - -#define LEDS_AVAILABLE (AO_LED_RED | \ - AO_LED_GREEN | \ - AO_LED_CONTINUITY_3 | \ - AO_LED_CONTINUITY_2 | \ - AO_LED_CONTINUITY_1 | \ - AO_LED_CONTINUITY_0 | \ - AO_LED_REMOTE_ARM) - -/* LCD displays */ - -#define AO_LCD_STM_SEG_ENABLED_0 ( \ - (1 << 0) | /* PA1 */ \ - (1 << 1) | /* PA2 */ \ - (1 << 2) | /* PA3 */ \ - (1 << 3) | /* PA6 */ \ - (1 << 4) | /* PA7 */ \ - (1 << 5) | /* PB0 */ \ - (1 << 6) | /* PB1 */ \ - (1 << 7) | /* PB3 */ \ - (0 << 8) | /* PB4 */ \ - (0 << 9) | /* PB5 */ \ - (0 << 10) | /* PB10 */ \ - (0 << 11) | /* PB11 */ \ - (0 << 12) | /* PB12 */ \ - (0 << 13) | /* PB13 */ \ - (0 << 14) | /* PB14 */ \ - (0 << 15) | /* PB15 */ \ - (0 << 16) | /* PB8 */ \ - (0 << 17) | /* PA15 */ \ - (0 << 18) | /* PC0 */ \ - (0 << 19) | /* PC1 */ \ - (0 << 20) | /* PC2 */ \ - (0 << 21) | /* PC3 */ \ - (0 << 22) | /* PC4 */ \ - (0 << 23) | /* PC5 */ \ - (0 << 24) | /* PC6 */ \ - (0 << 25) | /* PC7 */ \ - (0 << 26) | /* PC8 */ \ - (0 << 27) | /* PC9 */ \ - (0 << 28) | /* PC10 or PD8 */ \ - (0 << 29) | /* PC11 or PD9 */ \ - (0 << 30) | /* PC12 or PD10 */ \ - (0 << 31)) /* PD2 or PD11 */ - -#define AO_LCD_STM_SEG_ENABLED_1 ( \ - (0 << 0) | /* PD12 */ \ - (0 << 1) | /* PD13 */ \ - (0 << 2) | /* PD14 */ \ - (0 << 3) | /* PD15 */ \ - (0 << 4) | /* PE0 */ \ - (0 << 5) | /* PE1 */ \ - (0 << 6) | /* PE2 */ \ - (0 << 7)) /* PE3 */ - -#define AO_LCD_STM_COM_ENABLED ( \ - (1 << 0) | /* PA8 */ \ - (1 << 1) | /* PA9 */ \ - (1 << 2) | /* PA10 */ \ - (0 << 3) | /* PB9 */ \ - (0 << 4) | /* PC10 */ \ - (0 << 5) | /* PC11 */ \ - (0 << 6)) /* PC12 */ - -#define AO_LCD_28_ON_C 0 - -#define AO_LCD_DUTY STM_LCD_CR_DUTY_1_4 - -#define AO_SEGMENT_0 0 -#define AO_SEGMENT_1 5 -#define AO_SEGMENT_2 1 -#define AO_SEGMENT_3 6 -#define AO_SEGMENT_4 4 -#define AO_SEGMENT_5 2 -#define AO_SEGMENT_6 3 -#define AO_SEGMENT_7 7 - -/* - * Use event queue for input devices - */ - -#define AO_EVENT 1 - -/* - * Knobs - */ - -#define AO_QUADRATURE_COUNT 2 -#define AO_QUADRATURE_MODE 0 - -#define AO_QUADRATURE_0_PORT &stm_gpioc -#define AO_QUADRATURE_0_A 3 -#define AO_QUADRATURE_0_B 2 - -#define AO_QUADRATURE_PAD 0 - -#define AO_QUADRATURE_1_PORT &stm_gpioc -#define AO_QUADRATURE_1_A 1 -#define AO_QUADRATURE_1_B 0 - -#define AO_QUADRATURE_BOX 1 - -/* - * Buttons - */ - -#define AO_BUTTON_COUNT 2 -#define AO_BUTTON_MODE AO_EXTI_MODE_PULL_UP - -#define AO_BUTTON_0_PORT &stm_gpioc -#define AO_BUTTON_0 4 - -#define AO_BUTTON_ARM 0 - -#define AO_BUTTON_1_PORT &stm_gpioc -#define AO_BUTTON_1 5 - -#define AO_BUTTON_FIRE 1 - -#endif /* _AO_PINS_H_ */ diff --git a/src/telelco-v0.1/ao_telelco.c b/src/telelco-v0.1/ao_telelco.c deleted file mode 100644 index 608f093d..00000000 --- a/src/telelco-v0.1/ao_telelco.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * 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; 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. - * - * 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. - */ - -#include <ao.h> -#include <ao_exti.h> -#include <ao_packet.h> -#include <ao_companion.h> -#include <ao_profile.h> -#include <ao_pyro.h> -#include <ao_aes.h> -#include <ao_seven_segment.h> -#include <ao_quadrature.h> -#include <ao_button.h> -#include <ao_lco.h> -#include <ao_lco_cmd.h> -#include <ao_radio_cmac_cmd.h> - -int -main(void) -{ - ao_clock_init(); - - ao_led_init(LEDS_AVAILABLE); - ao_led_on(AO_LED_GREEN); - ao_task_init(); - - ao_timer_init(); - - ao_spi_init(); - ao_dma_init(); - ao_exti_init(); - - ao_beep_init(); - ao_cmd_init(); - - ao_lcd_stm_init(); - ao_seven_segment_init(); - ao_quadrature_init(); - ao_button_init(); - - ao_storage_init(); - - ao_radio_init(); - - ao_usb_init(); - - ao_config_init(); - - ao_quadrature_init(); - ao_button_init(); - ao_lco_init(); - ao_lco_cmd_init(); -// ao_radio_cmac_cmd_init(); - - ao_start_scheduler(); - return 0; -} |
