diff options
| -rw-r--r-- | .gitignore | 16 | ||||
| -rw-r--r-- | ao-tools/ao-bitbang/Makefile.am | 2 | ||||
| -rw-r--r-- | ao-tools/ao-bitbang/ao-bitbang.1 | 196 | ||||
| -rw-r--r-- | ao-tools/ao-bitbang/ao-bitbang.c | 2 | ||||
| -rw-r--r-- | ao-tools/ao-dbg/ao-dbg-main.c | 12 | ||||
| -rw-r--r-- | ao-tools/ao-dbg/ao-dbg-parse.c | 6 | ||||
| -rw-r--r-- | ao-tools/ao-dbg/ao-dbg.1 | 54 | ||||
| -rw-r--r-- | ao-tools/ao-dbg/ao-dbg.h | 1 | ||||
| -rw-r--r-- | ao-tools/ao-eeprom/Makefile.am | 2 | ||||
| -rw-r--r-- | ao-tools/ao-eeprom/ao-eeprom.1 | 33 | ||||
| -rw-r--r-- | ao-tools/ao-eeprom/ao-eeprom.c | 33 | ||||
| -rw-r--r-- | ao-tools/ao-load/Makefile.am | 2 | ||||
| -rw-r--r-- | ao-tools/ao-load/ao-load.1 | 38 | ||||
| -rw-r--r-- | ao-tools/ao-load/ao-load.c | 55 | ||||
| -rw-r--r-- | ao-tools/ao-rawload/Makefile.am | 2 | ||||
| -rw-r--r-- | ao-tools/ao-rawload/ao-rawload.1 | 36 | ||||
| -rw-r--r-- | ao-tools/ao-rawload/ao-rawload.c | 33 | ||||
| -rw-r--r-- | ao-tools/lib/ccdbg-io.c | 19 | ||||
| -rw-r--r-- | ao-tools/lib/ccdbg.h | 2 | ||||
| -rw-r--r-- | ao-tools/lib/cp-usb-async.c | 1 | ||||
| -rw-r--r-- | ao-view/Makefile.am | 2 | ||||
| -rw-r--r-- | ao-view/ao-view.1 | 50 | ||||
| -rw-r--r-- | ao-view/aoview.glade | 1 | ||||
| -rw-r--r-- | ao-view/aoview.h | 4 | ||||
| -rw-r--r-- | ao-view/aoview_main.c | 16 | 
25 files changed, 545 insertions, 73 deletions
| @@ -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"><filename></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(); | 
