view loadtools/ltmain.c @ 29:dacf45e3d20f

loadtool: scripting functionality implemented
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Sat, 04 May 2013 07:15:51 +0000
parents ae6294b8a015
children 16315ed6401a
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)();

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

	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);
	putchar('\n');
	if (hw_init_script) {
		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);
	}
}