diff loadtools/bpmain.c @ 85:c5766d12360d

fc-buzplay started
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 27 Oct 2016 05:28:30 +0000
parents loadtools/ltmain.c@e7502631a0f9
children 96332d875fc9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/loadtools/bpmain.c	Thu Oct 27 05:28:30 2016 +0000
@@ -0,0 +1,93 @@
+/*
+ * This module contains the main() function for fc-buzplay
+ */
+
+#include <sys/types.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include "srecreader.h"
+
+extern char *target_ttydev;
+extern struct srecreader iramimage;
+extern char default_buzplayer_image[];
+extern void (*default_exit)();
+extern int gta_modem_poweron;
+
+extern struct baudrate *find_baudrate_by_name();
+
+static struct baudrate *reattach;
+
+main(argc, argv)
+	char **argv;
+{
+	extern char *optarg;
+	extern int optind;
+	int c;
+	char command[512];
+
+	while ((c = getopt(argc, argv, "a:b:c:C:h:H:i:nr:")) != EOF)
+		switch (c) {
+		case 'a':
+			iramimage.filename = optarg;
+			continue;
+		case 'b':
+			set_romload_baudrate(optarg);
+			continue;
+		case 'c':
+			set_compalstage_short(optarg);
+			continue;
+		case 'C':
+			set_compalstage_fullpath(optarg);
+			continue;
+		case 'h':
+			read_hwparam_file_shortname(optarg);
+			continue;
+		case 'H':
+			read_hwparam_file_fullpath(optarg);
+			continue;
+		case 'i':
+			set_beacon_interval(optarg);
+			continue;
+		case 'n':
+			gta_modem_poweron = 0;
+			continue;
+		case 'r':
+			reattach = find_baudrate_by_name(optarg);
+			if (!reattach)
+				exit(1);	/* error msg already printed */
+			continue;
+		case '?':
+		default:
+usage:			fprintf(stderr,
+				"usage: fc-buzplay [options] ttyport\n");
+			exit(1);
+		}
+	if (argc - optind != 1)
+		goto usage;
+	target_ttydev = argv[optind];
+	if (!iramimage.filename)
+		iramimage.filename = default_buzplayer_image;
+
+	open_target_serial();
+	if (reattach)
+		switch_baud_rate(reattach);
+	else {
+		perform_compal_stage(1);
+		perform_romload();
+		putchar('\n');
+		if (tpinterf_pass_output(1) < 0)
+			exit(1);
+		putchar('\n');
+	}
+	for (;;) {
+		if (isatty(0)) {
+			fputs("buzplay> ", stdout);
+			fflush(stdout);
+		}
+		if (!fgets(command, sizeof command, stdin))
+			default_exit();
+		buzplay_dispatch_cmd(command);
+	}
+}