view loadtools/ltmain.c @ 179:ebfa9657d03d

rvinterf: ignore SIGPIPE
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Sat, 23 Nov 2013 22:21:20 +0000
parents ccc5161848c7
children 5e0e9bb26060
line wrap: on
line source

/*
 * 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;

main(argc, argv)
	char **argv;
{
	extern char *optarg;
	extern int optind;
	int c;
	char command[512];

	while ((c = getopt(argc, argv, "a:b:h:H:i:n")) != EOF)
		switch (c) {
		case 'a':
			iramimage.filename = optarg;
			continue;
		case 'b':
			set_romload_baudrate(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 '?':
		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();
	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);
	}
}