*.rst
*.sym
.deps
+TAGS
aclocal.m4
src/ao_flight_test
src/ao_gps_test
{
struct ccdbg *dbg;
- dbg = ccdbg_open();
+ dbg = ccdbg_open("BITBANG");
if (!dbg)
exit (1);
#include <signal.h>
#include <stdarg.h>
#include <poll.h>
+#include <getopt.h>
static int s51_port = 0;
static char *cpu = "8051";
struct ccdbg *s51_dbg;
int s51_interrupted = 0;
int s51_monitor = 0;
+char *s51_tty = NULL;
static FILE *s51_input;
static FILE *s51_output;
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)
{
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;
case 'm':
s51_monitor = 1;
break;
+ case 'T':
+ s51_tty = optarg;
+ break;
}
}
if (s51_port) {
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");
[\-H]
[\-h]
[\-m]
+[\-T \fItty-device\fP]
.SH DESCRIPTION
.I s51
connects to a cc1111 processor through a cp1203-based USB-to-serial
.IP "\-m"
This option is not present in the original 8051 emulator, and causes s51 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.
.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
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,
#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)
{
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);
#include <stdlib.h>
#include <limits.h>
#include <stdint.h>
+#include <unistd.h>
+#include <getopt.h>
#include "ccdbg.h"
#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;
memcpy(image->data + addr - image->address, data, len);
}
+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);
+}
+
int
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];
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);
usage(argv[0]);
strcpy(dot, ".map");
- serial_string = argv[2];
+ serial_string = argv[optind + 1];
if (serial_string == NULL)
usage(argv[0]);
serial = strtoul(serial_string, NULL, 0);
if (!serial)
- usage(argv[0]);
+(argv[0]);
serial_int[0] = serial & 0xff;
serial_int[1] = (serial >> 8) & 0xff;
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);
* 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)
{
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);
}
ccdbg_hex_file_free(hex);
- dbg = ccdbg_open();
+ dbg = ccdbg_open(tty);
if (!dbg)
exit (1);
#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;
}
/* ccdbg-io.c */
struct ccdbg *
-ccdbg_open(void);
+ccdbg_open(char *tty);
void
ccdbg_close(struct ccdbg *dbg);
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;
<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>
void
aoview_flite_stop(void);
+/* aoview_main.c */
+
+extern char *aoview_tty;
+
#endif /* _AOVIEW_H_ */
}
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;
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();