diff loadtools/ltmain.c @ 0:e7502631a0f9

initial import from freecalypso-sw rev 1033:5ab737ac3ad7
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 11 Jun 2016 00:13:35 +0000
parents
children 6616f4e35579
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/loadtools/ltmain.c	Sat Jun 11 00:13:35 2016 +0000
@@ -0,0 +1,98 @@
+/*
+ * This module contains the main() function for fc-loadtool
+ */
+
+#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_loadagent_image[];
+extern char hw_init_script[];
+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-loadtool [options] ttyport\n");
+			exit(1);
+		}
+	if (argc - optind != 1)
+		goto usage;
+	target_ttydev = argv[optind];
+	if (!iramimage.filename)
+		iramimage.filename = default_loadagent_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');
+		if (hw_init_script[0]) {
+			printf("Executing init script %s\n", hw_init_script);
+			loadtool_exec_script(hw_init_script);
+		}
+	}
+	for (;;) {
+		if (isatty(0)) {
+			fputs("loadtool> ", stdout);
+			fflush(stdout);
+		}
+		if (!fgets(command, sizeof command, stdin))
+			default_exit();
+		loadtool_dispatch_cmd(command, 0);
+	}
+}