Merge branch 'master' into stm-flash
authorKeith Packard <keithp@keithp.com>
Mon, 22 Apr 2013 22:20:51 +0000 (17:20 -0500)
committerKeith Packard <keithp@keithp.com>
Mon, 22 Apr 2013 22:20:51 +0000 (17:20 -0500)
Conflicts:
ao-tools/ao-stmload/ao-stmload.c

1  2 
altoslib/Makefile.am
altosui/Makefile.am
ao-tools/lib/cc-usb.c
src/core/ao.h
src/stm/Makefile.defs
src/telebt-v1.0/ao_telebt.c

diff --combined altoslib/Makefile.am
index 5d6a5c088b7a3b11610e1c2273d2bde804058788,30a9d95473f860a97cd922b30e9cfa3a95cdf526..18b028d628776652ef2243e30ba8eb50ce22fc80
@@@ -16,7 -16,6 +16,7 @@@ altoslib_JAVA = 
        AltosConfigValues.java \
        AltosConvert.java \
        AltosCRCException.java \
 +      AltosDebug.java \
        AltosEepromChunk.java \
        AltosEepromIterable.java \
        AltosEepromLog.java \
        AltosEepromRecord.java \
        AltosEepromTeleScience.java \
        AltosFile.java \
 +      AltosFlash.java \
 +      AltosFlashListener.java \
        AltosFlightReader.java \
        AltosFrequency.java \
        AltosGPS.java \
        AltosGPSQuery.java \
        AltosGPSSat.java \
        AltosGreatCircle.java \
 +      AltosHexfile.java \
        AltosIdleMonitor.java \
        AltosIdleMonitorListener.java \
        AltosIgnite.java \
@@@ -41,6 -37,7 +41,7 @@@
        AltosIMUQuery.java \
        AltosLine.java \
        AltosLink.java \
+       AltosListenerState.java \
        AltosLog.java \
        AltosMs5607.java \
        AltosMs5607Query.java \
@@@ -56,7 -53,6 +57,7 @@@
        AltosRecordTM.java \
        AltosRecordMM.java \
        AltosReplayReader.java \
 +      AltosRomconfig.java \
        AltosSensorMM.java \
        AltosSensorTM.java \
        AltosState.java \
diff --combined altosui/Makefile.am
index a8292c648cf9e80d07f7f77e31ec315105ede523,4bfef47ca2d534b68da278dcd1b6c160c51d7956..d59e308248000cf98c3c16d358f7770337710463
@@@ -30,6 -30,7 +30,6 @@@ altosui_JAVA = 
        AltosConfigTDUI.java \
        AltosCSV.java \
        AltosCSVUI.java \
 -      AltosDebug.java \
        AltosDescent.java \
        AltosDeviceUIDialog.java \
        AltosDisplayThread.java \
@@@ -39,6 -40,7 +39,6 @@@
        AltosEepromManage.java \
        AltosEepromMonitor.java \
        AltosEepromSelect.java \
 -      AltosFlash.java \
        AltosFlashUI.java \
        AltosFlightDisplay.java \
        AltosFlightInfoTableModel.java \
@@@ -48,6 -50,7 +48,6 @@@
        AltosFlightStatusUpdate.java \
        AltosFlightUI.java \
        AltosFreqList.java \
 -      AltosHexfile.java \
        Altos.java \
        AltosIdleMonitorUI.java \
        AltosIgniteUI.java \
@@@ -60,6 -63,7 +60,6 @@@
        AltosLights.java \
        AltosPad.java \
        AltosUIPreferencesBackend.java \
 -      AltosRomconfig.java \
        AltosRomconfigUI.java \
        AltosScanUI.java \
        AltosSerial.java \
@@@ -153,7 -157,7 +153,7 @@@ FIRMWARE=$(FIRMWARE_TM) $(FIRMWARE_TELE
  ALTUSMETRUM_DOC=$(top_srcdir)/doc/altusmetrum.pdf
  ALTOS_DOC=$(top_srcdir)/doc/altos.pdf
  TELEMETRY_DOC=$(top_srcdir)/doc/telemetry.pdf
- TEMPLATE_DOC=$(top_srcdir)/doc/telemetrum-outline.pdf $(top_srcdir)/doc/megametrum-outline.pdf
+ TEMPLATE_DOC=$(top_srcdir)/doc/telemetrum-outline.pdf $(top_srcdir)/doc/telemega-outline.pdf
  
  DOC=$(ALTUSMETRUM_DOC) $(ALTOS_DOC) $(TELEMETRY_DOC) $(TEMPLATE_DOC)
  
diff --combined ao-tools/lib/cc-usb.c
index 621a15c1722e01536f6e5506e38ee5a9a424784f,f82752435d03c48126253541e8b5af8d5a653b63..485583f98b3897c1816547ffc4b7ae95ee32a6b1
@@@ -140,10 -140,7 +140,10 @@@ cc_usb_dbg(int indent, uint8_t *bytes, 
                case '\n':
                        eol = 1;
                default:
 -                      ccdbg_debug(CC_DEBUG_BITBANG, "%c", c);
 +                      if (c < ' ' || c > '~')
 +                              ccdbg_debug(CC_DEBUG_BITBANG, "\\%02x", c);
 +                      else
 +                              ccdbg_debug(CC_DEBUG_BITBANG, "%c", c);
                }
        }
  }
@@@ -193,7 -190,6 +193,7 @@@ _cc_usb_sync(struct cc_usb *cc, int wai
                        ret = read(cc->fd, cc->in_buf + cc->in_count,
                                   CC_IN_BUF - cc->in_count);
                        if (ret > 0) {
 +                              int i;
                                cc_usb_dbg(24, cc->in_buf + cc->in_count, ret);
                                cc->in_count += ret;
                                if (cc->hex_count)
@@@ -258,10 -254,10 +258,10 @@@ cc_usb_printf(struct cc_usb *cc, char *
  }
  
  int
- cc_usb_getchar(struct cc_usb *cc)
+ cc_usb_getchar_timeout(struct cc_usb *cc, int timeout)
  {
        while (cc->in_pos == cc->in_count) {
-               if (_cc_usb_sync(cc, 5000) < 0) {
+               if (_cc_usb_sync(cc, timeout) < 0) {
                        fprintf(stderr, "USB link timeout\n");
                        exit(1);
                }
        return cc->in_buf[cc->in_pos++];
  }
  
+ int
+ cc_usb_getchar(struct cc_usb *cc)
+ {
+       return cc_usb_getchar_timeout(cc, 5000);
+ }
  void
  cc_usb_getline(struct cc_usb *cc, char *line, int max)
  {
@@@ -424,6 -426,8 +430,8 @@@ cc_usb_open(char *tty
        tcgetattr(cc->fd, &termios);
        save_termios = termios;
        cfmakeraw(&termios);
+       cfsetospeed(&termios, B9600);
+       cfsetispeed(&termios, B9600);
        tcsetattr(cc->fd, TCSAFLUSH, &termios);
        cc_usb_printf(cc, "\nE 0\nm 0\n");
        do {
diff --combined src/core/ao.h
index 7ff49dd560b26d079712bfcf7a6c7150148043ae,977e10b87d2716d5a2817b4d51dcbd3215f8bd14..548e87381525161692844c03b476defe1bf7e1e4
@@@ -65,6 -65,7 +65,7 @@@
  #define AO_PANIC_STACK                12      /* Stack overflow */
  #define AO_PANIC_SPI          13      /* SPI communication failure */
  #define AO_PANIC_CRASH                14      /* Processor crashed */
+ #define AO_PANIC_BUFIO                15      /* Mis-using bufio API */
  #define AO_PANIC_SELF_TEST_CC1120     0x40 | 1        /* Self test failure */
  #define AO_PANIC_SELF_TEST_HMC5883    0x40 | 2        /* Self test failure */
  #define AO_PANIC_SELF_TEST_MPU6000    0x40 | 3        /* Self test failure */
@@@ -93,7 -94,7 +94,7 @@@ extern volatile __data AO_TICK_TYPE ao_
  #define AO_SEC_TO_TICKS(s)    ((s) * AO_HERTZ)
  
  /* Returns the current time in ticks */
- uint16_t
+ AO_TICK_TYPE
  ao_time(void);
  
  /* Suspend the current task until ticks time has passed */
@@@ -143,9 -144,6 +144,9 @@@ extern __pdata uint32_t ao_cmd_lex_u32
  extern __pdata char   ao_cmd_lex_c;
  extern __pdata enum ao_cmd_status ao_cmd_status;
  
 +void
 +ao_put_string(__code char *s);
 +
  void
  ao_cmd_lex(void);
  
@@@ -517,17 -515,28 +518,28 @@@ extern __xdata uint8_t  ao_radio_dma
  #define AO_RADIO_STATUS_CRC_OK        AO_FEC_DECODE_CRC_OK
  #endif
  
+ #ifndef HAS_RADIO_RECV
+ #define HAS_RADIO_RECV HAS_RADIO
+ #endif
+ #ifndef HAS_RADIO_XMIT
+ #define HAS_RADIO_XMIT HAS_RADIO
+ #endif
  void
  ao_radio_general_isr(void) ao_arch_interrupt(16);
  
+ #if HAS_RADIO_XMIT
  void
  ao_radio_send(const __xdata void *d, uint8_t size) __reentrant;
+ #endif
  
+ #if HAS_RADIO_RECV
  uint8_t
  ao_radio_recv(__xdata void *d, uint8_t size) __reentrant;
  
  void
  ao_radio_recv_abort(void);
+ #endif
  
  void
  ao_radio_test(uint8_t on);
  typedef int16_t (*ao_radio_fill_func)(uint8_t *buffer, int16_t len);
  
  void
- ao_radio_send_lots(ao_radio_fill_func fill);
+ ao_radio_send_aprs(ao_radio_fill_func fill);
+ /*
+  * ao_radio_pa
+  */
+ #if HAS_RADIO_AMP
+ void
+ ao_radio_pa_on(void);
+ void
+ ao_radio_pa_off(void);
+ void
+ ao_radio_pa_init(void);
+ #else
+ #define ao_radio_pa_on()
+ #define ao_radio_pa_off()
+ #define ao_radio_pa_init()
+ #endif
  
  /*
   * Compute the packet length as follows:
@@@ -687,7 -715,7 +718,7 @@@ extern __xdata uint8_t ao_force_freq
  #endif
  
  #define AO_CONFIG_MAJOR       1
- #define AO_CONFIG_MINOR       13
+ #define AO_CONFIG_MINOR       14
  
  #define AO_AES_LEN 16
  
@@@ -715,6 -743,12 +746,12 @@@ struct ao_config 
        struct ao_pyro  pyro[AO_PYRO_NUM];      /* minor version 12 */
  #endif
        uint16_t        aprs_interval;          /* minor version 13 */
+ #if HAS_RADIO_POWER
+       uint8_t         radio_power;            /* minor version 14 */
+ #endif
+ #if HAS_RADIO_AMP
+       uint8_t         radio_amp;              /* minor version 14 */
+ #endif
  };
  
  #define AO_IGNITE_MODE_DUAL           0
diff --combined src/stm/Makefile.defs
index 3ce6eead168b4ff0b2a18669fa5a0e60d08368a2,1480f0b34f9b395b78b68a8cde338cf2bd60e3d5..c8bb7d704b4573b0c306e6e03d8aaa2f8bc858b6
@@@ -7,14 -7,9 +7,14 @@@ vpath load_csv.5c ../kalma
  vpath matrix.5c ../kalman
  vpath ao-make-product.5c ../util
  
 +.SUFFIXES: .elf .ihx
 +
 +.elf.ihx:
 +      objcopy -O ihex $*.elf $@
 +
  CC=arm-none-eabi-gcc
- SAT=/home/keithp/sat
- SAT_CLIB=$(SAT)/lib/pdclib.a
+ SAT=/opt/cortex
+ SAT_CLIB=$(SAT)/lib/pdclib-cortex-m3.a
  SAT_CFLAGS=-I$(SAT)/include
  
  ifndef VERSION
index 0000000000000000000000000000000000000000,4a50a9d43b750deb6c4805c8930ea56131382f21..935cde7d173b19f12b27095ff419802726939d04
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,41 +1,44 @@@
+ /*
+  * 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.
+  */
+ #include "ao.h"
+ void
+ main(void)
+ {
+       ao_clock_init();
+       /* Turn on the LED until the system is stable */
+       ao_led_init(LEDS_AVAILABLE);
+       ao_led_on(AO_LED_RED);
++
++      ao_task_init();
++
+       ao_timer_init();
+       ao_cmd_init();
+       ao_usb_init();
+       ao_monitor_init();
+       ao_radio_init();
+       ao_packet_master_init();
+       ao_adc_init();
+       ao_btm_init();
+ #if HAS_DBG
+       ao_dbg_init();
+ #endif
+       ao_config_init();
+       ao_start_scheduler();
+ }