summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBdale Garbee <bdale@gag.com>2009-08-18 18:09:38 -0600
committerBdale Garbee <bdale@gag.com>2009-08-18 18:09:38 -0600
commit4685fc541466afbeefc151bcb64cd054739c048b (patch)
treed7e0f521bd51897a59dd9c355d74218132da4b75
parent1c2a0b6653623b689d68d7349a6b2dce3e20a4a6 (diff)
parentc29275b72438637d46d7a50742882d2736eb176a (diff)
Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
Conflicts: ao-tools/ao-bitbang/Makefile.am ao-tools/ao-eeprom/Makefile.am ao-tools/ao-load/Makefile.am ao-tools/ao-load/ao-load.c ao-tools/ao-rawload/Makefile.am
-rw-r--r--.gitignore16
-rw-r--r--ao-tools/ao-bitbang/Makefile.am2
-rw-r--r--ao-tools/ao-bitbang/ao-bitbang.1196
-rw-r--r--ao-tools/ao-bitbang/ao-bitbang.c2
-rw-r--r--ao-tools/ao-dbg/ao-dbg-main.c12
-rw-r--r--ao-tools/ao-dbg/ao-dbg-parse.c6
-rw-r--r--ao-tools/ao-dbg/ao-dbg.154
-rw-r--r--ao-tools/ao-dbg/ao-dbg.h1
-rw-r--r--ao-tools/ao-eeprom/Makefile.am2
-rw-r--r--ao-tools/ao-eeprom/ao-eeprom.133
-rw-r--r--ao-tools/ao-eeprom/ao-eeprom.c33
-rw-r--r--ao-tools/ao-load/Makefile.am2
-rw-r--r--ao-tools/ao-load/ao-load.138
-rw-r--r--ao-tools/ao-load/ao-load.c55
-rw-r--r--ao-tools/ao-rawload/Makefile.am2
-rw-r--r--ao-tools/ao-rawload/ao-rawload.136
-rw-r--r--ao-tools/ao-rawload/ao-rawload.c33
-rw-r--r--ao-tools/lib/ccdbg-io.c19
-rw-r--r--ao-tools/lib/ccdbg.h2
-rw-r--r--ao-tools/lib/cp-usb-async.c1
-rw-r--r--ao-view/Makefile.am2
-rw-r--r--ao-view/ao-view.150
-rw-r--r--ao-view/aoview.glade1
-rw-r--r--ao-view/aoview.h4
-rw-r--r--ao-view/aoview_main.c16
25 files changed, 545 insertions, 73 deletions
diff --git a/.gitignore b/.gitignore
index 71b0a614..b3d2d562 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,17 +12,21 @@
*.rst
*.sym
.deps
+TAGS
aclocal.m4
-ao_flight_test
+src/ao_flight_test
+src/ao_gps_test
ao-teledongle.h
ao-telemetrum.h
ao-teleterra.h
ao-tidongle.h
-aoload/aoload
-ccdump/ccdump
-ccmanual/ccmanual
-aoview/Makefile
-aoview/aoview
+ao-tools/ao-bitbang/ao-bitbang
+ao-tools/ao-dbg/ao-dbg
+ao-tools/ao-eeprom/ao-eeprom
+ao-tools/ao-load/ao-load
+ao-tools/ao-rawload/ao-rawload
+ao-view/Makefile
+ao-view/ao-view
autom4te.cache
config.*
config.h
diff --git a/ao-tools/ao-bitbang/Makefile.am b/ao-tools/ao-bitbang/Makefile.am
index f094c7bd..f01cddd4 100644
--- a/ao-tools/ao-bitbang/Makefile.am
+++ b/ao-tools/ao-bitbang/Makefile.am
@@ -8,3 +8,5 @@ ao_bitbang_DEPENDENCIES = $(AO_BITBANG_LIBS)
ao_bitbang_LDADD=$(AO_BITBANG_LIBS) $(LIBUSB_LIBS)
ao_bitbang_SOURCES = ao-bitbang.c
+
+man_MANS=ao-bitbang.1
diff --git a/ao-tools/ao-bitbang/ao-bitbang.1 b/ao-tools/ao-bitbang/ao-bitbang.1
new file mode 100644
index 00000000..44eea1ec
--- /dev/null
+++ b/ao-tools/ao-bitbang/ao-bitbang.1
@@ -0,0 +1,196 @@
+.\"
+.\" 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; 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.
+.\"
+.\"
+.TH AO-BITBANG 1 "ao-bitbang" ""
+.SH NAME
+ao-bitbang \- Low-level cc1111 interface diagnostic tool
+.SH SYNOPSIS
+.B "ao-bitbang"
+.SH DESCRIPTION
+.I ao-bitbang
+connects through a CP2103 usb-to-serial converter and uses the GPIO
+pins to communicate with the debug port on a cc1111 device. It
+provides raw access to the debug pins to help debug the lowest level
+communication path.
+.SH USAGE
+.I ao-bitbang
+reads a sequence of bit manipulations from stdin, sends them to the
+device and reports status on stdout.
+.P
+Each line on stdin should contain a single letter command for each of
+the three debug lines on the cc1111 -- clock, data and reset. Each bit
+can be in one of three states -- on (C, D or R), off (.) or tri-state
+(-) for input. Empty lines, or lines starting with '#' are
+ignored. Anything beyond the last bit in a line is also ignored. The
+bits must be listed in the correct order, and the 'on' values must
+match the desired bit.
+.SH EXAMPLE
+.IP "Reset the target device"
+# reset
+.br
+C D R
+.br
+C D R
+.br
+C D R
+.br
+C D R
+.IP "Get Chip ID"
+#
+.br
+# Debug mode - drive RESET_N low for two clock cycles
+.br
+#
+.br
+C D R
+.br
+. D .
+.br
+C D .
+.br
+. D .
+.br
+C D .
+.br
+. D R
+.br
+
+.br
+#
+.br
+# GET_CHIP_ID
+.br
+
+.br
+C . R 0
+.br
+. . R
+.br
+C D R 1
+.br
+. D R
+.br
+C D R 1
+.br
+. D R
+.br
+C . R 0
+.br
+. . R
+.br
+
+.br
+C D R 1
+.br
+. D R
+.br
+C . R 0
+.br
+. . R
+.br
+C . R 0
+.br
+. . R
+.br
+C . R 0
+.br
+. . R
+.br
+
+.br
+#
+.br
+# start reading again
+.br
+
+.br
+C D R
+.br
+. - R
+.br
+C - R
+.br
+. - R
+.br
+C - R
+.br
+. - R
+.br
+C - R
+.br
+. - R
+.br
+
+.br
+C - R
+.br
+. - R
+.br
+C - R
+.br
+. - R
+.br
+C - R
+.br
+. - R
+.br
+C - R
+.br
+. - R
+.br
+
+.br
+C - R
+.br
+. - R
+.br
+C - R
+.br
+. - R
+.br
+C - R
+.br
+. - R
+.br
+C - R
+.br
+. - R
+.br
+
+.br
+C - R
+.br
+. - R
+.br
+C - R
+.br
+. - R
+.br
+C - R
+.br
+. - R
+.br
+C - R
+.br
+. - R
+.br
+
+.br
+C D R
+.SH AUTHOR
+Keith Packard
diff --git a/ao-tools/ao-bitbang/ao-bitbang.c b/ao-tools/ao-bitbang/ao-bitbang.c
index 7090c9a3..e8dff6bf 100644
--- a/ao-tools/ao-bitbang/ao-bitbang.c
+++ b/ao-tools/ao-bitbang/ao-bitbang.c
@@ -23,7 +23,7 @@ main (int argc, char **argv)
{
struct ccdbg *dbg;
- dbg = ccdbg_open();
+ dbg = ccdbg_open("BITBANG");
if (!dbg)
exit (1);
diff --git a/ao-tools/ao-dbg/ao-dbg-main.c b/ao-tools/ao-dbg/ao-dbg-main.c
index 72249a6b..f1e2c111 100644
--- a/ao-tools/ao-dbg/ao-dbg-main.c
+++ b/ao-tools/ao-dbg/ao-dbg-main.c
@@ -24,6 +24,7 @@
#include <signal.h>
#include <stdarg.h>
#include <poll.h>
+#include <getopt.h>
static int s51_port = 0;
static char *cpu = "8051";
@@ -32,6 +33,7 @@ char *s51_prompt = "> ";
struct ccdbg *s51_dbg;
int s51_interrupted = 0;
int s51_monitor = 0;
+char *s51_tty = NULL;
static FILE *s51_input;
static FILE *s51_output;
@@ -48,6 +50,11 @@ void s51_sigint()
s51_interrupted = 1;
}
+static const struct option options[] = {
+ { .name = "tty", .has_arg = 1, .val = 'T' },
+ { 0, 0, 0, 0 },
+};
+
int
main(int argc, char **argv)
{
@@ -55,7 +62,7 @@ main(int argc, char **argv)
char *endptr;
struct sigvec vec, ovec;
- while ((opt = getopt(argc, argv, "PVvHhmt:X:c:r:Z:s:S:p:")) != -1) {
+ while ((opt = getopt_long(argc, argv, "PVvHhmt:X:c:r:Z:s:S:p:T:", options, NULL)) != -1) {
switch (opt) {
case 't':
cpu = optarg;
@@ -104,6 +111,9 @@ main(int argc, char **argv)
case 'm':
s51_monitor = 1;
break;
+ case 'T':
+ s51_tty = optarg;
+ break;
}
}
if (s51_port) {
diff --git a/ao-tools/ao-dbg/ao-dbg-parse.c b/ao-tools/ao-dbg/ao-dbg-parse.c
index 5db6c01c..825d0e9c 100644
--- a/ao-tools/ao-dbg/ao-dbg-parse.c
+++ b/ao-tools/ao-dbg/ao-dbg-parse.c
@@ -195,11 +195,9 @@ command_read (void)
enum command_result result;
struct command_function *func;
- s51_dbg = ccdbg_open ();
- if (!s51_dbg) {
- perror("ccdbg_open");
+ s51_dbg = ccdbg_open (s51_tty);
+ if (!s51_dbg)
exit(1);
- }
ccdbg_debug_mode(s51_dbg);
ccdbg_halt(s51_dbg);
s51_printf("Welcome to the non-simulated processor\n");
diff --git a/ao-tools/ao-dbg/ao-dbg.1 b/ao-tools/ao-dbg/ao-dbg.1
index f2f59a52..a850c454 100644
--- a/ao-tools/ao-dbg/ao-dbg.1
+++ b/ao-tools/ao-dbg/ao-dbg.1
@@ -16,11 +16,11 @@
.\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
.\"
.\"
-.TH S51 1 "s51" ""
+.TH AO-DBG 1 "ao-dbg" ""
.SH NAME
-s51 \- hex debugger for cc1111 processors
+ao-dbg \- hex debugger for cc1111 processors
.SH SYNOPSIS
-.B "s51"
+.B "ao-dbg"
[\-t \fIcpu-type\fP]
[\-X \fIfrequency\fP]
[\-c]
@@ -34,14 +34,16 @@ s51 \- hex debugger for cc1111 processors
[\-H]
[\-h]
[\-m]
+[\-T \fItty-device\fP]
.SH DESCRIPTION
-.I s51
-connects to a cc1111 processor through a cp1203-based USB-to-serial
-converter board, using the GPIO pins available on that chip. It provides an
-interface compatible with the 8051 emulator of the same name (s51), but
-communicating with the real chip instead of an emulation. Using a modified
-version of the SDCC debugger (sdcdb), you can control program execution
-on the target machine at source-level.
+.I ao-dbg
+connects to a cc1111 processor through either a suitable cc1111 board
+or a cp2103 usb to serial converter board, using the GPIO pins
+available on that chip. It provides an interface compatible with the
+8051 emulator from sdcc called s51, but communicating with the real
+chip instead of an emulation. Using a modified version of the SDCC
+debugger (sdcdb), you can control program execution on the target
+machine at source-level.
.SH OPTIONS
The command line options are designed to be compatible with the 8051
@@ -64,9 +66,9 @@ The emulator and sdcdb communicate through a network socket. This option
switches the debugger from communicating through stdin/stdout to listening
on a specific network port instead. Once a connection is made, the debugger
continues on, using that network port for command input and output. The
-debugger uses port 9756, and attempts to connect before launching s51, so if
-s51 is listening on this port before sdcdb is started, sdcdb will end up
-talking to the existing s51 instance. That's often useful for debugging s51
+debugger uses port 9756, and attempts to connect before launching ao-dbg, so if
+ao-dbg is listening on this port before sdcdb is started, sdcdb will end up
+talking to the existing ao-dbg instance. That's often useful for debugging ao-dbg
itself.
.IP "\-p \fIprompt\fP"
This sets the command prompt to the specified string.
@@ -76,14 +78,19 @@ sdcdb.
.IP "\-h"
This should print a usage message, but does nothing useful currently.
.IP "\-m"
-This option is not present in the original 8051 emulator, and causes s51 to
+This option is not present in the original 8051 emulator, and causes ao-dbg to
dump all commands and replies that are received from and sent to sdcdb.
+.IP "\-T"
+This selects which tty device the debugger uses to communicate with
+the target device. The special name 'BITBANG' directs ao-dbg to use
+the cp2103 connection, otherwise this should be a usb serial port
+connected to a suitable cc1111 debug node.
.SH COMMANDS
-Once started, s51 connects to the cc1111 via the CP2103 using libusb2 and
-then reads and executes commands, either from stdin, or the nework
-connection to sdcdb.
+Once started, ao-dbg connects to the cc1111 and then reads and
+executes commands, either from stdin, or the nework connection to
+sdcdb.
.PP
-Unlike the command line, s51 contains built-in help for each of these
+Unlike the command line, ao-dbg contains built-in help for each of these
commands, via the 'help' command. Most of the commands are available in a
long form and a single character short form. Below, the short form follows
the long form after a comma.
@@ -155,13 +162,12 @@ the original 8051 emulator.
While the original purpose for this program was to connect the source
debugger with the hardware, it can also be used as a low-level hex debugger
all on its own. In particular, all of the cc1111 peripherals can be
-manipulated directly from the s51 command line.
-.IP "Starting s51"
-If the CP2103 is plugged in, and the CC1111 is connected correctly, the
-\'s51\' command itself should connect to the device without trouble.
-Note that the CP2103 must have the GPIO pins configured correctly as well.
+manipulated directly from the ao-dbg command line.
+.IP "Starting ao-dbg"
+First ensure that the target cc1111 device and intermediate cp2103 or
+cc111 board are all hooked up correctly.
.IP
-$ s51
+$ ao-dbg
.br
Welcome to the non-simulated processor
.br
diff --git a/ao-tools/ao-dbg/ao-dbg.h b/ao-tools/ao-dbg/ao-dbg.h
index f4dcce66..c1789d10 100644
--- a/ao-tools/ao-dbg/ao-dbg.h
+++ b/ao-tools/ao-dbg/ao-dbg.h
@@ -22,6 +22,7 @@ extern char *s51_prompt;
extern struct ccdbg *s51_dbg;
extern int s51_interrupted;
extern int s51_monitor;
+extern char *s51_tty;
enum command_result {
command_success, command_debug, command_syntax, command_interrupt, command_error,
diff --git a/ao-tools/ao-eeprom/Makefile.am b/ao-tools/ao-eeprom/Makefile.am
index 587acee7..efeed976 100644
--- a/ao-tools/ao-eeprom/Makefile.am
+++ b/ao-tools/ao-eeprom/Makefile.am
@@ -8,3 +8,5 @@ ao_eeprom_DEPENDENCIES = $(AO_EEPROM_LIBS)
ao_eeprom_LDADD=$(AO_EEPROM_LIBS) $(LIBUSB_LIBS)
ao_eeprom_SOURCES = ao-eeprom.c
+
+man_MANS = ao-eeprom.1
diff --git a/ao-tools/ao-eeprom/ao-eeprom.1 b/ao-tools/ao-eeprom/ao-eeprom.1
new file mode 100644
index 00000000..8caff9d1
--- /dev/null
+++ b/ao-tools/ao-eeprom/ao-eeprom.1
@@ -0,0 +1,33 @@
+.\"
+.\" 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; 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.
+.\"
+.\"
+.TH AO-EEPROM 1 "ao-eeprom" ""
+.SH NAME
+ao-eeprom \- Fetch eeprom contents from TeleMetrum device
+.SH SYNOPSIS
+.B "ao-eeprom"
+[\-tty \fItty-device\fP]
+.SH DESCRIPTION
+.I ao-eeprom
+downloads the eeprom contents from a connected TeleMetrum device.
+.SH USAGE
+.I ao-eeprom
+connects to the specified target device and dumps each block of the
+eeprom to stdout in hexidecimal bytes.
+.SH AUTHOR
+Keith Packard
diff --git a/ao-tools/ao-eeprom/ao-eeprom.c b/ao-tools/ao-eeprom/ao-eeprom.c
index 399732d9..726cc22c 100644
--- a/ao-tools/ao-eeprom/ao-eeprom.c
+++ b/ao-tools/ao-eeprom/ao-eeprom.c
@@ -18,10 +18,23 @@
#include <stdio.h>
#include <stdlib.h>
+#include <unistd.h>
+#include <getopt.h>
#include "cc-usb.h"
#define NUM_BLOCK 512
+static const struct option options[] = {
+ { .name = "tty", .has_arg = 1, .val = 'T' },
+ { 0, 0, 0, 0},
+};
+
+static void usage(char *program)
+{
+ fprintf(stderr, "usage: %s [--tty <tty-name>]\n", program);
+ exit(1);
+}
+
int
main (int argc, char **argv)
{
@@ -31,10 +44,26 @@ main (int argc, char **argv)
uint8_t *b;
int i, j;
uint32_t addr;
- char *tty;
+ char *tty = NULL;
+ int c;
- tty = getenv("CCDBG_TTY");
+ while ((c = getopt_long(argc, argv, "T:", options, NULL)) != -1) {
+ switch (c) {
+ case 'T':
+ tty = optarg;
+ break;
+ default:
+ usage(argv[0]);
+ break;
+ }
+ }
+ if (!tty)
+ tty = getenv("ALTOS_TTY");
+ if (!tty)
+ tty="/dev/ttyACM0";
cc = cc_usb_open(tty);
+ if (!cc)
+ exit(1);
for (block = 0; block < NUM_BLOCK; block++) {
cc_queue_read(cc, bytes, sizeof (bytes));
cc_usb_printf(cc, "e %x\n", block);
diff --git a/ao-tools/ao-load/Makefile.am b/ao-tools/ao-load/Makefile.am
index 8a8392af..3c48dc27 100644
--- a/ao-tools/ao-load/Makefile.am
+++ b/ao-tools/ao-load/Makefile.am
@@ -8,3 +8,5 @@ ao_load_DEPENDENCIES = $(AO_LOAD_LIBS)
ao_load_LDADD=$(AO_LOAD_LIBS) $(LIBUSB_LIBS)
ao_load_SOURCES = ao-load.c
+
+man_MANS = ao-load.1
diff --git a/ao-tools/ao-load/ao-load.1 b/ao-tools/ao-load/ao-load.1
new file mode 100644
index 00000000..10484f3b
--- /dev/null
+++ b/ao-tools/ao-load/ao-load.1
@@ -0,0 +1,38 @@
+.\"
+.\" 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; 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.
+.\"
+.\"
+.TH AO-LOAD 1 "ao-load" ""
+.SH NAME
+ao-load \- flash a program to a AltOS device
+.SH SYNOPSIS
+.B "ao-load"
+[\-tty \fItty-device\fP]
+\fIfile.ihx\fP
+\fIdevice serial number\fP
+.SH DESCRIPTION
+.I ao-load
+loads the specified .ihx file into the target device flash memory,
+customizing the AltOS image with the specified serial number.
+.SH USAGE
+.I ao-load
+reads the specified .ihx file into memory, locates the matching .map
+file and edits the image to customize it using the specified serial
+number. It then connects to the specified target device and writes the
+program to the target device flash memory.
+.SH AUTHOR
+Keith Packard
diff --git a/ao-tools/ao-load/ao-load.c b/ao-tools/ao-load/ao-load.c
index 6966dd3a..642af2fe 100644
--- a/ao-tools/ao-load/ao-load.c
+++ b/ao-tools/ao-load/ao-load.c
@@ -25,13 +25,6 @@
#define AO_USB_DESC_STRING 3
-void
-usage(char *program)
-{
- fprintf(stderr, "usage: %s <filename.ihx> <serial>\n", program);
- exit(1);
-}
-
struct sym {
unsigned addr;
char *name;
@@ -96,7 +89,21 @@ rewrite(struct hex_image *image, unsigned addr, char *data, int len)
memcpy(image->data + addr - image->address, data, len);
}
+<<<<<<< HEAD:ao-tools/ao-load/ao-load.c
static const struct option
+=======
+static const struct option options[] = {
+ { .name = "tty", .has_arg = 1, .val = 'T' },
+ { 0, 0, 0, 0},
+};
+
+static void usage(char *program)
+{
+ fprintf(stderr, "usage: %s [--tty <tty-name>] file.ihx serial-number\n", program);
+ exit(1);
+}
+
+>>>>>>> c29275b72438637d46d7a50742882d2736eb176a:ao-tools/ao-load/ao-load.c
int
main (int argc, char **argv)
{
@@ -105,12 +112,12 @@ main (int argc, char **argv)
uint16_t pc;
struct hex_file *hex;
struct hex_image *image;
- char *filename;
- FILE *file;
- FILE *map;
- char *serial_string;
- unsigned int serial;
- char *mapname, *dot;
+ char *filename;
+ FILE *file;
+ FILE *map;
+ char *serial_string;
+ unsigned int serial;
+ char *mapname, *dot;
char *serial_ucs2;
int serial_ucs2_len;
char serial_int[2];
@@ -118,8 +125,20 @@ main (int argc, char **argv)
int i;
unsigned usb_descriptors;
int string_num;
-
- filename = argv[1];
+ char *tty = NULL;
+ int c;
+
+ while ((c = getopt_long(argc, argv, "T:", options, NULL)) != -1) {
+ switch (c) {
+ case 'T':
+ tty = optarg;
+ break;
+ default:
+ usage(argv[0]);
+ break;
+ }
+ }
+ filename = argv[optind];
if (filename == NULL)
usage(argv[0]);
mapname = strdup(filename);
@@ -128,7 +147,7 @@ main (int argc, char **argv)
usage(argv[0]);
strcpy(dot, ".map");
- serial_string = argv[2];
+ serial_string = argv[optind + 1];
if (serial_string == NULL)
usage(argv[0]);
@@ -163,7 +182,7 @@ main (int argc, char **argv)
serial = strtoul(serial_string, NULL, 0);
if (!serial)
- usage(argv[0]);
+(argv[0]);
serial_int[0] = serial & 0xff;
serial_int[1] = (serial >> 8) & 0xff;
@@ -204,7 +223,7 @@ main (int argc, char **argv)
if (!rewrite(image, usb_descriptors + 2 + image->address, serial_ucs2, serial_ucs2_len))
usage(argv[0]);
- dbg = ccdbg_open();
+ dbg = ccdbg_open(tty);
if (!dbg)
exit (1);
diff --git a/ao-tools/ao-rawload/Makefile.am b/ao-tools/ao-rawload/Makefile.am
index 24013a85..d2c55658 100644
--- a/ao-tools/ao-rawload/Makefile.am
+++ b/ao-tools/ao-rawload/Makefile.am
@@ -8,3 +8,5 @@ ao_rawload_DEPENDENCIES = $(AO_RAWLOAD_LIBS)
ao_rawload_LDADD=$(AO_RAWLOAD_LIBS) $(LIBUSB_LIBS)
ao_rawload_SOURCES = ao-rawload.c
+
+man_MANS=ao-rawload.1
diff --git a/ao-tools/ao-rawload/ao-rawload.1 b/ao-tools/ao-rawload/ao-rawload.1
new file mode 100644
index 00000000..e79645f1
--- /dev/null
+++ b/ao-tools/ao-rawload/ao-rawload.1
@@ -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; 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.
+.\"
+.\"
+.TH AO-RAWLOAD 1 "ao-rawload" ""
+.SH NAME
+ao-rawload \- flash a program to a AltOS device
+.SH SYNOPSIS
+.B "ao-rawload"
+[\-tty \fItty-device\fP]
+\fIfile.ihx\fP
+.SH DESCRIPTION
+.I ao-rawload
+loads the specified .ihx file, without modification, into the target
+device flash memory.
+.SH USAGE
+.I ao-rawload
+reads the specified .ihx file into memory. It then connects to the
+specified target device and writes the program to the target device
+flash memory.
+.SH AUTHOR
+Keith Packard
diff --git a/ao-tools/ao-rawload/ao-rawload.c b/ao-tools/ao-rawload/ao-rawload.c
index 5f7708fd..1f1537b9 100644
--- a/ao-tools/ao-rawload/ao-rawload.c
+++ b/ao-tools/ao-rawload/ao-rawload.c
@@ -16,8 +16,21 @@
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
+#include <unistd.h>
+#include <getopt.h>
#include "ccdbg.h"
+static const struct option options[] = {
+ { .name = "tty", .has_arg = 1, .val = 'T' },
+ { 0, 0, 0, 0},
+};
+
+static void usage(char *program)
+{
+ fprintf(stderr, "usage: %s [--tty <tty-name>] file.ihx\n", program);
+ exit(1);
+}
+
int
main (int argc, char **argv)
{
@@ -26,10 +39,22 @@ main (int argc, char **argv)
uint16_t pc;
struct hex_file *hex;
struct hex_image *image;
- char *filename;
- FILE *file;
+ char *filename;
+ FILE *file;
+ char *tty = NULL;
+ int c;
- filename = argv[1];
+ while ((c = getopt_long(argc, argv, "T:", options, NULL)) != -1) {
+ switch (c) {
+ case 'T':
+ tty = optarg;
+ break;
+ default:
+ usage(argv[0]);
+ break;
+ }
+ }
+ filename = argv[optind];
if (filename == NULL) {
fprintf(stderr, "usage: %s <filename.ihx>\n", argv[0]);
exit(1);
@@ -50,7 +75,7 @@ main (int argc, char **argv)
}
ccdbg_hex_file_free(hex);
- dbg = ccdbg_open();
+ dbg = ccdbg_open(tty);
if (!dbg)
exit (1);
diff --git a/ao-tools/lib/ccdbg-io.c b/ao-tools/lib/ccdbg-io.c
index 9c6693cd..d3f87274 100644
--- a/ao-tools/lib/ccdbg-io.c
+++ b/ao-tools/lib/ccdbg-io.c
@@ -22,25 +22,32 @@
#include "cc-bitbang.h"
struct ccdbg *
-ccdbg_open(void)
+ccdbg_open(char *tty)
{
struct ccdbg *dbg;
- char *tty;
dbg = calloc(sizeof (struct ccdbg), 1);
if (!dbg) {
perror("calloc");
return NULL;
}
- tty = getenv("CCDBG_TTY");
- if (!tty || tty[0] == '/')
- dbg->usb = cc_usb_open(tty);
- if (!dbg->usb) {
+ if (!tty)
+ tty = getenv("ALTOS_TTY");
+ if (!tty)
+ tty="/dev/ttyACM0";
+
+ if (!strcmp(tty, "BITBANG")) {
dbg->bb = cc_bitbang_open();
if (!dbg->bb) {
free(dbg);
return NULL;
}
+ } else {
+ dbg->usb = cc_usb_open(tty);
+ if (!dbg->usb) {
+ free(dbg);
+ return NULL;
+ }
}
return dbg;
}
diff --git a/ao-tools/lib/ccdbg.h b/ao-tools/lib/ccdbg.h
index 4a2e3b9f..ca596143 100644
--- a/ao-tools/lib/ccdbg.h
+++ b/ao-tools/lib/ccdbg.h
@@ -258,7 +258,7 @@ ccdbg_hex_image_equal(struct hex_image *a, struct hex_image *b);
/* ccdbg-io.c */
struct ccdbg *
-ccdbg_open(void);
+ccdbg_open(char *tty);
void
ccdbg_close(struct ccdbg *dbg);
diff --git a/ao-tools/lib/cp-usb-async.c b/ao-tools/lib/cp-usb-async.c
index 6539394b..3e75b507 100644
--- a/ao-tools/lib/cp-usb-async.c
+++ b/ao-tools/lib/cp-usb-async.c
@@ -60,6 +60,7 @@ cp_usb_async_open(void)
0x10c4, 0xea60);
cp->ack = -1;
if (!cp->handle) {
+ fprintf(stderr, "Cannot find USB device 10c4:ea60\n");
libusb_exit(cp->ctx);
free(cp);
return NULL;
diff --git a/ao-view/Makefile.am b/ao-view/Makefile.am
index e0cd068c..17661c8e 100644
--- a/ao-view/Makefile.am
+++ b/ao-view/Makefile.am
@@ -29,5 +29,7 @@ BUILT_SOURCES = aoview_glade.h
CLEANFILES = aoview_glade.h
+man_MANS=ao-view.1
+
aoview_glade.h: aoview.glade
sed -e 's/"/\\"/g' -e 's/^/"/' -e 's/$$/"/' $< > $@
diff --git a/ao-view/ao-view.1 b/ao-view/ao-view.1
new file mode 100644
index 00000000..99834c4e
--- /dev/null
+++ b/ao-view/ao-view.1
@@ -0,0 +1,50 @@
+.\"
+.\" 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; 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.
+.\"
+.\"
+.TH AO-VIEW 1 "ao-view" ""
+.SH NAME
+ao-view \- Rocket flight monitor
+.SH SYNOPSIS
+.B "ao-view"
+[\--tty \fItty-device\fP]
+.SH DESCRIPTION
+.I ao-view
+connects to a TeleDongle or TeleMetrum device through a USB serial device.
+It provides a user interface to monitor, record and review rocket flight data.
+.SH OPTIONS
+The usual Gtk+ command line options can be used, along with
+.IP "\--tty"
+This selects a target device to connect at startup time to.
+The target device may also be selected through the user interface.
+.SH USAGE
+When connected to a TeleDongle device, ao-view turns on the radio
+receiver and listens for telemetry packets. It displays the received
+telemetry data, and reports flight status via voice synthesis. All
+received telemetry information is recorded to a file.
+.P
+When connected to a TeleMetrum device, ao-view downloads the eeprom
+data and stores it in a file.
+.SH FILES
+All data log files are recorded into a user-specified directory
+(default ~/AltOS). Files are named using the current date, the serial
+number of the reporting device, the flight number recorded in the data
+and either '.telem' for telemetry data or '.eeprom' for eeprom data.
+.SH "SEE ALSO"
+ao-load(1), ao-eeprom(1)
+.SH AUTHOR
+Keith Packard
diff --git a/ao-view/aoview.glade b/ao-view/aoview.glade
index df08b83c..3481a779 100644
--- a/ao-view/aoview.glade
+++ b/ao-view/aoview.glade
@@ -651,7 +651,6 @@ You should have received a copy of the GNU General Public License along with AoV
<property name="type_hint">normal</property>
<property name="skip_taskbar_hint">True</property>
<property name="transient_for">aoview</property>
- <property name="has_separator">False</property>
<property name="buttons">close</property>
<property name="text">Saving EEPROM data as</property>
<property name="secondary_text">&lt;filename&gt;</property>
diff --git a/ao-view/aoview.h b/ao-view/aoview.h
index 62d0640b..e8334e5b 100644
--- a/ao-view/aoview.h
+++ b/ao-view/aoview.h
@@ -308,4 +308,8 @@ aoview_flite_start(void);
void
aoview_flite_stop(void);
+/* aoview_main.c */
+
+extern char *aoview_tty;
+
#endif /* _AOVIEW_H_ */
diff --git a/ao-view/aoview_main.c b/ao-view/aoview_main.c
index 36a82e0e..64c1c027 100644
--- a/ao-view/aoview_main.c
+++ b/ao-view/aoview_main.c
@@ -32,29 +32,29 @@ static void destroy_event(GtkWidget *widget, gpointer data)
}
extern int _Xdebug;
+char *aoview_tty = NULL;
int main(int argc, char **argv)
{
GladeXML *xml = NULL;
GtkWidget *mainwindow;
- char *device = NULL;
GtkAboutDialog *about_dialog;
static struct option long_options[] = {
- { "device", 1, 0, 'd'},
+ { "tty", 1, 0, 'T'},
{ "sync", 0, 0, 's'},
{ 0, 0, 0, 0 }
};
for (;;) {
int c, temp;
- c = getopt_long_only(argc, argv, "sd:", long_options, &temp);
+ c = getopt_long_only(argc, argv, "sT:", long_options, &temp);
if (c == -1)
break;
switch (c) {
- case 'd':
- device = optarg;
+ case 'T':
+ aoview_tty = optarg;
break;
case 's':
_Xdebug = 1;
@@ -102,6 +102,12 @@ int main(int argc, char **argv)
aoview_label_init(xml);
+ if (aoview_tty) {
+ if (!aoview_monitor_connect(aoview_tty)) {
+ perror(aoview_tty);
+ exit(1);
+ }
+ }
aoview_voice_speak("rocket flight monitor ready\n");
gtk_main();