view loadtools/ltmain.c @ 27:ae6294b8a015

loadtool: exit jump0 implemented
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Sat, 04 May 2013 06:22:09 +0000
parents aca1948e9713
children dacf45e3d20f
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 void (*default_exit)();

char loadtool_command[512];

main(argc, argv)
	char **argv;
{
	extern char *optarg;
	extern int optind;
	int c;

	while ((c = getopt(argc, argv, "a:h:H:i:")) != EOF)
		switch (c) {
		case 'a':
			iramimage.filename = 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 '?':
		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);
	for (;;) {
		if (isatty(0)) {
			fputs("loadtool> ", stdout);
			fflush(stdout);
		}
		if (!fgets(loadtool_command, sizeof loadtool_command, stdin))
			default_exit();
		loadtool_dispatch_cmd();
	}
}